avx512bwintrin.h revision 1.1.1.2.4.2 1 1.1.1.2.4.2 martin /* Copyright (C) 2014-2017 Free Software Foundation, Inc.
2 1.1 mrg
3 1.1 mrg This file is part of GCC.
4 1.1 mrg
5 1.1 mrg GCC is free software; you can redistribute it and/or modify
6 1.1 mrg it under the terms of the GNU General Public License as published by
7 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
8 1.1 mrg any later version.
9 1.1 mrg
10 1.1 mrg GCC is distributed in the hope that it will be useful,
11 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of
12 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 1.1 mrg GNU General Public License for more details.
14 1.1 mrg
15 1.1 mrg Under Section 7 of GPL version 3, you are granted additional
16 1.1 mrg permissions described in the GCC Runtime Library Exception, version
17 1.1 mrg 3.1, as published by the Free Software Foundation.
18 1.1 mrg
19 1.1 mrg You should have received a copy of the GNU General Public License and
20 1.1 mrg a copy of the GCC Runtime Library Exception along with this program;
21 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 1.1 mrg <http://www.gnu.org/licenses/>. */
23 1.1 mrg
24 1.1 mrg #ifndef _IMMINTRIN_H_INCLUDED
25 1.1 mrg #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 1.1 mrg #endif
27 1.1 mrg
28 1.1 mrg #ifndef _AVX512BWINTRIN_H_INCLUDED
29 1.1 mrg #define _AVX512BWINTRIN_H_INCLUDED
30 1.1 mrg
31 1.1 mrg #ifndef __AVX512BW__
32 1.1 mrg #pragma GCC push_options
33 1.1 mrg #pragma GCC target("avx512bw")
34 1.1 mrg #define __DISABLE_AVX512BW__
35 1.1 mrg #endif /* __AVX512BW__ */
36 1.1 mrg
37 1.1 mrg /* Internal data types for implementing the intrinsics. */
38 1.1 mrg typedef short __v32hi __attribute__ ((__vector_size__ (64)));
39 1.1 mrg typedef char __v64qi __attribute__ ((__vector_size__ (64)));
40 1.1 mrg
41 1.1 mrg typedef unsigned long long __mmask64;
42 1.1 mrg
43 1.1.1.2.4.2 martin extern __inline unsigned char
44 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
45 1.1.1.2.4.2 martin _ktest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF)
46 1.1 mrg {
47 1.1.1.2.4.2 martin *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
48 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
49 1.1 mrg }
50 1.1 mrg
51 1.1.1.2.4.2 martin extern __inline unsigned char
52 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
53 1.1.1.2.4.2 martin _ktest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF)
54 1.1.1.2.4.2 martin {
55 1.1.1.2.4.2 martin *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
56 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
57 1.1.1.2.4.2 martin }
58 1.1.1.2.4.2 martin
59 1.1.1.2.4.2 martin extern __inline unsigned char
60 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
61 1.1.1.2.4.2 martin _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
62 1.1.1.2.4.2 martin {
63 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
64 1.1.1.2.4.2 martin }
65 1.1.1.2.4.2 martin
66 1.1.1.2.4.2 martin extern __inline unsigned char
67 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
68 1.1.1.2.4.2 martin _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
69 1.1.1.2.4.2 martin {
70 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
71 1.1.1.2.4.2 martin }
72 1.1.1.2.4.2 martin
73 1.1.1.2.4.2 martin extern __inline unsigned char
74 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
75 1.1.1.2.4.2 martin _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
76 1.1.1.2.4.2 martin {
77 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
78 1.1.1.2.4.2 martin }
79 1.1.1.2.4.2 martin
80 1.1.1.2.4.2 martin extern __inline unsigned char
81 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
82 1.1.1.2.4.2 martin _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
83 1.1.1.2.4.2 martin {
84 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
85 1.1.1.2.4.2 martin }
86 1.1.1.2.4.2 martin
87 1.1.1.2.4.2 martin extern __inline unsigned char
88 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
89 1.1.1.2.4.2 martin _kortest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF)
90 1.1.1.2.4.2 martin {
91 1.1.1.2.4.2 martin *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
92 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
93 1.1.1.2.4.2 martin }
94 1.1.1.2.4.2 martin
95 1.1.1.2.4.2 martin extern __inline unsigned char
96 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
97 1.1.1.2.4.2 martin _kortest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF)
98 1.1.1.2.4.2 martin {
99 1.1.1.2.4.2 martin *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
100 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
101 1.1.1.2.4.2 martin }
102 1.1.1.2.4.2 martin
103 1.1.1.2.4.2 martin extern __inline unsigned char
104 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
105 1.1.1.2.4.2 martin _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
106 1.1.1.2.4.2 martin {
107 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
108 1.1.1.2.4.2 martin }
109 1.1.1.2.4.2 martin
110 1.1.1.2.4.2 martin extern __inline unsigned char
111 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
112 1.1.1.2.4.2 martin _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
113 1.1.1.2.4.2 martin {
114 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
115 1.1.1.2.4.2 martin }
116 1.1.1.2.4.2 martin
117 1.1.1.2.4.2 martin extern __inline unsigned char
118 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
119 1.1.1.2.4.2 martin _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
120 1.1.1.2.4.2 martin {
121 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
122 1.1.1.2.4.2 martin }
123 1.1.1.2.4.2 martin
124 1.1.1.2.4.2 martin extern __inline unsigned char
125 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
126 1.1.1.2.4.2 martin _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
127 1.1.1.2.4.2 martin {
128 1.1.1.2.4.2 martin return (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
129 1.1.1.2.4.2 martin }
130 1.1.1.2.4.2 martin
131 1.1.1.2.4.2 martin extern __inline __mmask32
132 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
133 1.1.1.2.4.2 martin _kadd_mask32 (__mmask32 __A, __mmask32 __B)
134 1.1.1.2.4.2 martin {
135 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B);
136 1.1.1.2.4.2 martin }
137 1.1.1.2.4.2 martin
138 1.1.1.2.4.2 martin extern __inline __mmask64
139 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
140 1.1.1.2.4.2 martin _kadd_mask64 (__mmask64 __A, __mmask64 __B)
141 1.1.1.2.4.2 martin {
142 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B);
143 1.1.1.2.4.2 martin }
144 1.1.1.2.4.2 martin
145 1.1.1.2.4.2 martin extern __inline unsigned int
146 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
147 1.1.1.2.4.2 martin _cvtmask32_u32 (__mmask32 __A)
148 1.1.1.2.4.2 martin {
149 1.1.1.2.4.2 martin return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A);
150 1.1.1.2.4.2 martin }
151 1.1.1.2.4.2 martin
152 1.1.1.2.4.2 martin extern __inline unsigned long long
153 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
154 1.1.1.2.4.2 martin _cvtmask64_u64 (__mmask64 __A)
155 1.1.1.2.4.2 martin {
156 1.1.1.2.4.2 martin return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A);
157 1.1.1.2.4.2 martin }
158 1.1.1.2.4.2 martin
159 1.1.1.2.4.2 martin extern __inline __mmask32
160 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
161 1.1.1.2.4.2 martin _cvtu32_mask32 (unsigned int __A)
162 1.1.1.2.4.2 martin {
163 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A);
164 1.1.1.2.4.2 martin }
165 1.1.1.2.4.2 martin
166 1.1.1.2.4.2 martin extern __inline __mmask64
167 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
168 1.1.1.2.4.2 martin _cvtu64_mask64 (unsigned long long __A)
169 1.1.1.2.4.2 martin {
170 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A);
171 1.1.1.2.4.2 martin }
172 1.1.1.2.4.2 martin
173 1.1.1.2.4.2 martin extern __inline __mmask32
174 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
175 1.1.1.2.4.2 martin _load_mask32 (__mmask32 *__A)
176 1.1.1.2.4.2 martin {
177 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kmovd (*__A);
178 1.1.1.2.4.2 martin }
179 1.1.1.2.4.2 martin
180 1.1.1.2.4.2 martin extern __inline __mmask64
181 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
182 1.1.1.2.4.2 martin _load_mask64 (__mmask64 *__A)
183 1.1.1.2.4.2 martin {
184 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A);
185 1.1.1.2.4.2 martin }
186 1.1.1.2.4.2 martin
187 1.1.1.2.4.2 martin extern __inline void
188 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
189 1.1.1.2.4.2 martin _store_mask32 (__mmask32 *__A, __mmask32 __B)
190 1.1.1.2.4.2 martin {
191 1.1.1.2.4.2 martin *(__mmask32 *) __A = __builtin_ia32_kmovd (__B);
192 1.1.1.2.4.2 martin }
193 1.1.1.2.4.2 martin
194 1.1.1.2.4.2 martin extern __inline void
195 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
196 1.1.1.2.4.2 martin _store_mask64 (__mmask64 *__A, __mmask64 __B)
197 1.1.1.2.4.2 martin {
198 1.1.1.2.4.2 martin *(__mmask64 *) __A = __builtin_ia32_kmovq (__B);
199 1.1.1.2.4.2 martin }
200 1.1.1.2.4.2 martin
201 1.1.1.2.4.2 martin extern __inline __mmask32
202 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
203 1.1.1.2.4.2 martin _knot_mask32 (__mmask32 __A)
204 1.1.1.2.4.2 martin {
205 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A);
206 1.1.1.2.4.2 martin }
207 1.1.1.2.4.2 martin
208 1.1.1.2.4.2 martin extern __inline __mmask64
209 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
210 1.1.1.2.4.2 martin _knot_mask64 (__mmask64 __A)
211 1.1.1.2.4.2 martin {
212 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A);
213 1.1.1.2.4.2 martin }
214 1.1.1.2.4.2 martin
215 1.1.1.2.4.2 martin extern __inline __mmask32
216 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
217 1.1.1.2.4.2 martin _kor_mask32 (__mmask32 __A, __mmask32 __B)
218 1.1 mrg {
219 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B);
220 1.1.1.2.4.2 martin }
221 1.1.1.2.4.2 martin
222 1.1.1.2.4.2 martin extern __inline __mmask64
223 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
224 1.1.1.2.4.2 martin _kor_mask64 (__mmask64 __A, __mmask64 __B)
225 1.1.1.2.4.2 martin {
226 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B);
227 1.1.1.2.4.2 martin }
228 1.1.1.2.4.2 martin
229 1.1.1.2.4.2 martin extern __inline __mmask32
230 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
231 1.1.1.2.4.2 martin _kxnor_mask32 (__mmask32 __A, __mmask32 __B)
232 1.1.1.2.4.2 martin {
233 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B);
234 1.1.1.2.4.2 martin }
235 1.1.1.2.4.2 martin
236 1.1.1.2.4.2 martin extern __inline __mmask64
237 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
238 1.1.1.2.4.2 martin _kxnor_mask64 (__mmask64 __A, __mmask64 __B)
239 1.1.1.2.4.2 martin {
240 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B);
241 1.1.1.2.4.2 martin }
242 1.1.1.2.4.2 martin
243 1.1.1.2.4.2 martin extern __inline __mmask32
244 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
245 1.1.1.2.4.2 martin _kxor_mask32 (__mmask32 __A, __mmask32 __B)
246 1.1.1.2.4.2 martin {
247 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B);
248 1.1.1.2.4.2 martin }
249 1.1.1.2.4.2 martin
250 1.1.1.2.4.2 martin extern __inline __mmask64
251 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
252 1.1.1.2.4.2 martin _kxor_mask64 (__mmask64 __A, __mmask64 __B)
253 1.1.1.2.4.2 martin {
254 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B);
255 1.1.1.2.4.2 martin }
256 1.1.1.2.4.2 martin
257 1.1.1.2.4.2 martin extern __inline __mmask32
258 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
259 1.1.1.2.4.2 martin _kand_mask32 (__mmask32 __A, __mmask32 __B)
260 1.1.1.2.4.2 martin {
261 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B);
262 1.1.1.2.4.2 martin }
263 1.1.1.2.4.2 martin
264 1.1.1.2.4.2 martin extern __inline __mmask64
265 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
266 1.1.1.2.4.2 martin _kand_mask64 (__mmask64 __A, __mmask64 __B)
267 1.1.1.2.4.2 martin {
268 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B);
269 1.1.1.2.4.2 martin }
270 1.1.1.2.4.2 martin
271 1.1.1.2.4.2 martin extern __inline __mmask32
272 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
273 1.1.1.2.4.2 martin _kandn_mask32 (__mmask32 __A, __mmask32 __B)
274 1.1.1.2.4.2 martin {
275 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B);
276 1.1.1.2.4.2 martin }
277 1.1.1.2.4.2 martin
278 1.1.1.2.4.2 martin extern __inline __mmask64
279 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
280 1.1.1.2.4.2 martin _kandn_mask64 (__mmask64 __A, __mmask64 __B)
281 1.1.1.2.4.2 martin {
282 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B);
283 1.1 mrg }
284 1.1 mrg
285 1.1 mrg extern __inline __m512i
286 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
287 1.1 mrg _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
288 1.1 mrg {
289 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
290 1.1 mrg (__v32hi) __W,
291 1.1 mrg (__mmask32) __U);
292 1.1 mrg }
293 1.1 mrg
294 1.1 mrg extern __inline __m512i
295 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
296 1.1 mrg _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
297 1.1 mrg {
298 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
299 1.1 mrg (__v32hi)
300 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
301 1.1 mrg (__mmask32) __U);
302 1.1 mrg }
303 1.1 mrg
304 1.1 mrg extern __inline __m512i
305 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
306 1.1 mrg _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
307 1.1 mrg {
308 1.1.1.2.4.2 martin return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
309 1.1 mrg (__v32hi) __W,
310 1.1 mrg (__mmask32) __U);
311 1.1 mrg }
312 1.1 mrg
313 1.1 mrg extern __inline __m512i
314 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
315 1.1 mrg _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
316 1.1 mrg {
317 1.1.1.2.4.2 martin return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
318 1.1 mrg (__v32hi)
319 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
320 1.1 mrg (__mmask32) __U);
321 1.1 mrg }
322 1.1 mrg
323 1.1 mrg extern __inline void
324 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
325 1.1 mrg _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
326 1.1 mrg {
327 1.1.1.2.4.2 martin __builtin_ia32_storedquhi512_mask ((short *) __P,
328 1.1 mrg (__v32hi) __A,
329 1.1 mrg (__mmask32) __U);
330 1.1 mrg }
331 1.1 mrg
332 1.1 mrg extern __inline __m512i
333 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
334 1.1 mrg _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
335 1.1 mrg {
336 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
337 1.1 mrg (__v64qi) __W,
338 1.1 mrg (__mmask64) __U);
339 1.1 mrg }
340 1.1 mrg
341 1.1 mrg extern __inline __m512i
342 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
343 1.1 mrg _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
344 1.1 mrg {
345 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
346 1.1 mrg (__v64qi)
347 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
348 1.1 mrg (__mmask64) __U);
349 1.1 mrg }
350 1.1 mrg
351 1.1 mrg extern __inline __mmask32
352 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
353 1.1 mrg _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
354 1.1 mrg {
355 1.1 mrg return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
356 1.1 mrg (__mmask32) __B);
357 1.1 mrg }
358 1.1 mrg
359 1.1.1.2.4.2 martin extern __inline __mmask32
360 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
361 1.1.1.2.4.2 martin _kunpackw_mask32 (__mmask16 __A, __mmask16 __B)
362 1.1.1.2.4.2 martin {
363 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
364 1.1.1.2.4.2 martin (__mmask32) __B);
365 1.1.1.2.4.2 martin }
366 1.1.1.2.4.2 martin
367 1.1 mrg extern __inline __mmask64
368 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
369 1.1 mrg _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
370 1.1 mrg {
371 1.1 mrg return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
372 1.1 mrg (__mmask64) __B);
373 1.1 mrg }
374 1.1 mrg
375 1.1.1.2.4.2 martin extern __inline __mmask64
376 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
377 1.1.1.2.4.2 martin _kunpackd_mask64 (__mmask32 __A, __mmask32 __B)
378 1.1.1.2.4.2 martin {
379 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
380 1.1.1.2.4.2 martin (__mmask64) __B);
381 1.1.1.2.4.2 martin }
382 1.1.1.2.4.2 martin
383 1.1 mrg extern __inline __m512i
384 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
385 1.1 mrg _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
386 1.1 mrg {
387 1.1.1.2.4.2 martin return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
388 1.1 mrg (__v64qi) __W,
389 1.1 mrg (__mmask64) __U);
390 1.1 mrg }
391 1.1 mrg
392 1.1 mrg extern __inline __m512i
393 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
394 1.1 mrg _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
395 1.1 mrg {
396 1.1.1.2.4.2 martin return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
397 1.1 mrg (__v64qi)
398 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
399 1.1 mrg (__mmask64) __U);
400 1.1 mrg }
401 1.1 mrg
402 1.1 mrg extern __inline void
403 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
404 1.1 mrg _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
405 1.1 mrg {
406 1.1.1.2.4.2 martin __builtin_ia32_storedquqi512_mask ((char *) __P,
407 1.1 mrg (__v64qi) __A,
408 1.1 mrg (__mmask64) __U);
409 1.1 mrg }
410 1.1 mrg
411 1.1 mrg extern __inline __m512i
412 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
413 1.1 mrg _mm512_sad_epu8 (__m512i __A, __m512i __B)
414 1.1 mrg {
415 1.1 mrg return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
416 1.1 mrg (__v64qi) __B);
417 1.1 mrg }
418 1.1 mrg
419 1.1 mrg extern __inline __m256i
420 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
421 1.1 mrg _mm512_cvtepi16_epi8 (__m512i __A)
422 1.1 mrg {
423 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
424 1.1 mrg (__v32qi) _mm256_undefined_si256(),
425 1.1 mrg (__mmask32) -1);
426 1.1 mrg }
427 1.1 mrg
428 1.1 mrg extern __inline __m256i
429 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
430 1.1 mrg _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
431 1.1 mrg {
432 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
433 1.1 mrg (__v32qi) __O, __M);
434 1.1 mrg }
435 1.1 mrg
436 1.1 mrg extern __inline __m256i
437 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
438 1.1 mrg _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
439 1.1 mrg {
440 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
441 1.1 mrg (__v32qi)
442 1.1 mrg _mm256_setzero_si256 (),
443 1.1 mrg __M);
444 1.1 mrg }
445 1.1 mrg
446 1.1 mrg extern __inline __m256i
447 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
448 1.1 mrg _mm512_cvtsepi16_epi8 (__m512i __A)
449 1.1 mrg {
450 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
451 1.1 mrg (__v32qi)_mm256_undefined_si256(),
452 1.1 mrg (__mmask32) -1);
453 1.1 mrg }
454 1.1 mrg
455 1.1 mrg extern __inline __m256i
456 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
457 1.1 mrg _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
458 1.1 mrg {
459 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
460 1.1 mrg (__v32qi)__O,
461 1.1 mrg __M);
462 1.1 mrg }
463 1.1 mrg
464 1.1 mrg extern __inline __m256i
465 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
466 1.1 mrg _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
467 1.1 mrg {
468 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
469 1.1 mrg (__v32qi)
470 1.1 mrg _mm256_setzero_si256 (),
471 1.1 mrg __M);
472 1.1 mrg }
473 1.1 mrg
474 1.1 mrg extern __inline __m256i
475 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
476 1.1 mrg _mm512_cvtusepi16_epi8 (__m512i __A)
477 1.1 mrg {
478 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
479 1.1 mrg (__v32qi)_mm256_undefined_si256(),
480 1.1 mrg (__mmask32) -1);
481 1.1 mrg }
482 1.1 mrg
483 1.1 mrg extern __inline __m256i
484 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
485 1.1 mrg _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
486 1.1 mrg {
487 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
488 1.1 mrg (__v32qi) __O,
489 1.1 mrg __M);
490 1.1 mrg }
491 1.1 mrg
492 1.1 mrg extern __inline __m256i
493 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
494 1.1 mrg _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
495 1.1 mrg {
496 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
497 1.1 mrg (__v32qi)
498 1.1 mrg _mm256_setzero_si256 (),
499 1.1 mrg __M);
500 1.1 mrg }
501 1.1 mrg
502 1.1 mrg extern __inline __m512i
503 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
504 1.1 mrg _mm512_broadcastb_epi8 (__m128i __A)
505 1.1 mrg {
506 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
507 1.1.1.2 mrg (__v64qi)_mm512_undefined_epi32(),
508 1.1.1.2 mrg (__mmask64) -1);
509 1.1 mrg }
510 1.1 mrg
511 1.1 mrg extern __inline __m512i
512 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
513 1.1 mrg _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
514 1.1 mrg {
515 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
516 1.1 mrg (__v64qi) __O,
517 1.1 mrg __M);
518 1.1 mrg }
519 1.1 mrg
520 1.1 mrg extern __inline __m512i
521 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
522 1.1 mrg _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
523 1.1 mrg {
524 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
525 1.1 mrg (__v64qi)
526 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
527 1.1 mrg __M);
528 1.1 mrg }
529 1.1 mrg
530 1.1 mrg extern __inline __m512i
531 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
532 1.1 mrg _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
533 1.1 mrg {
534 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
535 1.1 mrg (__v64qi) __O,
536 1.1 mrg __M);
537 1.1 mrg }
538 1.1 mrg
539 1.1 mrg extern __inline __m512i
540 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
541 1.1 mrg _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
542 1.1 mrg {
543 1.1.1.2.4.2 martin return (__m512i)
544 1.1.1.2.4.2 martin __builtin_ia32_pbroadcastb512_gpr_mask (__A,
545 1.1.1.2.4.2 martin (__v64qi)
546 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
547 1.1.1.2.4.2 martin __M);
548 1.1 mrg }
549 1.1 mrg
550 1.1 mrg extern __inline __m512i
551 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
552 1.1 mrg _mm512_broadcastw_epi16 (__m128i __A)
553 1.1 mrg {
554 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
555 1.1.1.2 mrg (__v32hi)_mm512_undefined_epi32(),
556 1.1.1.2 mrg (__mmask32) -1);
557 1.1 mrg }
558 1.1 mrg
559 1.1 mrg extern __inline __m512i
560 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
561 1.1 mrg _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
562 1.1 mrg {
563 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
564 1.1 mrg (__v32hi) __O,
565 1.1 mrg __M);
566 1.1 mrg }
567 1.1 mrg
568 1.1 mrg extern __inline __m512i
569 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
570 1.1 mrg _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
571 1.1 mrg {
572 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
573 1.1 mrg (__v32hi)
574 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
575 1.1 mrg __M);
576 1.1 mrg }
577 1.1 mrg
578 1.1 mrg extern __inline __m512i
579 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
580 1.1 mrg _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
581 1.1 mrg {
582 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
583 1.1 mrg (__v32hi) __O,
584 1.1 mrg __M);
585 1.1 mrg }
586 1.1 mrg
587 1.1 mrg extern __inline __m512i
588 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
589 1.1 mrg _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
590 1.1 mrg {
591 1.1.1.2.4.2 martin return (__m512i)
592 1.1.1.2.4.2 martin __builtin_ia32_pbroadcastw512_gpr_mask (__A,
593 1.1.1.2.4.2 martin (__v32hi)
594 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
595 1.1.1.2.4.2 martin __M);
596 1.1 mrg }
597 1.1 mrg
598 1.1 mrg extern __inline __m512i
599 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
600 1.1 mrg _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
601 1.1 mrg {
602 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
603 1.1 mrg (__v32hi) __B,
604 1.1 mrg (__v32hi)
605 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
606 1.1 mrg (__mmask32) -1);
607 1.1 mrg }
608 1.1 mrg
609 1.1 mrg extern __inline __m512i
610 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
611 1.1 mrg _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
612 1.1 mrg __m512i __B)
613 1.1 mrg {
614 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
615 1.1 mrg (__v32hi) __B,
616 1.1 mrg (__v32hi) __W,
617 1.1 mrg (__mmask32) __U);
618 1.1 mrg }
619 1.1 mrg
620 1.1 mrg extern __inline __m512i
621 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
622 1.1 mrg _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
623 1.1 mrg {
624 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
625 1.1 mrg (__v32hi) __B,
626 1.1 mrg (__v32hi)
627 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
628 1.1 mrg (__mmask32) __U);
629 1.1 mrg }
630 1.1 mrg
631 1.1 mrg extern __inline __m512i
632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
633 1.1 mrg _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
634 1.1 mrg {
635 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
636 1.1 mrg (__v32hi) __B,
637 1.1 mrg (__v32hi)
638 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
639 1.1 mrg (__mmask32) -1);
640 1.1 mrg }
641 1.1 mrg
642 1.1 mrg extern __inline __m512i
643 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
644 1.1 mrg _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
645 1.1 mrg __m512i __B)
646 1.1 mrg {
647 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
648 1.1 mrg (__v32hi) __B,
649 1.1 mrg (__v32hi) __W,
650 1.1 mrg (__mmask32) __U);
651 1.1 mrg }
652 1.1 mrg
653 1.1 mrg extern __inline __m512i
654 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
655 1.1 mrg _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
656 1.1 mrg {
657 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
658 1.1 mrg (__v32hi) __B,
659 1.1 mrg (__v32hi)
660 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
661 1.1 mrg (__mmask32) __U);
662 1.1 mrg }
663 1.1 mrg
664 1.1 mrg extern __inline __m512i
665 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
666 1.1 mrg _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
667 1.1 mrg {
668 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
669 1.1 mrg (__v32hi) __B,
670 1.1 mrg (__v32hi)
671 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
672 1.1 mrg (__mmask32) -1);
673 1.1 mrg }
674 1.1 mrg
675 1.1 mrg extern __inline __m512i
676 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
677 1.1 mrg _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
678 1.1 mrg __m512i __B)
679 1.1 mrg {
680 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
681 1.1 mrg (__v32hi) __B,
682 1.1 mrg (__v32hi) __W,
683 1.1 mrg (__mmask32) __U);
684 1.1 mrg }
685 1.1 mrg
686 1.1 mrg extern __inline __m512i
687 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
688 1.1 mrg _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
689 1.1 mrg {
690 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
691 1.1 mrg (__v32hi) __B,
692 1.1 mrg (__v32hi)
693 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
694 1.1 mrg (__mmask32) __U);
695 1.1 mrg }
696 1.1 mrg
697 1.1 mrg extern __inline __m512i
698 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
699 1.1 mrg _mm512_mullo_epi16 (__m512i __A, __m512i __B)
700 1.1 mrg {
701 1.1 mrg return (__m512i) ((__v32hu) __A * (__v32hu) __B);
702 1.1 mrg }
703 1.1 mrg
704 1.1 mrg extern __inline __m512i
705 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
706 1.1 mrg _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
707 1.1 mrg __m512i __B)
708 1.1 mrg {
709 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
710 1.1 mrg (__v32hi) __B,
711 1.1 mrg (__v32hi) __W,
712 1.1 mrg (__mmask32) __U);
713 1.1 mrg }
714 1.1 mrg
715 1.1 mrg extern __inline __m512i
716 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
717 1.1 mrg _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
718 1.1 mrg {
719 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
720 1.1 mrg (__v32hi) __B,
721 1.1 mrg (__v32hi)
722 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
723 1.1 mrg (__mmask32) __U);
724 1.1 mrg }
725 1.1 mrg
726 1.1 mrg extern __inline __m512i
727 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
728 1.1 mrg _mm512_cvtepi8_epi16 (__m256i __A)
729 1.1 mrg {
730 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
731 1.1 mrg (__v32hi)
732 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
733 1.1 mrg (__mmask32) -1);
734 1.1 mrg }
735 1.1 mrg
736 1.1 mrg extern __inline __m512i
737 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
738 1.1 mrg _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
739 1.1 mrg {
740 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
741 1.1 mrg (__v32hi) __W,
742 1.1 mrg (__mmask32) __U);
743 1.1 mrg }
744 1.1 mrg
745 1.1 mrg extern __inline __m512i
746 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
747 1.1 mrg _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
748 1.1 mrg {
749 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
750 1.1 mrg (__v32hi)
751 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
752 1.1 mrg (__mmask32) __U);
753 1.1 mrg }
754 1.1 mrg
755 1.1 mrg extern __inline __m512i
756 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
757 1.1 mrg _mm512_cvtepu8_epi16 (__m256i __A)
758 1.1 mrg {
759 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
760 1.1 mrg (__v32hi)
761 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
762 1.1 mrg (__mmask32) -1);
763 1.1 mrg }
764 1.1 mrg
765 1.1 mrg extern __inline __m512i
766 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
767 1.1 mrg _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
768 1.1 mrg {
769 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
770 1.1 mrg (__v32hi) __W,
771 1.1 mrg (__mmask32) __U);
772 1.1 mrg }
773 1.1 mrg
774 1.1 mrg extern __inline __m512i
775 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
776 1.1 mrg _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
777 1.1 mrg {
778 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
779 1.1 mrg (__v32hi)
780 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
781 1.1 mrg (__mmask32) __U);
782 1.1 mrg }
783 1.1 mrg
784 1.1 mrg extern __inline __m512i
785 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
786 1.1 mrg _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
787 1.1 mrg {
788 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
789 1.1 mrg (__v32hi) __A,
790 1.1 mrg (__v32hi)
791 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
792 1.1 mrg (__mmask32) -1);
793 1.1 mrg }
794 1.1 mrg
795 1.1 mrg extern __inline __m512i
796 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
797 1.1 mrg _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
798 1.1 mrg __m512i __B)
799 1.1 mrg {
800 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
801 1.1 mrg (__v32hi) __A,
802 1.1 mrg (__v32hi)
803 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
804 1.1 mrg (__mmask32) __M);
805 1.1 mrg }
806 1.1 mrg
807 1.1 mrg extern __inline __m512i
808 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
809 1.1 mrg _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
810 1.1 mrg __m512i __B)
811 1.1 mrg {
812 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
813 1.1 mrg (__v32hi) __A,
814 1.1 mrg (__v32hi) __W,
815 1.1 mrg (__mmask32) __M);
816 1.1 mrg }
817 1.1 mrg
818 1.1 mrg extern __inline __m512i
819 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
820 1.1 mrg _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
821 1.1 mrg {
822 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
823 1.1 mrg /* idx */ ,
824 1.1 mrg (__v32hi) __A,
825 1.1 mrg (__v32hi) __B,
826 1.1.1.2 mrg (__mmask32) -1);
827 1.1 mrg }
828 1.1 mrg
829 1.1 mrg extern __inline __m512i
830 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
831 1.1 mrg _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
832 1.1 mrg __m512i __I, __m512i __B)
833 1.1 mrg {
834 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
835 1.1 mrg /* idx */ ,
836 1.1 mrg (__v32hi) __A,
837 1.1 mrg (__v32hi) __B,
838 1.1 mrg (__mmask32)
839 1.1 mrg __U);
840 1.1 mrg }
841 1.1 mrg
842 1.1 mrg extern __inline __m512i
843 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
844 1.1 mrg _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
845 1.1 mrg __mmask32 __U, __m512i __B)
846 1.1 mrg {
847 1.1 mrg return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
848 1.1 mrg (__v32hi) __I
849 1.1 mrg /* idx */ ,
850 1.1 mrg (__v32hi) __B,
851 1.1 mrg (__mmask32)
852 1.1 mrg __U);
853 1.1 mrg }
854 1.1 mrg
855 1.1 mrg extern __inline __m512i
856 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
857 1.1 mrg _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
858 1.1 mrg __m512i __I, __m512i __B)
859 1.1 mrg {
860 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
861 1.1 mrg /* idx */ ,
862 1.1 mrg (__v32hi) __A,
863 1.1 mrg (__v32hi) __B,
864 1.1 mrg (__mmask32)
865 1.1 mrg __U);
866 1.1 mrg }
867 1.1 mrg
868 1.1 mrg extern __inline __m512i
869 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
870 1.1 mrg _mm512_avg_epu8 (__m512i __A, __m512i __B)
871 1.1 mrg {
872 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
873 1.1 mrg (__v64qi) __B,
874 1.1 mrg (__v64qi)
875 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
876 1.1 mrg (__mmask64) -1);
877 1.1 mrg }
878 1.1 mrg
879 1.1 mrg extern __inline __m512i
880 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
881 1.1 mrg _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
882 1.1 mrg __m512i __B)
883 1.1 mrg {
884 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
885 1.1 mrg (__v64qi) __B,
886 1.1 mrg (__v64qi) __W,
887 1.1 mrg (__mmask64) __U);
888 1.1 mrg }
889 1.1 mrg
890 1.1 mrg extern __inline __m512i
891 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
892 1.1 mrg _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
893 1.1 mrg {
894 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
895 1.1 mrg (__v64qi) __B,
896 1.1 mrg (__v64qi)
897 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
898 1.1 mrg (__mmask64) __U);
899 1.1 mrg }
900 1.1 mrg
901 1.1 mrg extern __inline __m512i
902 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
903 1.1 mrg _mm512_add_epi8 (__m512i __A, __m512i __B)
904 1.1 mrg {
905 1.1 mrg return (__m512i) ((__v64qu) __A + (__v64qu) __B);
906 1.1 mrg }
907 1.1 mrg
908 1.1 mrg extern __inline __m512i
909 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
910 1.1 mrg _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
911 1.1 mrg __m512i __B)
912 1.1 mrg {
913 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
914 1.1 mrg (__v64qi) __B,
915 1.1 mrg (__v64qi) __W,
916 1.1 mrg (__mmask64) __U);
917 1.1 mrg }
918 1.1 mrg
919 1.1 mrg extern __inline __m512i
920 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
921 1.1 mrg _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
922 1.1 mrg {
923 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
924 1.1 mrg (__v64qi) __B,
925 1.1 mrg (__v64qi)
926 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
927 1.1 mrg (__mmask64) __U);
928 1.1 mrg }
929 1.1 mrg
930 1.1 mrg extern __inline __m512i
931 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
932 1.1 mrg _mm512_sub_epi8 (__m512i __A, __m512i __B)
933 1.1 mrg {
934 1.1 mrg return (__m512i) ((__v64qu) __A - (__v64qu) __B);
935 1.1 mrg }
936 1.1 mrg
937 1.1 mrg extern __inline __m512i
938 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
939 1.1 mrg _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
940 1.1 mrg __m512i __B)
941 1.1 mrg {
942 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
943 1.1 mrg (__v64qi) __B,
944 1.1 mrg (__v64qi) __W,
945 1.1 mrg (__mmask64) __U);
946 1.1 mrg }
947 1.1 mrg
948 1.1 mrg extern __inline __m512i
949 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
950 1.1 mrg _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
951 1.1 mrg {
952 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
953 1.1 mrg (__v64qi) __B,
954 1.1 mrg (__v64qi)
955 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
956 1.1 mrg (__mmask64) __U);
957 1.1 mrg }
958 1.1 mrg
959 1.1 mrg extern __inline __m512i
960 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
961 1.1 mrg _mm512_avg_epu16 (__m512i __A, __m512i __B)
962 1.1 mrg {
963 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
964 1.1 mrg (__v32hi) __B,
965 1.1 mrg (__v32hi)
966 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
967 1.1 mrg (__mmask32) -1);
968 1.1 mrg }
969 1.1 mrg
970 1.1 mrg extern __inline __m512i
971 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
972 1.1 mrg _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
973 1.1 mrg __m512i __B)
974 1.1 mrg {
975 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
976 1.1 mrg (__v32hi) __B,
977 1.1 mrg (__v32hi) __W,
978 1.1 mrg (__mmask32) __U);
979 1.1 mrg }
980 1.1 mrg
981 1.1 mrg extern __inline __m512i
982 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
983 1.1 mrg _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
984 1.1 mrg {
985 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
986 1.1 mrg (__v32hi) __B,
987 1.1 mrg (__v32hi)
988 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
989 1.1 mrg (__mmask32) __U);
990 1.1 mrg }
991 1.1 mrg
992 1.1 mrg extern __inline __m512i
993 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
994 1.1 mrg _mm512_subs_epi8 (__m512i __A, __m512i __B)
995 1.1 mrg {
996 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
997 1.1 mrg (__v64qi) __B,
998 1.1 mrg (__v64qi)
999 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1000 1.1 mrg (__mmask64) -1);
1001 1.1 mrg }
1002 1.1 mrg
1003 1.1 mrg extern __inline __m512i
1004 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1005 1.1 mrg _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1006 1.1 mrg __m512i __B)
1007 1.1 mrg {
1008 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1009 1.1 mrg (__v64qi) __B,
1010 1.1 mrg (__v64qi) __W,
1011 1.1 mrg (__mmask64) __U);
1012 1.1 mrg }
1013 1.1 mrg
1014 1.1 mrg extern __inline __m512i
1015 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1016 1.1 mrg _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1017 1.1 mrg {
1018 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1019 1.1 mrg (__v64qi) __B,
1020 1.1 mrg (__v64qi)
1021 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1022 1.1 mrg (__mmask64) __U);
1023 1.1 mrg }
1024 1.1 mrg
1025 1.1 mrg extern __inline __m512i
1026 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1027 1.1 mrg _mm512_subs_epu8 (__m512i __A, __m512i __B)
1028 1.1 mrg {
1029 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1030 1.1 mrg (__v64qi) __B,
1031 1.1 mrg (__v64qi)
1032 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1033 1.1 mrg (__mmask64) -1);
1034 1.1 mrg }
1035 1.1 mrg
1036 1.1 mrg extern __inline __m512i
1037 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1038 1.1 mrg _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1039 1.1 mrg __m512i __B)
1040 1.1 mrg {
1041 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1042 1.1 mrg (__v64qi) __B,
1043 1.1 mrg (__v64qi) __W,
1044 1.1 mrg (__mmask64) __U);
1045 1.1 mrg }
1046 1.1 mrg
1047 1.1 mrg extern __inline __m512i
1048 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1049 1.1 mrg _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1050 1.1 mrg {
1051 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1052 1.1 mrg (__v64qi) __B,
1053 1.1 mrg (__v64qi)
1054 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1055 1.1 mrg (__mmask64) __U);
1056 1.1 mrg }
1057 1.1 mrg
1058 1.1 mrg extern __inline __m512i
1059 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1060 1.1 mrg _mm512_adds_epi8 (__m512i __A, __m512i __B)
1061 1.1 mrg {
1062 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1063 1.1 mrg (__v64qi) __B,
1064 1.1 mrg (__v64qi)
1065 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1066 1.1 mrg (__mmask64) -1);
1067 1.1 mrg }
1068 1.1 mrg
1069 1.1 mrg extern __inline __m512i
1070 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1071 1.1 mrg _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1072 1.1 mrg __m512i __B)
1073 1.1 mrg {
1074 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1075 1.1 mrg (__v64qi) __B,
1076 1.1 mrg (__v64qi) __W,
1077 1.1 mrg (__mmask64) __U);
1078 1.1 mrg }
1079 1.1 mrg
1080 1.1 mrg extern __inline __m512i
1081 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1082 1.1 mrg _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1083 1.1 mrg {
1084 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1085 1.1 mrg (__v64qi) __B,
1086 1.1 mrg (__v64qi)
1087 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1088 1.1 mrg (__mmask64) __U);
1089 1.1 mrg }
1090 1.1 mrg
1091 1.1 mrg extern __inline __m512i
1092 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1093 1.1 mrg _mm512_adds_epu8 (__m512i __A, __m512i __B)
1094 1.1 mrg {
1095 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1096 1.1 mrg (__v64qi) __B,
1097 1.1 mrg (__v64qi)
1098 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1099 1.1 mrg (__mmask64) -1);
1100 1.1 mrg }
1101 1.1 mrg
1102 1.1 mrg extern __inline __m512i
1103 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1104 1.1 mrg _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1105 1.1 mrg __m512i __B)
1106 1.1 mrg {
1107 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1108 1.1 mrg (__v64qi) __B,
1109 1.1 mrg (__v64qi) __W,
1110 1.1 mrg (__mmask64) __U);
1111 1.1 mrg }
1112 1.1 mrg
1113 1.1 mrg extern __inline __m512i
1114 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1115 1.1 mrg _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1116 1.1 mrg {
1117 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1118 1.1 mrg (__v64qi) __B,
1119 1.1 mrg (__v64qi)
1120 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1121 1.1 mrg (__mmask64) __U);
1122 1.1 mrg }
1123 1.1 mrg
1124 1.1 mrg extern __inline __m512i
1125 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1126 1.1 mrg _mm512_sub_epi16 (__m512i __A, __m512i __B)
1127 1.1 mrg {
1128 1.1 mrg return (__m512i) ((__v32hu) __A - (__v32hu) __B);
1129 1.1 mrg }
1130 1.1 mrg
1131 1.1 mrg extern __inline __m512i
1132 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1133 1.1 mrg _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1134 1.1 mrg __m512i __B)
1135 1.1 mrg {
1136 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
1137 1.1 mrg (__v32hi) __B,
1138 1.1 mrg (__v32hi) __W,
1139 1.1 mrg (__mmask32) __U);
1140 1.1 mrg }
1141 1.1 mrg
1142 1.1 mrg extern __inline __m512i
1143 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1144 1.1 mrg _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1145 1.1 mrg {
1146 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
1147 1.1 mrg (__v32hi) __B,
1148 1.1 mrg (__v32hi)
1149 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1150 1.1 mrg (__mmask32) __U);
1151 1.1 mrg }
1152 1.1 mrg
1153 1.1 mrg extern __inline __m512i
1154 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1155 1.1 mrg _mm512_subs_epi16 (__m512i __A, __m512i __B)
1156 1.1 mrg {
1157 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1158 1.1 mrg (__v32hi) __B,
1159 1.1 mrg (__v32hi)
1160 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1161 1.1 mrg (__mmask32) -1);
1162 1.1 mrg }
1163 1.1 mrg
1164 1.1 mrg extern __inline __m512i
1165 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1166 1.1 mrg _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1167 1.1 mrg __m512i __B)
1168 1.1 mrg {
1169 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1170 1.1 mrg (__v32hi) __B,
1171 1.1 mrg (__v32hi) __W,
1172 1.1 mrg (__mmask32) __U);
1173 1.1 mrg }
1174 1.1 mrg
1175 1.1 mrg extern __inline __m512i
1176 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1177 1.1 mrg _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1178 1.1 mrg {
1179 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1180 1.1 mrg (__v32hi) __B,
1181 1.1 mrg (__v32hi)
1182 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1183 1.1 mrg (__mmask32) __U);
1184 1.1 mrg }
1185 1.1 mrg
1186 1.1 mrg extern __inline __m512i
1187 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1188 1.1 mrg _mm512_subs_epu16 (__m512i __A, __m512i __B)
1189 1.1 mrg {
1190 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1191 1.1 mrg (__v32hi) __B,
1192 1.1 mrg (__v32hi)
1193 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1194 1.1 mrg (__mmask32) -1);
1195 1.1 mrg }
1196 1.1 mrg
1197 1.1 mrg extern __inline __m512i
1198 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1199 1.1 mrg _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1200 1.1 mrg __m512i __B)
1201 1.1 mrg {
1202 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1203 1.1 mrg (__v32hi) __B,
1204 1.1 mrg (__v32hi) __W,
1205 1.1 mrg (__mmask32) __U);
1206 1.1 mrg }
1207 1.1 mrg
1208 1.1 mrg extern __inline __m512i
1209 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1210 1.1 mrg _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1211 1.1 mrg {
1212 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1213 1.1 mrg (__v32hi) __B,
1214 1.1 mrg (__v32hi)
1215 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1216 1.1 mrg (__mmask32) __U);
1217 1.1 mrg }
1218 1.1 mrg
1219 1.1 mrg extern __inline __m512i
1220 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1221 1.1 mrg _mm512_add_epi16 (__m512i __A, __m512i __B)
1222 1.1 mrg {
1223 1.1 mrg return (__m512i) ((__v32hu) __A + (__v32hu) __B);
1224 1.1 mrg }
1225 1.1 mrg
1226 1.1 mrg extern __inline __m512i
1227 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1228 1.1 mrg _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1229 1.1 mrg __m512i __B)
1230 1.1 mrg {
1231 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1232 1.1 mrg (__v32hi) __B,
1233 1.1 mrg (__v32hi) __W,
1234 1.1 mrg (__mmask32) __U);
1235 1.1 mrg }
1236 1.1 mrg
1237 1.1 mrg extern __inline __m512i
1238 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1239 1.1 mrg _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1240 1.1 mrg {
1241 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1242 1.1 mrg (__v32hi) __B,
1243 1.1 mrg (__v32hi)
1244 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1245 1.1 mrg (__mmask32) __U);
1246 1.1 mrg }
1247 1.1 mrg
1248 1.1 mrg extern __inline __m512i
1249 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1250 1.1 mrg _mm512_adds_epi16 (__m512i __A, __m512i __B)
1251 1.1 mrg {
1252 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1253 1.1 mrg (__v32hi) __B,
1254 1.1 mrg (__v32hi)
1255 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1256 1.1 mrg (__mmask32) -1);
1257 1.1 mrg }
1258 1.1 mrg
1259 1.1 mrg extern __inline __m512i
1260 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1261 1.1 mrg _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1262 1.1 mrg __m512i __B)
1263 1.1 mrg {
1264 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1265 1.1 mrg (__v32hi) __B,
1266 1.1 mrg (__v32hi) __W,
1267 1.1 mrg (__mmask32) __U);
1268 1.1 mrg }
1269 1.1 mrg
1270 1.1 mrg extern __inline __m512i
1271 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1272 1.1 mrg _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1273 1.1 mrg {
1274 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1275 1.1 mrg (__v32hi) __B,
1276 1.1 mrg (__v32hi)
1277 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1278 1.1 mrg (__mmask32) __U);
1279 1.1 mrg }
1280 1.1 mrg
1281 1.1 mrg extern __inline __m512i
1282 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1283 1.1 mrg _mm512_adds_epu16 (__m512i __A, __m512i __B)
1284 1.1 mrg {
1285 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1286 1.1 mrg (__v32hi) __B,
1287 1.1 mrg (__v32hi)
1288 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1289 1.1 mrg (__mmask32) -1);
1290 1.1 mrg }
1291 1.1 mrg
1292 1.1 mrg extern __inline __m512i
1293 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1294 1.1 mrg _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1295 1.1 mrg __m512i __B)
1296 1.1 mrg {
1297 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1298 1.1 mrg (__v32hi) __B,
1299 1.1 mrg (__v32hi) __W,
1300 1.1 mrg (__mmask32) __U);
1301 1.1 mrg }
1302 1.1 mrg
1303 1.1 mrg extern __inline __m512i
1304 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1305 1.1 mrg _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1306 1.1 mrg {
1307 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1308 1.1 mrg (__v32hi) __B,
1309 1.1 mrg (__v32hi)
1310 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1311 1.1 mrg (__mmask32) __U);
1312 1.1 mrg }
1313 1.1 mrg
1314 1.1 mrg extern __inline __m512i
1315 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1316 1.1 mrg _mm512_srl_epi16 (__m512i __A, __m128i __B)
1317 1.1 mrg {
1318 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1319 1.1 mrg (__v8hi) __B,
1320 1.1 mrg (__v32hi)
1321 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1322 1.1 mrg (__mmask32) -1);
1323 1.1 mrg }
1324 1.1 mrg
1325 1.1 mrg extern __inline __m512i
1326 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1327 1.1 mrg _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1328 1.1 mrg __m128i __B)
1329 1.1 mrg {
1330 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1331 1.1 mrg (__v8hi) __B,
1332 1.1 mrg (__v32hi) __W,
1333 1.1 mrg (__mmask32) __U);
1334 1.1 mrg }
1335 1.1 mrg
1336 1.1 mrg extern __inline __m512i
1337 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1338 1.1 mrg _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1339 1.1 mrg {
1340 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1341 1.1 mrg (__v8hi) __B,
1342 1.1 mrg (__v32hi)
1343 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1344 1.1 mrg (__mmask32) __U);
1345 1.1 mrg }
1346 1.1 mrg
1347 1.1 mrg extern __inline __m512i
1348 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1349 1.1 mrg _mm512_packs_epi16 (__m512i __A, __m512i __B)
1350 1.1 mrg {
1351 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1352 1.1 mrg (__v32hi) __B,
1353 1.1 mrg (__v64qi)
1354 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1355 1.1 mrg (__mmask64) -1);
1356 1.1 mrg }
1357 1.1 mrg
1358 1.1 mrg extern __inline __m512i
1359 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1360 1.1 mrg _mm512_sll_epi16 (__m512i __A, __m128i __B)
1361 1.1 mrg {
1362 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1363 1.1 mrg (__v8hi) __B,
1364 1.1 mrg (__v32hi)
1365 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1366 1.1 mrg (__mmask32) -1);
1367 1.1 mrg }
1368 1.1 mrg
1369 1.1 mrg extern __inline __m512i
1370 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1371 1.1 mrg _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1372 1.1 mrg __m128i __B)
1373 1.1 mrg {
1374 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1375 1.1 mrg (__v8hi) __B,
1376 1.1 mrg (__v32hi) __W,
1377 1.1 mrg (__mmask32) __U);
1378 1.1 mrg }
1379 1.1 mrg
1380 1.1 mrg extern __inline __m512i
1381 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1382 1.1 mrg _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1383 1.1 mrg {
1384 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1385 1.1 mrg (__v8hi) __B,
1386 1.1 mrg (__v32hi)
1387 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1388 1.1 mrg (__mmask32) __U);
1389 1.1 mrg }
1390 1.1 mrg
1391 1.1 mrg extern __inline __m512i
1392 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1393 1.1 mrg _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
1394 1.1 mrg {
1395 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1396 1.1 mrg (__v64qi) __Y,
1397 1.1 mrg (__v32hi)
1398 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1399 1.1 mrg (__mmask32) -1);
1400 1.1 mrg }
1401 1.1 mrg
1402 1.1 mrg extern __inline __m512i
1403 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1404 1.1 mrg _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1405 1.1 mrg __m512i __Y)
1406 1.1 mrg {
1407 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1408 1.1 mrg (__v64qi) __Y,
1409 1.1 mrg (__v32hi) __W,
1410 1.1 mrg (__mmask32) __U);
1411 1.1 mrg }
1412 1.1 mrg
1413 1.1 mrg extern __inline __m512i
1414 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1415 1.1 mrg _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
1416 1.1 mrg {
1417 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1418 1.1 mrg (__v64qi) __Y,
1419 1.1 mrg (__v32hi)
1420 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1421 1.1 mrg (__mmask32) __U);
1422 1.1 mrg }
1423 1.1 mrg
1424 1.1 mrg extern __inline __m512i
1425 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1426 1.1 mrg _mm512_madd_epi16 (__m512i __A, __m512i __B)
1427 1.1 mrg {
1428 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1429 1.1 mrg (__v32hi) __B,
1430 1.1 mrg (__v16si)
1431 1.1 mrg _mm512_setzero_si512 (),
1432 1.1 mrg (__mmask16) -1);
1433 1.1 mrg }
1434 1.1 mrg
1435 1.1 mrg extern __inline __m512i
1436 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1437 1.1 mrg _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1438 1.1 mrg __m512i __B)
1439 1.1 mrg {
1440 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1441 1.1 mrg (__v32hi) __B,
1442 1.1 mrg (__v16si) __W,
1443 1.1 mrg (__mmask16) __U);
1444 1.1 mrg }
1445 1.1 mrg
1446 1.1 mrg extern __inline __m512i
1447 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1448 1.1 mrg _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
1449 1.1 mrg {
1450 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1451 1.1 mrg (__v32hi) __B,
1452 1.1 mrg (__v16si)
1453 1.1 mrg _mm512_setzero_si512 (),
1454 1.1 mrg (__mmask16) __U);
1455 1.1 mrg }
1456 1.1 mrg
1457 1.1 mrg extern __inline __m512i
1458 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1459 1.1 mrg _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
1460 1.1 mrg {
1461 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1462 1.1 mrg (__v64qi) __B,
1463 1.1 mrg (__v64qi)
1464 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1465 1.1 mrg (__mmask64) -1);
1466 1.1 mrg }
1467 1.1 mrg
1468 1.1 mrg extern __inline __m512i
1469 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1470 1.1 mrg _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1471 1.1 mrg __m512i __B)
1472 1.1 mrg {
1473 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1474 1.1 mrg (__v64qi) __B,
1475 1.1 mrg (__v64qi) __W,
1476 1.1 mrg (__mmask64) __U);
1477 1.1 mrg }
1478 1.1 mrg
1479 1.1 mrg extern __inline __m512i
1480 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1481 1.1 mrg _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1482 1.1 mrg {
1483 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1484 1.1 mrg (__v64qi) __B,
1485 1.1 mrg (__v64qi)
1486 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1487 1.1 mrg (__mmask64) __U);
1488 1.1 mrg }
1489 1.1 mrg
1490 1.1 mrg extern __inline __m512i
1491 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1492 1.1 mrg _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
1493 1.1 mrg {
1494 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1495 1.1 mrg (__v32hi) __B,
1496 1.1 mrg (__v32hi)
1497 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1498 1.1 mrg (__mmask32) -1);
1499 1.1 mrg }
1500 1.1 mrg
1501 1.1 mrg extern __inline __m512i
1502 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1503 1.1 mrg _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1504 1.1 mrg __m512i __B)
1505 1.1 mrg {
1506 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1507 1.1 mrg (__v32hi) __B,
1508 1.1 mrg (__v32hi) __W,
1509 1.1 mrg (__mmask32) __U);
1510 1.1 mrg }
1511 1.1 mrg
1512 1.1 mrg extern __inline __m512i
1513 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1514 1.1 mrg _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1515 1.1 mrg {
1516 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1517 1.1 mrg (__v32hi) __B,
1518 1.1 mrg (__v32hi)
1519 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1520 1.1 mrg (__mmask32) __U);
1521 1.1 mrg }
1522 1.1 mrg
1523 1.1 mrg extern __inline __m512i
1524 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1525 1.1 mrg _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
1526 1.1 mrg {
1527 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1528 1.1 mrg (__v64qi) __B,
1529 1.1 mrg (__v64qi)
1530 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1531 1.1 mrg (__mmask64) -1);
1532 1.1 mrg }
1533 1.1 mrg
1534 1.1 mrg extern __inline __m512i
1535 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1536 1.1 mrg _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1537 1.1 mrg __m512i __B)
1538 1.1 mrg {
1539 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1540 1.1 mrg (__v64qi) __B,
1541 1.1 mrg (__v64qi) __W,
1542 1.1 mrg (__mmask64) __U);
1543 1.1 mrg }
1544 1.1 mrg
1545 1.1 mrg extern __inline __m512i
1546 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1547 1.1 mrg _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1548 1.1 mrg {
1549 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1550 1.1 mrg (__v64qi) __B,
1551 1.1 mrg (__v64qi)
1552 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1553 1.1 mrg (__mmask64) __U);
1554 1.1 mrg }
1555 1.1 mrg
1556 1.1 mrg extern __inline __m512i
1557 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1558 1.1 mrg _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
1559 1.1 mrg {
1560 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1561 1.1 mrg (__v32hi) __B,
1562 1.1 mrg (__v32hi)
1563 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1564 1.1 mrg (__mmask32) -1);
1565 1.1 mrg }
1566 1.1 mrg
1567 1.1 mrg extern __inline __m512i
1568 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1569 1.1 mrg _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1570 1.1 mrg __m512i __B)
1571 1.1 mrg {
1572 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1573 1.1 mrg (__v32hi) __B,
1574 1.1 mrg (__v32hi) __W,
1575 1.1 mrg (__mmask32) __U);
1576 1.1 mrg }
1577 1.1 mrg
1578 1.1 mrg extern __inline __m512i
1579 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1580 1.1 mrg _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1581 1.1 mrg {
1582 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1583 1.1 mrg (__v32hi) __B,
1584 1.1 mrg (__v32hi)
1585 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1586 1.1 mrg (__mmask32) __U);
1587 1.1 mrg }
1588 1.1 mrg
1589 1.1 mrg extern __inline __mmask64
1590 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1591 1.1 mrg _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
1592 1.1 mrg {
1593 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1594 1.1 mrg (__v64qi) __B, 0,
1595 1.1 mrg (__mmask64) -1);
1596 1.1 mrg }
1597 1.1 mrg
1598 1.1 mrg extern __inline __mmask64
1599 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1600 1.1 mrg _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
1601 1.1 mrg {
1602 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1603 1.1 mrg (__v64qi) __B,
1604 1.1 mrg (__mmask64) -1);
1605 1.1 mrg }
1606 1.1 mrg
1607 1.1 mrg extern __inline __mmask64
1608 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1609 1.1 mrg _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1610 1.1 mrg {
1611 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1612 1.1 mrg (__v64qi) __B, 0,
1613 1.1 mrg __U);
1614 1.1 mrg }
1615 1.1 mrg
1616 1.1 mrg extern __inline __mmask64
1617 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1618 1.1 mrg _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1619 1.1 mrg {
1620 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1621 1.1 mrg (__v64qi) __B,
1622 1.1 mrg __U);
1623 1.1 mrg }
1624 1.1 mrg
1625 1.1 mrg extern __inline __mmask32
1626 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1627 1.1 mrg _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
1628 1.1 mrg {
1629 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1630 1.1 mrg (__v32hi) __B, 0,
1631 1.1 mrg (__mmask32) -1);
1632 1.1 mrg }
1633 1.1 mrg
1634 1.1 mrg extern __inline __mmask32
1635 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1636 1.1 mrg _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
1637 1.1 mrg {
1638 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1639 1.1 mrg (__v32hi) __B,
1640 1.1 mrg (__mmask32) -1);
1641 1.1 mrg }
1642 1.1 mrg
1643 1.1 mrg extern __inline __mmask32
1644 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1645 1.1 mrg _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1646 1.1 mrg {
1647 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1648 1.1 mrg (__v32hi) __B, 0,
1649 1.1 mrg __U);
1650 1.1 mrg }
1651 1.1 mrg
1652 1.1 mrg extern __inline __mmask32
1653 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1654 1.1 mrg _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1655 1.1 mrg {
1656 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1657 1.1 mrg (__v32hi) __B,
1658 1.1 mrg __U);
1659 1.1 mrg }
1660 1.1 mrg
1661 1.1 mrg extern __inline __mmask64
1662 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1663 1.1 mrg _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
1664 1.1 mrg {
1665 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1666 1.1 mrg (__v64qi) __B, 6,
1667 1.1 mrg (__mmask64) -1);
1668 1.1 mrg }
1669 1.1 mrg
1670 1.1 mrg extern __inline __mmask64
1671 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1672 1.1 mrg _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
1673 1.1 mrg {
1674 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1675 1.1 mrg (__v64qi) __B,
1676 1.1 mrg (__mmask64) -1);
1677 1.1 mrg }
1678 1.1 mrg
1679 1.1 mrg extern __inline __mmask64
1680 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1681 1.1 mrg _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1682 1.1 mrg {
1683 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1684 1.1 mrg (__v64qi) __B, 6,
1685 1.1 mrg __U);
1686 1.1 mrg }
1687 1.1 mrg
1688 1.1 mrg extern __inline __mmask64
1689 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1690 1.1 mrg _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1691 1.1 mrg {
1692 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1693 1.1 mrg (__v64qi) __B,
1694 1.1 mrg __U);
1695 1.1 mrg }
1696 1.1 mrg
1697 1.1 mrg extern __inline __mmask32
1698 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1699 1.1 mrg _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
1700 1.1 mrg {
1701 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1702 1.1 mrg (__v32hi) __B, 6,
1703 1.1 mrg (__mmask32) -1);
1704 1.1 mrg }
1705 1.1 mrg
1706 1.1 mrg extern __inline __mmask32
1707 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1708 1.1 mrg _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
1709 1.1 mrg {
1710 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1711 1.1 mrg (__v32hi) __B,
1712 1.1 mrg (__mmask32) -1);
1713 1.1 mrg }
1714 1.1 mrg
1715 1.1 mrg extern __inline __mmask32
1716 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1717 1.1 mrg _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1718 1.1 mrg {
1719 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1720 1.1 mrg (__v32hi) __B, 6,
1721 1.1 mrg __U);
1722 1.1 mrg }
1723 1.1 mrg
1724 1.1 mrg extern __inline __mmask32
1725 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1726 1.1 mrg _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1727 1.1 mrg {
1728 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1729 1.1 mrg (__v32hi) __B,
1730 1.1 mrg __U);
1731 1.1 mrg }
1732 1.1 mrg
1733 1.1 mrg extern __inline __mmask64
1734 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1735 1.1 mrg _mm512_movepi8_mask (__m512i __A)
1736 1.1 mrg {
1737 1.1 mrg return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1738 1.1 mrg }
1739 1.1 mrg
1740 1.1 mrg extern __inline __mmask32
1741 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1742 1.1 mrg _mm512_movepi16_mask (__m512i __A)
1743 1.1 mrg {
1744 1.1 mrg return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1745 1.1 mrg }
1746 1.1 mrg
1747 1.1 mrg extern __inline __m512i
1748 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1749 1.1 mrg _mm512_movm_epi8 (__mmask64 __A)
1750 1.1 mrg {
1751 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1752 1.1 mrg }
1753 1.1 mrg
1754 1.1 mrg extern __inline __m512i
1755 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1756 1.1 mrg _mm512_movm_epi16 (__mmask32 __A)
1757 1.1 mrg {
1758 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1759 1.1 mrg }
1760 1.1 mrg
1761 1.1 mrg extern __inline __mmask64
1762 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1763 1.1 mrg _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1764 1.1 mrg {
1765 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1766 1.1 mrg (__v64qi) __B,
1767 1.1 mrg (__mmask64) -1);
1768 1.1 mrg }
1769 1.1 mrg
1770 1.1 mrg extern __inline __mmask64
1771 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1772 1.1 mrg _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1773 1.1 mrg {
1774 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1775 1.1 mrg (__v64qi) __B, __U);
1776 1.1 mrg }
1777 1.1 mrg
1778 1.1 mrg extern __inline __mmask32
1779 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1780 1.1 mrg _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1781 1.1 mrg {
1782 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1783 1.1 mrg (__v32hi) __B,
1784 1.1 mrg (__mmask32) -1);
1785 1.1 mrg }
1786 1.1 mrg
1787 1.1 mrg extern __inline __mmask32
1788 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1789 1.1 mrg _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1790 1.1 mrg {
1791 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1792 1.1 mrg (__v32hi) __B, __U);
1793 1.1 mrg }
1794 1.1 mrg
1795 1.1 mrg extern __inline __mmask64
1796 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1797 1.1 mrg _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1798 1.1 mrg {
1799 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1800 1.1 mrg (__v64qi) __B,
1801 1.1 mrg (__mmask64) -1);
1802 1.1 mrg }
1803 1.1 mrg
1804 1.1 mrg extern __inline __mmask64
1805 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1806 1.1 mrg _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1807 1.1 mrg {
1808 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1809 1.1 mrg (__v64qi) __B, __U);
1810 1.1 mrg }
1811 1.1 mrg
1812 1.1 mrg extern __inline __mmask32
1813 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1814 1.1 mrg _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1815 1.1 mrg {
1816 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1817 1.1 mrg (__v32hi) __B,
1818 1.1 mrg (__mmask32) -1);
1819 1.1 mrg }
1820 1.1 mrg
1821 1.1 mrg extern __inline __mmask32
1822 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1823 1.1 mrg _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1824 1.1 mrg {
1825 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1826 1.1 mrg (__v32hi) __B, __U);
1827 1.1 mrg }
1828 1.1 mrg
1829 1.1 mrg extern __inline __m512i
1830 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1831 1.1 mrg _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1832 1.1 mrg {
1833 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1834 1.1 mrg (__v64qi) __B,
1835 1.1 mrg (__v64qi)
1836 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1837 1.1 mrg (__mmask64) -1);
1838 1.1 mrg }
1839 1.1 mrg
1840 1.1 mrg extern __inline __m512i
1841 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1842 1.1 mrg _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1843 1.1 mrg __m512i __B)
1844 1.1 mrg {
1845 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1846 1.1 mrg (__v64qi) __B,
1847 1.1 mrg (__v64qi) __W,
1848 1.1 mrg (__mmask64) __U);
1849 1.1 mrg }
1850 1.1 mrg
1851 1.1 mrg extern __inline __m512i
1852 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1853 1.1 mrg _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1854 1.1 mrg {
1855 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1856 1.1 mrg (__v64qi) __B,
1857 1.1 mrg (__v64qi)
1858 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1859 1.1 mrg (__mmask64) __U);
1860 1.1 mrg }
1861 1.1 mrg
1862 1.1 mrg extern __inline __m512i
1863 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1864 1.1 mrg _mm512_min_epu16 (__m512i __A, __m512i __B)
1865 1.1 mrg {
1866 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1867 1.1 mrg (__v32hi) __B,
1868 1.1 mrg (__v32hi)
1869 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1870 1.1 mrg (__mmask32) -1);
1871 1.1 mrg }
1872 1.1 mrg
1873 1.1 mrg extern __inline __m512i
1874 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1875 1.1 mrg _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1876 1.1 mrg {
1877 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1878 1.1 mrg (__v32hi) __B,
1879 1.1 mrg (__v32hi)
1880 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1881 1.1 mrg (__mmask32) __M);
1882 1.1 mrg }
1883 1.1 mrg
1884 1.1 mrg extern __inline __m512i
1885 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1886 1.1 mrg _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1887 1.1 mrg __m512i __B)
1888 1.1 mrg {
1889 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1890 1.1 mrg (__v32hi) __B,
1891 1.1 mrg (__v32hi) __W,
1892 1.1 mrg (__mmask32) __M);
1893 1.1 mrg }
1894 1.1 mrg
1895 1.1 mrg extern __inline __m512i
1896 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1897 1.1 mrg _mm512_min_epi16 (__m512i __A, __m512i __B)
1898 1.1 mrg {
1899 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1900 1.1 mrg (__v32hi) __B,
1901 1.1 mrg (__v32hi)
1902 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1903 1.1 mrg (__mmask32) -1);
1904 1.1 mrg }
1905 1.1 mrg
1906 1.1 mrg extern __inline __m512i
1907 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1908 1.1 mrg _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1909 1.1 mrg {
1910 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1911 1.1 mrg (__v32hi) __B,
1912 1.1 mrg (__v32hi)
1913 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1914 1.1 mrg (__mmask32) __M);
1915 1.1 mrg }
1916 1.1 mrg
1917 1.1 mrg extern __inline __m512i
1918 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1919 1.1 mrg _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1920 1.1 mrg __m512i __B)
1921 1.1 mrg {
1922 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1923 1.1 mrg (__v32hi) __B,
1924 1.1 mrg (__v32hi) __W,
1925 1.1 mrg (__mmask32) __M);
1926 1.1 mrg }
1927 1.1 mrg
1928 1.1 mrg extern __inline __m512i
1929 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1930 1.1 mrg _mm512_max_epu8 (__m512i __A, __m512i __B)
1931 1.1 mrg {
1932 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1933 1.1 mrg (__v64qi) __B,
1934 1.1 mrg (__v64qi)
1935 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1936 1.1 mrg (__mmask64) -1);
1937 1.1 mrg }
1938 1.1 mrg
1939 1.1 mrg extern __inline __m512i
1940 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1941 1.1 mrg _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1942 1.1 mrg {
1943 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1944 1.1 mrg (__v64qi) __B,
1945 1.1 mrg (__v64qi)
1946 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1947 1.1 mrg (__mmask64) __M);
1948 1.1 mrg }
1949 1.1 mrg
1950 1.1 mrg extern __inline __m512i
1951 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1952 1.1 mrg _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1953 1.1 mrg __m512i __B)
1954 1.1 mrg {
1955 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1956 1.1 mrg (__v64qi) __B,
1957 1.1 mrg (__v64qi) __W,
1958 1.1 mrg (__mmask64) __M);
1959 1.1 mrg }
1960 1.1 mrg
1961 1.1 mrg extern __inline __m512i
1962 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1963 1.1 mrg _mm512_max_epi8 (__m512i __A, __m512i __B)
1964 1.1 mrg {
1965 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1966 1.1 mrg (__v64qi) __B,
1967 1.1 mrg (__v64qi)
1968 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1969 1.1 mrg (__mmask64) -1);
1970 1.1 mrg }
1971 1.1 mrg
1972 1.1 mrg extern __inline __m512i
1973 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1974 1.1 mrg _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1975 1.1 mrg {
1976 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1977 1.1 mrg (__v64qi) __B,
1978 1.1 mrg (__v64qi)
1979 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
1980 1.1 mrg (__mmask64) __M);
1981 1.1 mrg }
1982 1.1 mrg
1983 1.1 mrg extern __inline __m512i
1984 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1985 1.1 mrg _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1986 1.1 mrg __m512i __B)
1987 1.1 mrg {
1988 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1989 1.1 mrg (__v64qi) __B,
1990 1.1 mrg (__v64qi) __W,
1991 1.1 mrg (__mmask64) __M);
1992 1.1 mrg }
1993 1.1 mrg
1994 1.1 mrg extern __inline __m512i
1995 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1996 1.1 mrg _mm512_min_epu8 (__m512i __A, __m512i __B)
1997 1.1 mrg {
1998 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1999 1.1 mrg (__v64qi) __B,
2000 1.1 mrg (__v64qi)
2001 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2002 1.1 mrg (__mmask64) -1);
2003 1.1 mrg }
2004 1.1 mrg
2005 1.1 mrg extern __inline __m512i
2006 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2007 1.1 mrg _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
2008 1.1 mrg {
2009 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2010 1.1 mrg (__v64qi) __B,
2011 1.1 mrg (__v64qi)
2012 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2013 1.1 mrg (__mmask64) __M);
2014 1.1 mrg }
2015 1.1 mrg
2016 1.1 mrg extern __inline __m512i
2017 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2018 1.1 mrg _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
2019 1.1 mrg __m512i __B)
2020 1.1 mrg {
2021 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2022 1.1 mrg (__v64qi) __B,
2023 1.1 mrg (__v64qi) __W,
2024 1.1 mrg (__mmask64) __M);
2025 1.1 mrg }
2026 1.1 mrg
2027 1.1 mrg extern __inline __m512i
2028 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2029 1.1 mrg _mm512_min_epi8 (__m512i __A, __m512i __B)
2030 1.1 mrg {
2031 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2032 1.1 mrg (__v64qi) __B,
2033 1.1 mrg (__v64qi)
2034 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2035 1.1 mrg (__mmask64) -1);
2036 1.1 mrg }
2037 1.1 mrg
2038 1.1 mrg extern __inline __m512i
2039 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2040 1.1 mrg _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
2041 1.1 mrg {
2042 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2043 1.1 mrg (__v64qi) __B,
2044 1.1 mrg (__v64qi)
2045 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2046 1.1 mrg (__mmask64) __M);
2047 1.1 mrg }
2048 1.1 mrg
2049 1.1 mrg extern __inline __m512i
2050 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2051 1.1 mrg _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
2052 1.1 mrg __m512i __B)
2053 1.1 mrg {
2054 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2055 1.1 mrg (__v64qi) __B,
2056 1.1 mrg (__v64qi) __W,
2057 1.1 mrg (__mmask64) __M);
2058 1.1 mrg }
2059 1.1 mrg
2060 1.1 mrg extern __inline __m512i
2061 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2062 1.1 mrg _mm512_max_epi16 (__m512i __A, __m512i __B)
2063 1.1 mrg {
2064 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2065 1.1 mrg (__v32hi) __B,
2066 1.1 mrg (__v32hi)
2067 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2068 1.1 mrg (__mmask32) -1);
2069 1.1 mrg }
2070 1.1 mrg
2071 1.1 mrg extern __inline __m512i
2072 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2073 1.1 mrg _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
2074 1.1 mrg {
2075 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2076 1.1 mrg (__v32hi) __B,
2077 1.1 mrg (__v32hi)
2078 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2079 1.1 mrg (__mmask32) __M);
2080 1.1 mrg }
2081 1.1 mrg
2082 1.1 mrg extern __inline __m512i
2083 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2084 1.1 mrg _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2085 1.1 mrg __m512i __B)
2086 1.1 mrg {
2087 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2088 1.1 mrg (__v32hi) __B,
2089 1.1 mrg (__v32hi) __W,
2090 1.1 mrg (__mmask32) __M);
2091 1.1 mrg }
2092 1.1 mrg
2093 1.1 mrg extern __inline __m512i
2094 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2095 1.1 mrg _mm512_max_epu16 (__m512i __A, __m512i __B)
2096 1.1 mrg {
2097 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2098 1.1 mrg (__v32hi) __B,
2099 1.1 mrg (__v32hi)
2100 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2101 1.1 mrg (__mmask32) -1);
2102 1.1 mrg }
2103 1.1 mrg
2104 1.1 mrg extern __inline __m512i
2105 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2106 1.1 mrg _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
2107 1.1 mrg {
2108 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2109 1.1 mrg (__v32hi) __B,
2110 1.1 mrg (__v32hi)
2111 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2112 1.1 mrg (__mmask32) __M);
2113 1.1 mrg }
2114 1.1 mrg
2115 1.1 mrg extern __inline __m512i
2116 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2117 1.1 mrg _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
2118 1.1 mrg __m512i __B)
2119 1.1 mrg {
2120 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2121 1.1 mrg (__v32hi) __B,
2122 1.1 mrg (__v32hi) __W,
2123 1.1 mrg (__mmask32) __M);
2124 1.1 mrg }
2125 1.1 mrg
2126 1.1 mrg extern __inline __m512i
2127 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2128 1.1 mrg _mm512_sra_epi16 (__m512i __A, __m128i __B)
2129 1.1 mrg {
2130 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2131 1.1 mrg (__v8hi) __B,
2132 1.1 mrg (__v32hi)
2133 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2134 1.1 mrg (__mmask32) -1);
2135 1.1 mrg }
2136 1.1 mrg
2137 1.1 mrg extern __inline __m512i
2138 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2139 1.1 mrg _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2140 1.1 mrg __m128i __B)
2141 1.1 mrg {
2142 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2143 1.1 mrg (__v8hi) __B,
2144 1.1 mrg (__v32hi) __W,
2145 1.1 mrg (__mmask32) __U);
2146 1.1 mrg }
2147 1.1 mrg
2148 1.1 mrg extern __inline __m512i
2149 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2150 1.1 mrg _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
2151 1.1 mrg {
2152 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2153 1.1 mrg (__v8hi) __B,
2154 1.1 mrg (__v32hi)
2155 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2156 1.1 mrg (__mmask32) __U);
2157 1.1 mrg }
2158 1.1 mrg
2159 1.1 mrg extern __inline __m512i
2160 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2161 1.1 mrg _mm512_srav_epi16 (__m512i __A, __m512i __B)
2162 1.1 mrg {
2163 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2164 1.1 mrg (__v32hi) __B,
2165 1.1 mrg (__v32hi)
2166 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2167 1.1 mrg (__mmask32) -1);
2168 1.1 mrg }
2169 1.1 mrg
2170 1.1 mrg extern __inline __m512i
2171 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2172 1.1 mrg _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2173 1.1 mrg __m512i __B)
2174 1.1 mrg {
2175 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2176 1.1 mrg (__v32hi) __B,
2177 1.1 mrg (__v32hi) __W,
2178 1.1 mrg (__mmask32) __U);
2179 1.1 mrg }
2180 1.1 mrg
2181 1.1 mrg extern __inline __m512i
2182 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2183 1.1 mrg _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2184 1.1 mrg {
2185 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2186 1.1 mrg (__v32hi) __B,
2187 1.1 mrg (__v32hi)
2188 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2189 1.1 mrg (__mmask32) __U);
2190 1.1 mrg }
2191 1.1 mrg
2192 1.1 mrg extern __inline __m512i
2193 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2194 1.1 mrg _mm512_srlv_epi16 (__m512i __A, __m512i __B)
2195 1.1 mrg {
2196 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2197 1.1 mrg (__v32hi) __B,
2198 1.1 mrg (__v32hi)
2199 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2200 1.1 mrg (__mmask32) -1);
2201 1.1 mrg }
2202 1.1 mrg
2203 1.1 mrg extern __inline __m512i
2204 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2205 1.1 mrg _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2206 1.1 mrg __m512i __B)
2207 1.1 mrg {
2208 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2209 1.1 mrg (__v32hi) __B,
2210 1.1 mrg (__v32hi) __W,
2211 1.1 mrg (__mmask32) __U);
2212 1.1 mrg }
2213 1.1 mrg
2214 1.1 mrg extern __inline __m512i
2215 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2216 1.1 mrg _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2217 1.1 mrg {
2218 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2219 1.1 mrg (__v32hi) __B,
2220 1.1 mrg (__v32hi)
2221 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2222 1.1 mrg (__mmask32) __U);
2223 1.1 mrg }
2224 1.1 mrg
2225 1.1 mrg extern __inline __m512i
2226 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2227 1.1 mrg _mm512_sllv_epi16 (__m512i __A, __m512i __B)
2228 1.1 mrg {
2229 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2230 1.1 mrg (__v32hi) __B,
2231 1.1 mrg (__v32hi)
2232 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2233 1.1 mrg (__mmask32) -1);
2234 1.1 mrg }
2235 1.1 mrg
2236 1.1 mrg extern __inline __m512i
2237 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2238 1.1 mrg _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2239 1.1 mrg __m512i __B)
2240 1.1 mrg {
2241 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2242 1.1 mrg (__v32hi) __B,
2243 1.1 mrg (__v32hi) __W,
2244 1.1 mrg (__mmask32) __U);
2245 1.1 mrg }
2246 1.1 mrg
2247 1.1 mrg extern __inline __m512i
2248 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2249 1.1 mrg _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2250 1.1 mrg {
2251 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2252 1.1 mrg (__v32hi) __B,
2253 1.1 mrg (__v32hi)
2254 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2255 1.1 mrg (__mmask32) __U);
2256 1.1 mrg }
2257 1.1 mrg
2258 1.1 mrg extern __inline __m512i
2259 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2260 1.1 mrg _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2261 1.1 mrg __m512i __B)
2262 1.1 mrg {
2263 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2264 1.1 mrg (__v32hi) __B,
2265 1.1 mrg (__v64qi) __W,
2266 1.1 mrg (__mmask64) __M);
2267 1.1 mrg }
2268 1.1 mrg
2269 1.1 mrg extern __inline __m512i
2270 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2271 1.1 mrg _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2272 1.1 mrg {
2273 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2274 1.1 mrg (__v32hi) __B,
2275 1.1 mrg (__v64qi)
2276 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2277 1.1 mrg __M);
2278 1.1 mrg }
2279 1.1 mrg
2280 1.1 mrg extern __inline __m512i
2281 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2282 1.1 mrg _mm512_packus_epi16 (__m512i __A, __m512i __B)
2283 1.1 mrg {
2284 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2285 1.1 mrg (__v32hi) __B,
2286 1.1 mrg (__v64qi)
2287 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2288 1.1 mrg (__mmask64) -1);
2289 1.1 mrg }
2290 1.1 mrg
2291 1.1 mrg extern __inline __m512i
2292 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2293 1.1 mrg _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2294 1.1 mrg __m512i __B)
2295 1.1 mrg {
2296 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2297 1.1 mrg (__v32hi) __B,
2298 1.1 mrg (__v64qi) __W,
2299 1.1 mrg (__mmask64) __M);
2300 1.1 mrg }
2301 1.1 mrg
2302 1.1 mrg extern __inline __m512i
2303 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2304 1.1 mrg _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2305 1.1 mrg {
2306 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2307 1.1 mrg (__v32hi) __B,
2308 1.1 mrg (__v64qi)
2309 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2310 1.1 mrg (__mmask64) __M);
2311 1.1 mrg }
2312 1.1 mrg
2313 1.1 mrg extern __inline __m512i
2314 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2315 1.1 mrg _mm512_abs_epi8 (__m512i __A)
2316 1.1 mrg {
2317 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2318 1.1 mrg (__v64qi)
2319 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2320 1.1 mrg (__mmask64) -1);
2321 1.1 mrg }
2322 1.1 mrg
2323 1.1 mrg extern __inline __m512i
2324 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2325 1.1 mrg _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2326 1.1 mrg {
2327 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2328 1.1 mrg (__v64qi) __W,
2329 1.1 mrg (__mmask64) __U);
2330 1.1 mrg }
2331 1.1 mrg
2332 1.1 mrg extern __inline __m512i
2333 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2334 1.1 mrg _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
2335 1.1 mrg {
2336 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2337 1.1 mrg (__v64qi)
2338 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2339 1.1 mrg (__mmask64) __U);
2340 1.1 mrg }
2341 1.1 mrg
2342 1.1 mrg extern __inline __m512i
2343 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2344 1.1 mrg _mm512_abs_epi16 (__m512i __A)
2345 1.1 mrg {
2346 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2347 1.1 mrg (__v32hi)
2348 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2349 1.1 mrg (__mmask32) -1);
2350 1.1 mrg }
2351 1.1 mrg
2352 1.1 mrg extern __inline __m512i
2353 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2354 1.1 mrg _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2355 1.1 mrg {
2356 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2357 1.1 mrg (__v32hi) __W,
2358 1.1 mrg (__mmask32) __U);
2359 1.1 mrg }
2360 1.1 mrg
2361 1.1 mrg extern __inline __m512i
2362 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2363 1.1 mrg _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
2364 1.1 mrg {
2365 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2366 1.1 mrg (__v32hi)
2367 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2368 1.1 mrg (__mmask32) __U);
2369 1.1 mrg }
2370 1.1 mrg
2371 1.1 mrg extern __inline __mmask64
2372 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2373 1.1 mrg _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2374 1.1 mrg {
2375 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2376 1.1 mrg (__v64qi) __Y, 4,
2377 1.1 mrg (__mmask64) __M);
2378 1.1 mrg }
2379 1.1 mrg
2380 1.1 mrg extern __inline __mmask64
2381 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2382 1.1 mrg _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2383 1.1 mrg {
2384 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2385 1.1 mrg (__v64qi) __Y, 1,
2386 1.1 mrg (__mmask64) __M);
2387 1.1 mrg }
2388 1.1 mrg
2389 1.1 mrg extern __inline __mmask64
2390 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2391 1.1 mrg _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2392 1.1 mrg {
2393 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2394 1.1 mrg (__v64qi) __Y, 5,
2395 1.1 mrg (__mmask64) __M);
2396 1.1 mrg }
2397 1.1 mrg
2398 1.1 mrg extern __inline __mmask64
2399 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2400 1.1 mrg _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2401 1.1 mrg {
2402 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2403 1.1 mrg (__v64qi) __Y, 2,
2404 1.1 mrg (__mmask64) __M);
2405 1.1 mrg }
2406 1.1 mrg
2407 1.1 mrg extern __inline __mmask32
2408 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2409 1.1 mrg _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2410 1.1 mrg {
2411 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2412 1.1 mrg (__v32hi) __Y, 4,
2413 1.1 mrg (__mmask32) __M);
2414 1.1 mrg }
2415 1.1 mrg
2416 1.1 mrg extern __inline __mmask32
2417 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2418 1.1 mrg _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2419 1.1 mrg {
2420 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2421 1.1 mrg (__v32hi) __Y, 1,
2422 1.1 mrg (__mmask32) __M);
2423 1.1 mrg }
2424 1.1 mrg
2425 1.1 mrg extern __inline __mmask32
2426 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2427 1.1 mrg _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2428 1.1 mrg {
2429 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2430 1.1 mrg (__v32hi) __Y, 5,
2431 1.1 mrg (__mmask32) __M);
2432 1.1 mrg }
2433 1.1 mrg
2434 1.1 mrg extern __inline __mmask32
2435 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2436 1.1 mrg _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2437 1.1 mrg {
2438 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2439 1.1 mrg (__v32hi) __Y, 2,
2440 1.1 mrg (__mmask32) __M);
2441 1.1 mrg }
2442 1.1 mrg
2443 1.1 mrg extern __inline __mmask64
2444 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2445 1.1 mrg _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2446 1.1 mrg {
2447 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2448 1.1 mrg (__v64qi) __Y, 4,
2449 1.1 mrg (__mmask64) __M);
2450 1.1 mrg }
2451 1.1 mrg
2452 1.1 mrg extern __inline __mmask64
2453 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2454 1.1 mrg _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2455 1.1 mrg {
2456 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2457 1.1 mrg (__v64qi) __Y, 1,
2458 1.1 mrg (__mmask64) __M);
2459 1.1 mrg }
2460 1.1 mrg
2461 1.1 mrg extern __inline __mmask64
2462 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2463 1.1 mrg _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2464 1.1 mrg {
2465 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2466 1.1 mrg (__v64qi) __Y, 5,
2467 1.1 mrg (__mmask64) __M);
2468 1.1 mrg }
2469 1.1 mrg
2470 1.1 mrg extern __inline __mmask64
2471 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2472 1.1 mrg _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2473 1.1 mrg {
2474 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2475 1.1 mrg (__v64qi) __Y, 2,
2476 1.1 mrg (__mmask64) __M);
2477 1.1 mrg }
2478 1.1 mrg
2479 1.1 mrg extern __inline __mmask32
2480 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2481 1.1 mrg _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2482 1.1 mrg {
2483 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2484 1.1 mrg (__v32hi) __Y, 4,
2485 1.1 mrg (__mmask32) __M);
2486 1.1 mrg }
2487 1.1 mrg
2488 1.1 mrg extern __inline __mmask32
2489 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2490 1.1 mrg _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2491 1.1 mrg {
2492 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2493 1.1 mrg (__v32hi) __Y, 1,
2494 1.1 mrg (__mmask32) __M);
2495 1.1 mrg }
2496 1.1 mrg
2497 1.1 mrg extern __inline __mmask32
2498 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2499 1.1 mrg _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2500 1.1 mrg {
2501 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2502 1.1 mrg (__v32hi) __Y, 5,
2503 1.1 mrg (__mmask32) __M);
2504 1.1 mrg }
2505 1.1 mrg
2506 1.1 mrg extern __inline __mmask32
2507 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2508 1.1 mrg _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2509 1.1 mrg {
2510 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2511 1.1 mrg (__v32hi) __Y, 2,
2512 1.1 mrg (__mmask32) __M);
2513 1.1 mrg }
2514 1.1 mrg
2515 1.1 mrg extern __inline __mmask64
2516 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2517 1.1 mrg _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
2518 1.1 mrg {
2519 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2520 1.1 mrg (__v64qi) __Y, 4,
2521 1.1.1.2 mrg (__mmask64) -1);
2522 1.1 mrg }
2523 1.1 mrg
2524 1.1 mrg extern __inline __mmask64
2525 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2526 1.1 mrg _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
2527 1.1 mrg {
2528 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2529 1.1 mrg (__v64qi) __Y, 1,
2530 1.1.1.2 mrg (__mmask64) -1);
2531 1.1 mrg }
2532 1.1 mrg
2533 1.1 mrg extern __inline __mmask64
2534 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2535 1.1 mrg _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
2536 1.1 mrg {
2537 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2538 1.1 mrg (__v64qi) __Y, 5,
2539 1.1.1.2 mrg (__mmask64) -1);
2540 1.1 mrg }
2541 1.1 mrg
2542 1.1 mrg extern __inline __mmask64
2543 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2544 1.1 mrg _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
2545 1.1 mrg {
2546 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2547 1.1 mrg (__v64qi) __Y, 2,
2548 1.1.1.2 mrg (__mmask64) -1);
2549 1.1 mrg }
2550 1.1 mrg
2551 1.1 mrg extern __inline __mmask32
2552 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2553 1.1 mrg _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
2554 1.1 mrg {
2555 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2556 1.1 mrg (__v32hi) __Y, 4,
2557 1.1.1.2 mrg (__mmask32) -1);
2558 1.1 mrg }
2559 1.1 mrg
2560 1.1 mrg extern __inline __mmask32
2561 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2562 1.1 mrg _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
2563 1.1 mrg {
2564 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2565 1.1 mrg (__v32hi) __Y, 1,
2566 1.1.1.2 mrg (__mmask32) -1);
2567 1.1 mrg }
2568 1.1 mrg
2569 1.1 mrg extern __inline __mmask32
2570 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2571 1.1 mrg _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
2572 1.1 mrg {
2573 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2574 1.1 mrg (__v32hi) __Y, 5,
2575 1.1.1.2 mrg (__mmask32) -1);
2576 1.1 mrg }
2577 1.1 mrg
2578 1.1 mrg extern __inline __mmask32
2579 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2580 1.1 mrg _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
2581 1.1 mrg {
2582 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2583 1.1 mrg (__v32hi) __Y, 2,
2584 1.1.1.2 mrg (__mmask32) -1);
2585 1.1 mrg }
2586 1.1 mrg
2587 1.1 mrg extern __inline __mmask64
2588 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2589 1.1 mrg _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
2590 1.1 mrg {
2591 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2592 1.1 mrg (__v64qi) __Y, 4,
2593 1.1.1.2 mrg (__mmask64) -1);
2594 1.1 mrg }
2595 1.1 mrg
2596 1.1 mrg extern __inline __mmask64
2597 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2598 1.1 mrg _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
2599 1.1 mrg {
2600 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2601 1.1 mrg (__v64qi) __Y, 1,
2602 1.1.1.2 mrg (__mmask64) -1);
2603 1.1 mrg }
2604 1.1 mrg
2605 1.1 mrg extern __inline __mmask64
2606 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2607 1.1 mrg _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
2608 1.1 mrg {
2609 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2610 1.1 mrg (__v64qi) __Y, 5,
2611 1.1.1.2 mrg (__mmask64) -1);
2612 1.1 mrg }
2613 1.1 mrg
2614 1.1 mrg extern __inline __mmask64
2615 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2616 1.1 mrg _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
2617 1.1 mrg {
2618 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2619 1.1 mrg (__v64qi) __Y, 2,
2620 1.1.1.2 mrg (__mmask64) -1);
2621 1.1 mrg }
2622 1.1 mrg
2623 1.1 mrg extern __inline __mmask32
2624 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2625 1.1 mrg _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
2626 1.1 mrg {
2627 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2628 1.1 mrg (__v32hi) __Y, 4,
2629 1.1.1.2 mrg (__mmask32) -1);
2630 1.1 mrg }
2631 1.1 mrg
2632 1.1 mrg extern __inline __mmask32
2633 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2634 1.1 mrg _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
2635 1.1 mrg {
2636 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2637 1.1 mrg (__v32hi) __Y, 1,
2638 1.1.1.2 mrg (__mmask32) -1);
2639 1.1 mrg }
2640 1.1 mrg
2641 1.1 mrg extern __inline __mmask32
2642 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2643 1.1 mrg _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
2644 1.1 mrg {
2645 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2646 1.1 mrg (__v32hi) __Y, 5,
2647 1.1.1.2 mrg (__mmask32) -1);
2648 1.1 mrg }
2649 1.1 mrg
2650 1.1 mrg extern __inline __mmask32
2651 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2652 1.1 mrg _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
2653 1.1 mrg {
2654 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2655 1.1 mrg (__v32hi) __Y, 2,
2656 1.1.1.2 mrg (__mmask32) -1);
2657 1.1.1.2 mrg }
2658 1.1.1.2 mrg
2659 1.1.1.2 mrg extern __inline __m512i
2660 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2661 1.1.1.2 mrg _mm512_packs_epi32 (__m512i __A, __m512i __B)
2662 1.1.1.2 mrg {
2663 1.1.1.2 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2664 1.1.1.2 mrg (__v16si) __B,
2665 1.1.1.2 mrg (__v32hi)
2666 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2667 1.1.1.2 mrg (__mmask32) -1);
2668 1.1.1.2 mrg }
2669 1.1.1.2 mrg
2670 1.1.1.2 mrg extern __inline __m512i
2671 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2672 1.1.1.2 mrg _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2673 1.1.1.2 mrg {
2674 1.1.1.2 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2675 1.1.1.2 mrg (__v16si) __B,
2676 1.1.1.2 mrg (__v32hi)
2677 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2678 1.1.1.2 mrg __M);
2679 1.1.1.2 mrg }
2680 1.1.1.2 mrg
2681 1.1.1.2 mrg extern __inline __m512i
2682 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2683 1.1.1.2 mrg _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2684 1.1.1.2 mrg __m512i __B)
2685 1.1.1.2 mrg {
2686 1.1.1.2 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2687 1.1.1.2 mrg (__v16si) __B,
2688 1.1.1.2 mrg (__v32hi) __W,
2689 1.1.1.2 mrg __M);
2690 1.1.1.2 mrg }
2691 1.1.1.2 mrg
2692 1.1.1.2 mrg extern __inline __m512i
2693 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2694 1.1.1.2 mrg _mm512_packus_epi32 (__m512i __A, __m512i __B)
2695 1.1.1.2 mrg {
2696 1.1.1.2 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2697 1.1.1.2 mrg (__v16si) __B,
2698 1.1.1.2 mrg (__v32hi)
2699 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2700 1.1.1.2 mrg (__mmask32) -1);
2701 1.1.1.2 mrg }
2702 1.1.1.2 mrg
2703 1.1.1.2 mrg extern __inline __m512i
2704 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2705 1.1.1.2 mrg _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2706 1.1.1.2 mrg {
2707 1.1.1.2 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2708 1.1.1.2 mrg (__v16si) __B,
2709 1.1.1.2 mrg (__v32hi)
2710 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2711 1.1.1.2 mrg __M);
2712 1.1.1.2 mrg }
2713 1.1.1.2 mrg
2714 1.1.1.2 mrg extern __inline __m512i
2715 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2716 1.1.1.2 mrg _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2717 1.1.1.2 mrg __m512i __B)
2718 1.1.1.2 mrg {
2719 1.1.1.2 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2720 1.1.1.2 mrg (__v16si) __B,
2721 1.1.1.2 mrg (__v32hi) __W,
2722 1.1.1.2 mrg __M);
2723 1.1 mrg }
2724 1.1 mrg
2725 1.1 mrg #ifdef __OPTIMIZE__
2726 1.1.1.2.4.2 martin extern __inline __mmask32
2727 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2728 1.1.1.2.4.2 martin _kshiftli_mask32 (__mmask32 __A, unsigned int __B)
2729 1.1.1.2.4.2 martin {
2730 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A,
2731 1.1.1.2.4.2 martin (__mmask8) __B);
2732 1.1.1.2.4.2 martin }
2733 1.1.1.2.4.2 martin
2734 1.1.1.2.4.2 martin extern __inline __mmask64
2735 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2736 1.1.1.2.4.2 martin _kshiftli_mask64 (__mmask64 __A, unsigned int __B)
2737 1.1.1.2.4.2 martin {
2738 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A,
2739 1.1.1.2.4.2 martin (__mmask8) __B);
2740 1.1.1.2.4.2 martin }
2741 1.1.1.2.4.2 martin
2742 1.1.1.2.4.2 martin extern __inline __mmask32
2743 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2744 1.1.1.2.4.2 martin _kshiftri_mask32 (__mmask32 __A, unsigned int __B)
2745 1.1.1.2.4.2 martin {
2746 1.1.1.2.4.2 martin return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A,
2747 1.1.1.2.4.2 martin (__mmask8) __B);
2748 1.1.1.2.4.2 martin }
2749 1.1.1.2.4.2 martin
2750 1.1.1.2.4.2 martin extern __inline __mmask64
2751 1.1.1.2.4.2 martin __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2752 1.1.1.2.4.2 martin _kshiftri_mask64 (__mmask64 __A, unsigned int __B)
2753 1.1.1.2.4.2 martin {
2754 1.1.1.2.4.2 martin return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A,
2755 1.1.1.2.4.2 martin (__mmask8) __B);
2756 1.1.1.2.4.2 martin }
2757 1.1.1.2.4.2 martin
2758 1.1 mrg extern __inline __m512i
2759 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2760 1.1 mrg _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
2761 1.1 mrg {
2762 1.1 mrg return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
2763 1.1 mrg (__v8di) __B, __N * 8);
2764 1.1 mrg }
2765 1.1 mrg
2766 1.1 mrg extern __inline __m512i
2767 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2768 1.1 mrg _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
2769 1.1 mrg __m512i __B, const int __N)
2770 1.1 mrg {
2771 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2772 1.1 mrg (__v8di) __B,
2773 1.1 mrg __N * 8,
2774 1.1 mrg (__v8di) __W,
2775 1.1 mrg (__mmask64) __U);
2776 1.1 mrg }
2777 1.1 mrg
2778 1.1 mrg extern __inline __m512i
2779 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2780 1.1 mrg _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
2781 1.1 mrg const int __N)
2782 1.1 mrg {
2783 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2784 1.1 mrg (__v8di) __B,
2785 1.1 mrg __N * 8,
2786 1.1 mrg (__v8di)
2787 1.1 mrg _mm512_setzero_si512 (),
2788 1.1 mrg (__mmask64) __U);
2789 1.1 mrg }
2790 1.1 mrg
2791 1.1 mrg extern __inline __m512i
2792 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2793 1.1 mrg _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
2794 1.1 mrg {
2795 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2796 1.1 mrg (__v64qi) __B,
2797 1.1 mrg __imm,
2798 1.1 mrg (__v32hi)
2799 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2800 1.1 mrg (__mmask32) -1);
2801 1.1 mrg }
2802 1.1 mrg
2803 1.1 mrg extern __inline __m512i
2804 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2805 1.1 mrg _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
2806 1.1 mrg __m512i __B, const int __imm)
2807 1.1 mrg {
2808 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2809 1.1 mrg (__v64qi) __B,
2810 1.1 mrg __imm,
2811 1.1 mrg (__v32hi) __W,
2812 1.1 mrg (__mmask32) __U);
2813 1.1 mrg }
2814 1.1 mrg
2815 1.1 mrg extern __inline __m512i
2816 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2817 1.1 mrg _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
2818 1.1 mrg const int __imm)
2819 1.1 mrg {
2820 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2821 1.1 mrg (__v64qi) __B,
2822 1.1 mrg __imm,
2823 1.1 mrg (__v32hi)
2824 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2825 1.1 mrg (__mmask32) __U);
2826 1.1 mrg }
2827 1.1 mrg
2828 1.1 mrg extern __inline __m512i
2829 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2830 1.1 mrg _mm512_srli_epi16 (__m512i __A, const int __imm)
2831 1.1 mrg {
2832 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2833 1.1 mrg (__v32hi)
2834 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2835 1.1 mrg (__mmask32) -1);
2836 1.1 mrg }
2837 1.1 mrg
2838 1.1 mrg extern __inline __m512i
2839 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2840 1.1 mrg _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2841 1.1 mrg const int __imm)
2842 1.1 mrg {
2843 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2844 1.1 mrg (__v32hi) __W,
2845 1.1 mrg (__mmask32) __U);
2846 1.1 mrg }
2847 1.1 mrg
2848 1.1 mrg extern __inline __m512i
2849 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2850 1.1 mrg _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2851 1.1 mrg {
2852 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2853 1.1 mrg (__v32hi)
2854 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2855 1.1 mrg (__mmask32) __U);
2856 1.1 mrg }
2857 1.1 mrg
2858 1.1 mrg extern __inline __m512i
2859 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2860 1.1 mrg _mm512_slli_epi16 (__m512i __A, const int __B)
2861 1.1 mrg {
2862 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2863 1.1 mrg (__v32hi)
2864 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2865 1.1 mrg (__mmask32) -1);
2866 1.1 mrg }
2867 1.1 mrg
2868 1.1 mrg extern __inline __m512i
2869 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2870 1.1 mrg _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2871 1.1 mrg const int __B)
2872 1.1 mrg {
2873 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2874 1.1 mrg (__v32hi) __W,
2875 1.1 mrg (__mmask32) __U);
2876 1.1 mrg }
2877 1.1 mrg
2878 1.1 mrg extern __inline __m512i
2879 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2880 1.1 mrg _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
2881 1.1 mrg {
2882 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2883 1.1 mrg (__v32hi)
2884 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2885 1.1 mrg (__mmask32) __U);
2886 1.1 mrg }
2887 1.1 mrg
2888 1.1 mrg extern __inline __m512i
2889 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2890 1.1 mrg _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
2891 1.1 mrg {
2892 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2893 1.1 mrg __imm,
2894 1.1 mrg (__v32hi)
2895 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2896 1.1 mrg (__mmask32) -1);
2897 1.1 mrg }
2898 1.1 mrg
2899 1.1 mrg extern __inline __m512i
2900 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2901 1.1 mrg _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2902 1.1 mrg const int __imm)
2903 1.1 mrg {
2904 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2905 1.1 mrg __imm,
2906 1.1 mrg (__v32hi) __W,
2907 1.1 mrg (__mmask32) __U);
2908 1.1 mrg }
2909 1.1 mrg
2910 1.1 mrg extern __inline __m512i
2911 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2912 1.1 mrg _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
2913 1.1 mrg const int __imm)
2914 1.1 mrg {
2915 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2916 1.1 mrg __imm,
2917 1.1 mrg (__v32hi)
2918 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2919 1.1 mrg (__mmask32) __U);
2920 1.1 mrg }
2921 1.1 mrg
2922 1.1 mrg extern __inline __m512i
2923 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2924 1.1 mrg _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
2925 1.1 mrg {
2926 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2927 1.1 mrg __imm,
2928 1.1 mrg (__v32hi)
2929 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2930 1.1 mrg (__mmask32) -1);
2931 1.1 mrg }
2932 1.1 mrg
2933 1.1 mrg extern __inline __m512i
2934 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2935 1.1 mrg _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2936 1.1 mrg const int __imm)
2937 1.1 mrg {
2938 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2939 1.1 mrg __imm,
2940 1.1 mrg (__v32hi) __W,
2941 1.1 mrg (__mmask32) __U);
2942 1.1 mrg }
2943 1.1 mrg
2944 1.1 mrg extern __inline __m512i
2945 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2946 1.1 mrg _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
2947 1.1 mrg const int __imm)
2948 1.1 mrg {
2949 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2950 1.1 mrg __imm,
2951 1.1 mrg (__v32hi)
2952 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2953 1.1 mrg (__mmask32) __U);
2954 1.1 mrg }
2955 1.1 mrg
2956 1.1 mrg extern __inline __m512i
2957 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2958 1.1 mrg _mm512_srai_epi16 (__m512i __A, const int __imm)
2959 1.1 mrg {
2960 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2961 1.1 mrg (__v32hi)
2962 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2963 1.1 mrg (__mmask32) -1);
2964 1.1 mrg }
2965 1.1 mrg
2966 1.1 mrg extern __inline __m512i
2967 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2968 1.1 mrg _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2969 1.1 mrg const int __imm)
2970 1.1 mrg {
2971 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2972 1.1 mrg (__v32hi) __W,
2973 1.1 mrg (__mmask32) __U);
2974 1.1 mrg }
2975 1.1 mrg
2976 1.1 mrg extern __inline __m512i
2977 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2978 1.1 mrg _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2979 1.1 mrg {
2980 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2981 1.1 mrg (__v32hi)
2982 1.1.1.2.4.2 martin _mm512_setzero_si512 (),
2983 1.1 mrg (__mmask32) __U);
2984 1.1 mrg }
2985 1.1 mrg
2986 1.1 mrg extern __inline __m512i
2987 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2988 1.1 mrg _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
2989 1.1 mrg {
2990 1.1 mrg return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
2991 1.1 mrg (__v32hi) __W,
2992 1.1 mrg (__mmask32) __U);
2993 1.1 mrg }
2994 1.1 mrg
2995 1.1 mrg extern __inline __m512i
2996 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2997 1.1 mrg _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
2998 1.1 mrg {
2999 1.1 mrg return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
3000 1.1 mrg (__v64qi) __W,
3001 1.1 mrg (__mmask64) __U);
3002 1.1 mrg }
3003 1.1 mrg
3004 1.1 mrg extern __inline __mmask32
3005 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3006 1.1 mrg _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3007 1.1 mrg const int __P)
3008 1.1 mrg {
3009 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
3010 1.1 mrg (__v32hi) __Y, __P,
3011 1.1 mrg (__mmask32) __U);
3012 1.1 mrg }
3013 1.1 mrg
3014 1.1 mrg extern __inline __mmask32
3015 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3016 1.1 mrg _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
3017 1.1 mrg {
3018 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
3019 1.1 mrg (__v32hi) __Y, __P,
3020 1.1 mrg (__mmask32) -1);
3021 1.1 mrg }
3022 1.1 mrg
3023 1.1 mrg extern __inline __mmask64
3024 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3025 1.1 mrg _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3026 1.1 mrg const int __P)
3027 1.1 mrg {
3028 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
3029 1.1 mrg (__v64qi) __Y, __P,
3030 1.1 mrg (__mmask64) __U);
3031 1.1 mrg }
3032 1.1 mrg
3033 1.1 mrg extern __inline __mmask64
3034 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3035 1.1 mrg _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
3036 1.1 mrg {
3037 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
3038 1.1 mrg (__v64qi) __Y, __P,
3039 1.1 mrg (__mmask64) -1);
3040 1.1 mrg }
3041 1.1 mrg
3042 1.1 mrg extern __inline __mmask32
3043 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3044 1.1 mrg _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3045 1.1 mrg const int __P)
3046 1.1 mrg {
3047 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
3048 1.1 mrg (__v32hi) __Y, __P,
3049 1.1 mrg (__mmask32) __U);
3050 1.1 mrg }
3051 1.1 mrg
3052 1.1 mrg extern __inline __mmask32
3053 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3054 1.1 mrg _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
3055 1.1 mrg {
3056 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
3057 1.1 mrg (__v32hi) __Y, __P,
3058 1.1 mrg (__mmask32) -1);
3059 1.1 mrg }
3060 1.1 mrg
3061 1.1 mrg extern __inline __mmask64
3062 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3063 1.1 mrg _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3064 1.1 mrg const int __P)
3065 1.1 mrg {
3066 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
3067 1.1 mrg (__v64qi) __Y, __P,
3068 1.1 mrg (__mmask64) __U);
3069 1.1 mrg }
3070 1.1 mrg
3071 1.1 mrg extern __inline __mmask64
3072 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3073 1.1 mrg _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
3074 1.1 mrg {
3075 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
3076 1.1 mrg (__v64qi) __Y, __P,
3077 1.1 mrg (__mmask64) -1);
3078 1.1 mrg }
3079 1.1 mrg
3080 1.1 mrg extern __inline __m512i
3081 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3082 1.1 mrg _mm512_bslli_epi128 (__m512i __A, const int __N)
3083 1.1 mrg {
3084 1.1 mrg return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
3085 1.1 mrg }
3086 1.1 mrg
3087 1.1 mrg extern __inline __m512i
3088 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3089 1.1 mrg _mm512_bsrli_epi128 (__m512i __A, const int __N)
3090 1.1 mrg {
3091 1.1 mrg return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
3092 1.1 mrg }
3093 1.1 mrg
3094 1.1 mrg #else
3095 1.1.1.2.4.2 martin #define _kshiftli_mask32(X, Y) \
3096 1.1.1.2.4.2 martin ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y)))
3097 1.1.1.2.4.2 martin
3098 1.1.1.2.4.2 martin #define _kshiftli_mask64(X, Y) \
3099 1.1.1.2.4.2 martin ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y)))
3100 1.1.1.2.4.2 martin
3101 1.1.1.2.4.2 martin #define _kshiftri_mask32(X, Y) \
3102 1.1.1.2.4.2 martin ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y)))
3103 1.1.1.2.4.2 martin
3104 1.1.1.2.4.2 martin #define _kshiftri_mask64(X, Y) \
3105 1.1.1.2.4.2 martin ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y)))
3106 1.1.1.2.4.2 martin
3107 1.1 mrg #define _mm512_alignr_epi8(X, Y, N) \
3108 1.1 mrg ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \
3109 1.1 mrg (__v8di)(__m512i)(Y), \
3110 1.1 mrg (int)(N * 8)))
3111 1.1 mrg
3112 1.1 mrg #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \
3113 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
3114 1.1 mrg (__v8di)(__m512i)(Y), (int)(N * 8), \
3115 1.1 mrg (__v8di)(__m512i)(W), (__mmask64)(U)))
3116 1.1 mrg
3117 1.1 mrg #define _mm512_maskz_alignr_epi8(U, X, Y, N) \
3118 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
3119 1.1.1.2.4.2 martin (__v8di)(__m512i)(Y), (int)(N * 8), \
3120 1.1.1.2.4.2 martin (__v8di)(__m512i) \
3121 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3122 1.1.1.2.4.2 martin (__mmask64)(U)))
3123 1.1 mrg
3124 1.1 mrg #define _mm512_dbsad_epu8(X, Y, C) \
3125 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
3126 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
3127 1.1.1.2.4.2 martin (__v32hi)(__m512i) \
3128 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3129 1.1 mrg (__mmask32)-1))
3130 1.1 mrg
3131 1.1 mrg #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \
3132 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
3133 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
3134 1.1 mrg (__v32hi)(__m512i)(W), \
3135 1.1 mrg (__mmask32)(U)))
3136 1.1 mrg
3137 1.1 mrg #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \
3138 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
3139 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
3140 1.1.1.2.4.2 martin (__v32hi)(__m512i) \
3141 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3142 1.1 mrg (__mmask32)(U)))
3143 1.1 mrg
3144 1.1 mrg #define _mm512_srli_epi16(A, B) \
3145 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
3146 1.1.1.2.4.2 martin (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
3147 1.1 mrg
3148 1.1 mrg #define _mm512_mask_srli_epi16(W, U, A, B) \
3149 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
3150 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
3151 1.1 mrg
3152 1.1 mrg #define _mm512_maskz_srli_epi16(U, A, B) \
3153 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
3154 1.1.1.2.4.2 martin (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
3155 1.1 mrg
3156 1.1 mrg #define _mm512_slli_epi16(X, C) \
3157 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3158 1.1.1.2.4.2 martin (__v32hi)(__m512i)_mm512_setzero_si512 (), \
3159 1.1 mrg (__mmask32)-1))
3160 1.1 mrg
3161 1.1 mrg #define _mm512_mask_slli_epi16(W, U, X, C) \
3162 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3163 1.1 mrg (__v32hi)(__m512i)(W),\
3164 1.1 mrg (__mmask32)(U)))
3165 1.1 mrg
3166 1.1 mrg #define _mm512_maskz_slli_epi16(U, X, C) \
3167 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3168 1.1.1.2.4.2 martin (__v32hi)(__m512i)_mm512_setzero_si512 (), \
3169 1.1 mrg (__mmask32)(U)))
3170 1.1 mrg
3171 1.1 mrg #define _mm512_shufflehi_epi16(A, B) \
3172 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3173 1.1.1.2.4.2 martin (__v32hi)(__m512i) \
3174 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3175 1.1 mrg (__mmask32)-1))
3176 1.1 mrg
3177 1.1 mrg #define _mm512_mask_shufflehi_epi16(W, U, A, B) \
3178 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3179 1.1 mrg (__v32hi)(__m512i)(W), \
3180 1.1 mrg (__mmask32)(U)))
3181 1.1 mrg
3182 1.1 mrg #define _mm512_maskz_shufflehi_epi16(U, A, B) \
3183 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3184 1.1.1.2.4.2 martin (__v32hi)(__m512i) \
3185 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3186 1.1 mrg (__mmask32)(U)))
3187 1.1 mrg
3188 1.1 mrg #define _mm512_shufflelo_epi16(A, B) \
3189 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3190 1.1.1.2.4.2 martin (__v32hi)(__m512i) \
3191 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3192 1.1 mrg (__mmask32)-1))
3193 1.1 mrg
3194 1.1 mrg #define _mm512_mask_shufflelo_epi16(W, U, A, B) \
3195 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3196 1.1 mrg (__v32hi)(__m512i)(W), \
3197 1.1 mrg (__mmask32)(U)))
3198 1.1 mrg
3199 1.1 mrg #define _mm512_maskz_shufflelo_epi16(U, A, B) \
3200 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3201 1.1.1.2.4.2 martin (__v32hi)(__m512i) \
3202 1.1.1.2.4.2 martin _mm512_setzero_si512 (), \
3203 1.1 mrg (__mmask32)(U)))
3204 1.1 mrg
3205 1.1 mrg #define _mm512_srai_epi16(A, B) \
3206 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
3207 1.1.1.2.4.2 martin (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
3208 1.1 mrg
3209 1.1 mrg #define _mm512_mask_srai_epi16(W, U, A, B) \
3210 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
3211 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
3212 1.1 mrg
3213 1.1 mrg #define _mm512_maskz_srai_epi16(U, A, B) \
3214 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
3215 1.1.1.2.4.2 martin (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
3216 1.1 mrg
3217 1.1 mrg #define _mm512_mask_blend_epi16(__U, __A, __W) \
3218 1.1 mrg ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \
3219 1.1 mrg (__v32hi) (__W), \
3220 1.1 mrg (__mmask32) (__U)))
3221 1.1 mrg
3222 1.1 mrg #define _mm512_mask_blend_epi8(__U, __A, __W) \
3223 1.1 mrg ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \
3224 1.1 mrg (__v64qi) (__W), \
3225 1.1 mrg (__mmask64) (__U)))
3226 1.1 mrg
3227 1.1 mrg #define _mm512_cmp_epi16_mask(X, Y, P) \
3228 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
3229 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3230 1.1 mrg (__mmask32)(-1)))
3231 1.1 mrg
3232 1.1 mrg #define _mm512_cmp_epi8_mask(X, Y, P) \
3233 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
3234 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3235 1.1 mrg (__mmask64)(-1)))
3236 1.1 mrg
3237 1.1 mrg #define _mm512_cmp_epu16_mask(X, Y, P) \
3238 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
3239 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3240 1.1 mrg (__mmask32)(-1)))
3241 1.1 mrg
3242 1.1 mrg #define _mm512_cmp_epu8_mask(X, Y, P) \
3243 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
3244 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3245 1.1 mrg (__mmask64)(-1)))
3246 1.1 mrg
3247 1.1 mrg #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \
3248 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
3249 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3250 1.1 mrg (__mmask32)(M)))
3251 1.1 mrg
3252 1.1 mrg #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \
3253 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
3254 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3255 1.1 mrg (__mmask64)(M)))
3256 1.1 mrg
3257 1.1 mrg #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \
3258 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
3259 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3260 1.1 mrg (__mmask32)(M)))
3261 1.1 mrg
3262 1.1 mrg #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \
3263 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
3264 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3265 1.1 mrg (__mmask64)(M)))
3266 1.1 mrg
3267 1.1 mrg #define _mm512_bslli_epi128(A, N) \
3268 1.1 mrg ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
3269 1.1 mrg
3270 1.1 mrg #define _mm512_bsrli_epi128(A, N) \
3271 1.1 mrg ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
3272 1.1 mrg
3273 1.1 mrg #endif
3274 1.1 mrg
3275 1.1 mrg #ifdef __DISABLE_AVX512BW__
3276 1.1 mrg #undef __DISABLE_AVX512BW__
3277 1.1 mrg #pragma GCC pop_options
3278 1.1 mrg #endif /* __DISABLE_AVX512BW__ */
3279 1.1 mrg
3280 1.1 mrg #endif /* _AVX512BWINTRIN_H_INCLUDED */
3281