• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
2  *
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  * THE SOFTWARE.
21  *
22  *===-----------------------------------------------------------------------===
23  */
24 #ifndef __IMMINTRIN_H
25 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27 
28 #ifndef __AVX512BWINTRIN_H
29 #define __AVX512BWINTRIN_H
30 
31 typedef unsigned int __mmask32;
32 typedef unsigned long long __mmask64;
33 
34 /* Define the default attributes for the functions in this file. */
35 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
36 
37 static  __inline __m512i __DEFAULT_FN_ATTRS
_mm512_setzero_qi(void)38 _mm512_setzero_qi(void) {
39   return (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
40                              0, 0, 0, 0, 0, 0, 0, 0,
41                              0, 0, 0, 0, 0, 0, 0, 0,
42                              0, 0, 0, 0, 0, 0, 0, 0,
43                              0, 0, 0, 0, 0, 0, 0, 0,
44                              0, 0, 0, 0, 0, 0, 0, 0,
45                              0, 0, 0, 0, 0, 0, 0, 0,
46                              0, 0, 0, 0, 0, 0, 0, 0 };
47 }
48 
49 static  __inline __m512i __DEFAULT_FN_ATTRS
_mm512_setzero_hi(void)50 _mm512_setzero_hi(void) {
51   return (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
52                              0, 0, 0, 0, 0, 0, 0, 0,
53                              0, 0, 0, 0, 0, 0, 0, 0,
54                              0, 0, 0, 0, 0, 0, 0, 0 };
55 }
56 
57 /* Integer compare */
58 
59 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpeq_epi8_mask(__m512i __a,__m512i __b)60 _mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
61   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
62                                                    (__mmask64)-1);
63 }
64 
65 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpeq_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)66 _mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
67   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
68                                                    __u);
69 }
70 
71 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpeq_epu8_mask(__m512i __a,__m512i __b)72 _mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
73   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
74                                                  (__mmask64)-1);
75 }
76 
77 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpeq_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)78 _mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
79   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
80                                                  __u);
81 }
82 
83 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpeq_epi16_mask(__m512i __a,__m512i __b)84 _mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
85   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
86                                                    (__mmask32)-1);
87 }
88 
89 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpeq_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)90 _mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
91   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
92                                                    __u);
93 }
94 
95 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpeq_epu16_mask(__m512i __a,__m512i __b)96 _mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
97   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
98                                                  (__mmask32)-1);
99 }
100 
101 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpeq_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)102 _mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
103   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
104                                                  __u);
105 }
106 
107 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpge_epi8_mask(__m512i __a,__m512i __b)108 _mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
109   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
110                                                 (__mmask64)-1);
111 }
112 
113 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpge_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)114 _mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
115   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
116                                                 __u);
117 }
118 
119 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpge_epu8_mask(__m512i __a,__m512i __b)120 _mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
121   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
122                                                  (__mmask64)-1);
123 }
124 
125 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpge_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)126 _mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
127   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
128                                                  __u);
129 }
130 
131 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpge_epi16_mask(__m512i __a,__m512i __b)132 _mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
133   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
134                                                 (__mmask32)-1);
135 }
136 
137 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpge_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)138 _mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
139   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
140                                                 __u);
141 }
142 
143 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpge_epu16_mask(__m512i __a,__m512i __b)144 _mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
145   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
146                                                  (__mmask32)-1);
147 }
148 
149 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpge_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)150 _mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
151   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
152                                                  __u);
153 }
154 
155 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpgt_epi8_mask(__m512i __a,__m512i __b)156 _mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
157   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
158                                                    (__mmask64)-1);
159 }
160 
161 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpgt_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)162 _mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
163   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
164                                                    __u);
165 }
166 
167 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpgt_epu8_mask(__m512i __a,__m512i __b)168 _mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
169   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
170                                                  (__mmask64)-1);
171 }
172 
173 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpgt_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)174 _mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
175   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
176                                                  __u);
177 }
178 
179 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpgt_epi16_mask(__m512i __a,__m512i __b)180 _mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
181   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
182                                                    (__mmask32)-1);
183 }
184 
185 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpgt_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)186 _mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
187   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
188                                                    __u);
189 }
190 
191 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpgt_epu16_mask(__m512i __a,__m512i __b)192 _mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
193   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
194                                                  (__mmask32)-1);
195 }
196 
197 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpgt_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)198 _mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
199   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
200                                                  __u);
201 }
202 
203 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmple_epi8_mask(__m512i __a,__m512i __b)204 _mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
205   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
206                                                 (__mmask64)-1);
207 }
208 
209 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmple_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)210 _mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
211   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
212                                                 __u);
213 }
214 
215 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmple_epu8_mask(__m512i __a,__m512i __b)216 _mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
217   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
218                                                  (__mmask64)-1);
219 }
220 
221 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmple_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)222 _mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
223   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
224                                                  __u);
225 }
226 
227 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmple_epi16_mask(__m512i __a,__m512i __b)228 _mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
229   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
230                                                 (__mmask32)-1);
231 }
232 
233 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmple_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)234 _mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
235   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
236                                                 __u);
237 }
238 
239 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmple_epu16_mask(__m512i __a,__m512i __b)240 _mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
241   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
242                                                  (__mmask32)-1);
243 }
244 
245 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmple_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)246 _mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
247   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
248                                                  __u);
249 }
250 
251 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmplt_epi8_mask(__m512i __a,__m512i __b)252 _mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
253   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
254                                                 (__mmask64)-1);
255 }
256 
257 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmplt_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)258 _mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
259   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
260                                                 __u);
261 }
262 
263 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmplt_epu8_mask(__m512i __a,__m512i __b)264 _mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
265   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
266                                                  (__mmask64)-1);
267 }
268 
269 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmplt_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)270 _mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
271   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
272                                                  __u);
273 }
274 
275 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmplt_epi16_mask(__m512i __a,__m512i __b)276 _mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
277   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
278                                                 (__mmask32)-1);
279 }
280 
281 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmplt_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)282 _mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
283   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
284                                                 __u);
285 }
286 
287 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmplt_epu16_mask(__m512i __a,__m512i __b)288 _mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
289   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
290                                                  (__mmask32)-1);
291 }
292 
293 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmplt_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)294 _mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
295   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
296                                                  __u);
297 }
298 
299 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpneq_epi8_mask(__m512i __a,__m512i __b)300 _mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
301   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
302                                                 (__mmask64)-1);
303 }
304 
305 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpneq_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)306 _mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
307   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
308                                                 __u);
309 }
310 
311 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_cmpneq_epu8_mask(__m512i __a,__m512i __b)312 _mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
313   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
314                                                  (__mmask64)-1);
315 }
316 
317 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_cmpneq_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)318 _mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
319   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
320                                                  __u);
321 }
322 
323 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpneq_epi16_mask(__m512i __a,__m512i __b)324 _mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
325   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
326                                                 (__mmask32)-1);
327 }
328 
329 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpneq_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)330 _mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
331   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
332                                                 __u);
333 }
334 
335 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_cmpneq_epu16_mask(__m512i __a,__m512i __b)336 _mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
337   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
338                                                  (__mmask32)-1);
339 }
340 
341 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_cmpneq_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)342 _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
343   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
344                                                  __u);
345 }
346 
347 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_add_epi8(__m512i __A,__m512i __B)348 _mm512_add_epi8 (__m512i __A, __m512i __B) {
349   return (__m512i) ((__v64qu) __A + (__v64qu) __B);
350 }
351 
352 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_add_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)353 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
354   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
355              (__v64qi) __B,
356              (__v64qi) __W,
357              (__mmask64) __U);
358 }
359 
360 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_add_epi8(__mmask64 __U,__m512i __A,__m512i __B)361 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
362   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
363              (__v64qi) __B,
364              (__v64qi) _mm512_setzero_qi(),
365              (__mmask64) __U);
366 }
367 
368 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_sub_epi8(__m512i __A,__m512i __B)369 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
370   return (__m512i) ((__v64qu) __A - (__v64qu) __B);
371 }
372 
373 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_sub_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)374 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
375   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
376              (__v64qi) __B,
377              (__v64qi) __W,
378              (__mmask64) __U);
379 }
380 
381 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_sub_epi8(__mmask64 __U,__m512i __A,__m512i __B)382 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
383   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
384              (__v64qi) __B,
385              (__v64qi) _mm512_setzero_qi(),
386              (__mmask64) __U);
387 }
388 
389 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_add_epi16(__m512i __A,__m512i __B)390 _mm512_add_epi16 (__m512i __A, __m512i __B) {
391   return (__m512i) ((__v32hu) __A + (__v32hu) __B);
392 }
393 
394 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_add_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)395 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
396   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
397              (__v32hi) __B,
398              (__v32hi) __W,
399              (__mmask32) __U);
400 }
401 
402 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_add_epi16(__mmask32 __U,__m512i __A,__m512i __B)403 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
404   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
405              (__v32hi) __B,
406              (__v32hi) _mm512_setzero_hi(),
407              (__mmask32) __U);
408 }
409 
410 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_sub_epi16(__m512i __A,__m512i __B)411 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
412   return (__m512i) ((__v32hu) __A - (__v32hu) __B);
413 }
414 
415 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_sub_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)416 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
417   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
418              (__v32hi) __B,
419              (__v32hi) __W,
420              (__mmask32) __U);
421 }
422 
423 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_sub_epi16(__mmask32 __U,__m512i __A,__m512i __B)424 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
425   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
426              (__v32hi) __B,
427              (__v32hi) _mm512_setzero_hi(),
428              (__mmask32) __U);
429 }
430 
431 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mullo_epi16(__m512i __A,__m512i __B)432 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
433   return (__m512i) ((__v32hu) __A * (__v32hu) __B);
434 }
435 
436 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_mullo_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)437 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
438   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
439               (__v32hi) __B,
440               (__v32hi) __W,
441               (__mmask32) __U);
442 }
443 
444 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_mullo_epi16(__mmask32 __U,__m512i __A,__m512i __B)445 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
446   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
447               (__v32hi) __B,
448               (__v32hi) _mm512_setzero_hi(),
449               (__mmask32) __U);
450 }
451 
452 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_blend_epi8(__mmask64 __U,__m512i __A,__m512i __W)453 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
454 {
455   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
456               (__v64qi) __W,
457               (__v64qi) __A);
458 }
459 
460 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_blend_epi16(__mmask32 __U,__m512i __A,__m512i __W)461 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
462 {
463   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
464               (__v32hi) __W,
465               (__v32hi) __A);
466 }
467 
468 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_abs_epi8(__m512i __A)469 _mm512_abs_epi8 (__m512i __A)
470 {
471   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
472               (__v64qi) _mm512_setzero_qi(),
473               (__mmask64) -1);
474 }
475 
476 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_abs_epi8(__m512i __W,__mmask64 __U,__m512i __A)477 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
478 {
479   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
480               (__v64qi) __W,
481               (__mmask64) __U);
482 }
483 
484 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_abs_epi8(__mmask64 __U,__m512i __A)485 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
486 {
487   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
488               (__v64qi) _mm512_setzero_qi(),
489               (__mmask64) __U);
490 }
491 
492 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_abs_epi16(__m512i __A)493 _mm512_abs_epi16 (__m512i __A)
494 {
495   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
496               (__v32hi) _mm512_setzero_hi(),
497               (__mmask32) -1);
498 }
499 
500 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_abs_epi16(__m512i __W,__mmask32 __U,__m512i __A)501 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
502 {
503   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
504               (__v32hi) __W,
505               (__mmask32) __U);
506 }
507 
508 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_abs_epi16(__mmask32 __U,__m512i __A)509 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
510 {
511   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
512               (__v32hi) _mm512_setzero_hi(),
513               (__mmask32) __U);
514 }
515 
516 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_packs_epi32(__m512i __A,__m512i __B)517 _mm512_packs_epi32 (__m512i __A, __m512i __B)
518 {
519   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
520               (__v16si) __B,
521               (__v32hi) _mm512_setzero_hi(),
522               (__mmask32) -1);
523 }
524 
525 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_packs_epi32(__mmask32 __M,__m512i __A,__m512i __B)526 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
527 {
528   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
529               (__v16si) __B,
530               (__v32hi) _mm512_setzero_hi(),
531               __M);
532 }
533 
534 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_packs_epi32(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)535 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
536        __m512i __B)
537 {
538   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
539               (__v16si) __B,
540               (__v32hi) __W,
541               __M);
542 }
543 
544 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_packs_epi16(__m512i __A,__m512i __B)545 _mm512_packs_epi16 (__m512i __A, __m512i __B)
546 {
547   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
548               (__v32hi) __B,
549               (__v64qi) _mm512_setzero_qi(),
550               (__mmask64) -1);
551 }
552 
553 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_packs_epi16(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)554 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
555        __m512i __B)
556 {
557   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
558               (__v32hi) __B,
559               (__v64qi) __W,
560               (__mmask64) __M);
561 }
562 
563 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_packs_epi16(__mmask64 __M,__m512i __A,__m512i __B)564 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
565 {
566   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
567               (__v32hi) __B,
568               (__v64qi) _mm512_setzero_qi(),
569               __M);
570 }
571 
572 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_packus_epi32(__m512i __A,__m512i __B)573 _mm512_packus_epi32 (__m512i __A, __m512i __B)
574 {
575   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
576               (__v16si) __B,
577               (__v32hi) _mm512_setzero_hi(),
578               (__mmask32) -1);
579 }
580 
581 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_packus_epi32(__mmask32 __M,__m512i __A,__m512i __B)582 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
583 {
584   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
585               (__v16si) __B,
586               (__v32hi) _mm512_setzero_hi(),
587               __M);
588 }
589 
590 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_packus_epi32(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)591 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
592         __m512i __B)
593 {
594   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
595               (__v16si) __B,
596               (__v32hi) __W,
597               __M);
598 }
599 
600 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_packus_epi16(__m512i __A,__m512i __B)601 _mm512_packus_epi16 (__m512i __A, __m512i __B)
602 {
603   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
604               (__v32hi) __B,
605               (__v64qi) _mm512_setzero_qi(),
606               (__mmask64) -1);
607 }
608 
609 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_packus_epi16(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)610 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
611         __m512i __B)
612 {
613   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
614               (__v32hi) __B,
615               (__v64qi) __W,
616               (__mmask64) __M);
617 }
618 
619 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_packus_epi16(__mmask64 __M,__m512i __A,__m512i __B)620 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
621 {
622   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
623               (__v32hi) __B,
624               (__v64qi) _mm512_setzero_qi(),
625               (__mmask64) __M);
626 }
627 
628 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_adds_epi8(__m512i __A,__m512i __B)629 _mm512_adds_epi8 (__m512i __A, __m512i __B)
630 {
631   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
632               (__v64qi) __B,
633               (__v64qi) _mm512_setzero_qi(),
634               (__mmask64) -1);
635 }
636 
637 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_adds_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)638 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
639            __m512i __B)
640 {
641   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
642               (__v64qi) __B,
643               (__v64qi) __W,
644               (__mmask64) __U);
645 }
646 
647 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_adds_epi8(__mmask64 __U,__m512i __A,__m512i __B)648 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
649 {
650   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
651               (__v64qi) __B,
652               (__v64qi) _mm512_setzero_qi(),
653               (__mmask64) __U);
654 }
655 
656 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_adds_epi16(__m512i __A,__m512i __B)657 _mm512_adds_epi16 (__m512i __A, __m512i __B)
658 {
659   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
660               (__v32hi) __B,
661               (__v32hi) _mm512_setzero_hi(),
662               (__mmask32) -1);
663 }
664 
665 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_adds_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)666 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
667       __m512i __B)
668 {
669   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
670               (__v32hi) __B,
671               (__v32hi) __W,
672               (__mmask32) __U);
673 }
674 
675 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_adds_epi16(__mmask32 __U,__m512i __A,__m512i __B)676 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
677 {
678   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
679               (__v32hi) __B,
680               (__v32hi) _mm512_setzero_hi(),
681               (__mmask32) __U);
682 }
683 
684 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_adds_epu8(__m512i __A,__m512i __B)685 _mm512_adds_epu8 (__m512i __A, __m512i __B)
686 {
687   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
688               (__v64qi) __B,
689               (__v64qi) _mm512_setzero_qi(),
690               (__mmask64) -1);
691 }
692 
693 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_adds_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)694 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
695            __m512i __B)
696 {
697   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
698               (__v64qi) __B,
699               (__v64qi) __W,
700               (__mmask64) __U);
701 }
702 
703 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_adds_epu8(__mmask64 __U,__m512i __A,__m512i __B)704 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
705 {
706   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
707               (__v64qi) __B,
708               (__v64qi) _mm512_setzero_qi(),
709               (__mmask64) __U);
710 }
711 
712 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_adds_epu16(__m512i __A,__m512i __B)713 _mm512_adds_epu16 (__m512i __A, __m512i __B)
714 {
715   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
716               (__v32hi) __B,
717               (__v32hi) _mm512_setzero_hi(),
718               (__mmask32) -1);
719 }
720 
721 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_adds_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)722 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
723       __m512i __B)
724 {
725   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
726               (__v32hi) __B,
727               (__v32hi) __W,
728               (__mmask32) __U);
729 }
730 
731 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_adds_epu16(__mmask32 __U,__m512i __A,__m512i __B)732 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
733 {
734   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
735               (__v32hi) __B,
736               (__v32hi) _mm512_setzero_hi(),
737               (__mmask32) __U);
738 }
739 
740 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_avg_epu8(__m512i __A,__m512i __B)741 _mm512_avg_epu8 (__m512i __A, __m512i __B)
742 {
743   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
744               (__v64qi) __B,
745               (__v64qi) _mm512_setzero_qi(),
746               (__mmask64) -1);
747 }
748 
749 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_avg_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)750 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
751           __m512i __B)
752 {
753   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
754               (__v64qi) __B,
755               (__v64qi) __W,
756               (__mmask64) __U);
757 }
758 
759 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_avg_epu8(__mmask64 __U,__m512i __A,__m512i __B)760 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
761 {
762   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
763               (__v64qi) __B,
764               (__v64qi) _mm512_setzero_qi(),
765               (__mmask64) __U);
766 }
767 
768 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_avg_epu16(__m512i __A,__m512i __B)769 _mm512_avg_epu16 (__m512i __A, __m512i __B)
770 {
771   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
772               (__v32hi) __B,
773               (__v32hi) _mm512_setzero_hi(),
774               (__mmask32) -1);
775 }
776 
777 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_avg_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)778 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
779            __m512i __B)
780 {
781   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
782               (__v32hi) __B,
783               (__v32hi) __W,
784               (__mmask32) __U);
785 }
786 
787 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_avg_epu16(__mmask32 __U,__m512i __A,__m512i __B)788 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
789 {
790   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
791               (__v32hi) __B,
792               (__v32hi) _mm512_setzero_hi(),
793               (__mmask32) __U);
794 }
795 
796 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_max_epi8(__m512i __A,__m512i __B)797 _mm512_max_epi8 (__m512i __A, __m512i __B)
798 {
799   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
800               (__v64qi) __B,
801               (__v64qi) _mm512_setzero_qi(),
802               (__mmask64) -1);
803 }
804 
805 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_max_epi8(__mmask64 __M,__m512i __A,__m512i __B)806 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
807 {
808   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
809               (__v64qi) __B,
810               (__v64qi) _mm512_setzero_qi(),
811               (__mmask64) __M);
812 }
813 
814 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_max_epi8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)815 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
816           __m512i __B)
817 {
818   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
819               (__v64qi) __B,
820               (__v64qi) __W,
821               (__mmask64) __M);
822 }
823 
824 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_max_epi16(__m512i __A,__m512i __B)825 _mm512_max_epi16 (__m512i __A, __m512i __B)
826 {
827   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
828               (__v32hi) __B,
829               (__v32hi) _mm512_setzero_hi(),
830               (__mmask32) -1);
831 }
832 
833 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_max_epi16(__mmask32 __M,__m512i __A,__m512i __B)834 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
835 {
836   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
837               (__v32hi) __B,
838               (__v32hi) _mm512_setzero_hi(),
839               (__mmask32) __M);
840 }
841 
842 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_max_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)843 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
844            __m512i __B)
845 {
846   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
847               (__v32hi) __B,
848               (__v32hi) __W,
849               (__mmask32) __M);
850 }
851 
852 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_max_epu8(__m512i __A,__m512i __B)853 _mm512_max_epu8 (__m512i __A, __m512i __B)
854 {
855   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
856               (__v64qi) __B,
857               (__v64qi) _mm512_setzero_qi(),
858               (__mmask64) -1);
859 }
860 
861 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_max_epu8(__mmask64 __M,__m512i __A,__m512i __B)862 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
863 {
864   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
865               (__v64qi) __B,
866               (__v64qi) _mm512_setzero_qi(),
867               (__mmask64) __M);
868 }
869 
870 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_max_epu8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)871 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
872           __m512i __B)
873 {
874   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
875               (__v64qi) __B,
876               (__v64qi) __W,
877               (__mmask64) __M);
878 }
879 
880 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_max_epu16(__m512i __A,__m512i __B)881 _mm512_max_epu16 (__m512i __A, __m512i __B)
882 {
883   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
884               (__v32hi) __B,
885               (__v32hi) _mm512_setzero_hi(),
886               (__mmask32) -1);
887 }
888 
889 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_max_epu16(__mmask32 __M,__m512i __A,__m512i __B)890 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
891 {
892   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
893               (__v32hi) __B,
894               (__v32hi) _mm512_setzero_hi(),
895               (__mmask32) __M);
896 }
897 
898 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_max_epu16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)899 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
900            __m512i __B)
901 {
902   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
903               (__v32hi) __B,
904               (__v32hi) __W,
905               (__mmask32) __M);
906 }
907 
908 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_min_epi8(__m512i __A,__m512i __B)909 _mm512_min_epi8 (__m512i __A, __m512i __B)
910 {
911   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
912               (__v64qi) __B,
913               (__v64qi) _mm512_setzero_qi(),
914               (__mmask64) -1);
915 }
916 
917 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_min_epi8(__mmask64 __M,__m512i __A,__m512i __B)918 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
919 {
920   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
921               (__v64qi) __B,
922               (__v64qi) _mm512_setzero_qi(),
923               (__mmask64) __M);
924 }
925 
926 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_min_epi8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)927 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
928           __m512i __B)
929 {
930   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
931               (__v64qi) __B,
932               (__v64qi) __W,
933               (__mmask64) __M);
934 }
935 
936 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_min_epi16(__m512i __A,__m512i __B)937 _mm512_min_epi16 (__m512i __A, __m512i __B)
938 {
939   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
940               (__v32hi) __B,
941               (__v32hi) _mm512_setzero_hi(),
942               (__mmask32) -1);
943 }
944 
945 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_min_epi16(__mmask32 __M,__m512i __A,__m512i __B)946 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
947 {
948   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
949               (__v32hi) __B,
950               (__v32hi) _mm512_setzero_hi(),
951               (__mmask32) __M);
952 }
953 
954 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_min_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)955 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
956            __m512i __B)
957 {
958   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
959               (__v32hi) __B,
960               (__v32hi) __W,
961               (__mmask32) __M);
962 }
963 
964 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_min_epu8(__m512i __A,__m512i __B)965 _mm512_min_epu8 (__m512i __A, __m512i __B)
966 {
967   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
968               (__v64qi) __B,
969               (__v64qi) _mm512_setzero_qi(),
970               (__mmask64) -1);
971 }
972 
973 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_min_epu8(__mmask64 __M,__m512i __A,__m512i __B)974 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
975 {
976   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
977               (__v64qi) __B,
978               (__v64qi) _mm512_setzero_qi(),
979               (__mmask64) __M);
980 }
981 
982 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_min_epu8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)983 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
984           __m512i __B)
985 {
986   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
987               (__v64qi) __B,
988               (__v64qi) __W,
989               (__mmask64) __M);
990 }
991 
992 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_min_epu16(__m512i __A,__m512i __B)993 _mm512_min_epu16 (__m512i __A, __m512i __B)
994 {
995   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
996               (__v32hi) __B,
997               (__v32hi) _mm512_setzero_hi(),
998               (__mmask32) -1);
999 }
1000 
1001 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_min_epu16(__mmask32 __M,__m512i __A,__m512i __B)1002 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1003 {
1004   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1005               (__v32hi) __B,
1006               (__v32hi) _mm512_setzero_hi(),
1007               (__mmask32) __M);
1008 }
1009 
1010 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_min_epu16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1011 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1012            __m512i __B)
1013 {
1014   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1015               (__v32hi) __B,
1016               (__v32hi) __W,
1017               (__mmask32) __M);
1018 }
1019 
1020 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_shuffle_epi8(__m512i __A,__m512i __B)1021 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1022 {
1023   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1024               (__v64qi) __B,
1025               (__v64qi) _mm512_setzero_qi(),
1026               (__mmask64) -1);
1027 }
1028 
1029 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_shuffle_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1030 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1031         __m512i __B)
1032 {
1033   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1034               (__v64qi) __B,
1035               (__v64qi) __W,
1036               (__mmask64) __U);
1037 }
1038 
1039 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_shuffle_epi8(__mmask64 __U,__m512i __A,__m512i __B)1040 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1041 {
1042   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1043               (__v64qi) __B,
1044               (__v64qi) _mm512_setzero_qi(),
1045               (__mmask64) __U);
1046 }
1047 
1048 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_subs_epi8(__m512i __A,__m512i __B)1049 _mm512_subs_epi8 (__m512i __A, __m512i __B)
1050 {
1051   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1052               (__v64qi) __B,
1053               (__v64qi) _mm512_setzero_qi(),
1054               (__mmask64) -1);
1055 }
1056 
1057 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_subs_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1058 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1059            __m512i __B)
1060 {
1061   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1062               (__v64qi) __B,
1063               (__v64qi) __W,
1064               (__mmask64) __U);
1065 }
1066 
1067 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_subs_epi8(__mmask64 __U,__m512i __A,__m512i __B)1068 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1069 {
1070   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1071               (__v64qi) __B,
1072               (__v64qi) _mm512_setzero_qi(),
1073               (__mmask64) __U);
1074 }
1075 
1076 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_subs_epi16(__m512i __A,__m512i __B)1077 _mm512_subs_epi16 (__m512i __A, __m512i __B)
1078 {
1079   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1080               (__v32hi) __B,
1081               (__v32hi) _mm512_setzero_hi(),
1082               (__mmask32) -1);
1083 }
1084 
1085 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_subs_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1086 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1087       __m512i __B)
1088 {
1089   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1090               (__v32hi) __B,
1091               (__v32hi) __W,
1092               (__mmask32) __U);
1093 }
1094 
1095 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_subs_epi16(__mmask32 __U,__m512i __A,__m512i __B)1096 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1097 {
1098   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1099               (__v32hi) __B,
1100               (__v32hi) _mm512_setzero_hi(),
1101               (__mmask32) __U);
1102 }
1103 
1104 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_subs_epu8(__m512i __A,__m512i __B)1105 _mm512_subs_epu8 (__m512i __A, __m512i __B)
1106 {
1107   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1108               (__v64qi) __B,
1109               (__v64qi) _mm512_setzero_qi(),
1110               (__mmask64) -1);
1111 }
1112 
1113 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_subs_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1114 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1115            __m512i __B)
1116 {
1117   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1118               (__v64qi) __B,
1119               (__v64qi) __W,
1120               (__mmask64) __U);
1121 }
1122 
1123 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_subs_epu8(__mmask64 __U,__m512i __A,__m512i __B)1124 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1125 {
1126   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1127               (__v64qi) __B,
1128               (__v64qi) _mm512_setzero_qi(),
1129               (__mmask64) __U);
1130 }
1131 
1132 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_subs_epu16(__m512i __A,__m512i __B)1133 _mm512_subs_epu16 (__m512i __A, __m512i __B)
1134 {
1135   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1136               (__v32hi) __B,
1137               (__v32hi) _mm512_setzero_hi(),
1138               (__mmask32) -1);
1139 }
1140 
1141 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_subs_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1142 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1143       __m512i __B)
1144 {
1145   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1146               (__v32hi) __B,
1147               (__v32hi) __W,
1148               (__mmask32) __U);
1149 }
1150 
1151 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_subs_epu16(__mmask32 __U,__m512i __A,__m512i __B)1152 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1153 {
1154   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1155               (__v32hi) __B,
1156               (__v32hi) _mm512_setzero_hi(),
1157               (__mmask32) __U);
1158 }
1159 
1160 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask2_permutex2var_epi16(__m512i __A,__m512i __I,__mmask32 __U,__m512i __B)1161 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1162          __mmask32 __U, __m512i __B)
1163 {
1164   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1165               (__v32hi) __I /* idx */ ,
1166               (__v32hi) __B,
1167               (__mmask32) __U);
1168 }
1169 
1170 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_permutex2var_epi16(__m512i __A,__m512i __I,__m512i __B)1171 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1172 {
1173   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1174               (__v32hi) __A,
1175               (__v32hi) __B,
1176               (__mmask32) -1);
1177 }
1178 
1179 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_permutex2var_epi16(__m512i __A,__mmask32 __U,__m512i __I,__m512i __B)1180 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1181         __m512i __I, __m512i __B)
1182 {
1183   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1184               (__v32hi) __A,
1185               (__v32hi) __B,
1186               (__mmask32) __U);
1187 }
1188 
1189 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_permutex2var_epi16(__mmask32 __U,__m512i __A,__m512i __I,__m512i __B)1190 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1191          __m512i __I, __m512i __B)
1192 {
1193   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1194               /* idx */ ,
1195               (__v32hi) __A,
1196               (__v32hi) __B,
1197               (__mmask32) __U);
1198 }
1199 
1200 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mulhrs_epi16(__m512i __A,__m512i __B)1201 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
1202 {
1203   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1204                 (__v32hi) __B,
1205                 (__v32hi) _mm512_setzero_hi(),
1206                 (__mmask32) -1);
1207 }
1208 
1209 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_mulhrs_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1210 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1211         __m512i __B)
1212 {
1213   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1214                 (__v32hi) __B,
1215                 (__v32hi) __W,
1216                 (__mmask32) __U);
1217 }
1218 
1219 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_mulhrs_epi16(__mmask32 __U,__m512i __A,__m512i __B)1220 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1221 {
1222   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1223                 (__v32hi) __B,
1224                 (__v32hi) _mm512_setzero_hi(),
1225                 (__mmask32) __U);
1226 }
1227 
1228 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mulhi_epi16(__m512i __A,__m512i __B)1229 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
1230 {
1231   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1232               (__v32hi) __B,
1233               (__v32hi) _mm512_setzero_hi(),
1234               (__mmask32) -1);
1235 }
1236 
1237 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_mulhi_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1238 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1239        __m512i __B)
1240 {
1241   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1242               (__v32hi) __B,
1243               (__v32hi) __W,
1244               (__mmask32) __U);
1245 }
1246 
1247 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_mulhi_epi16(__mmask32 __U,__m512i __A,__m512i __B)1248 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1249 {
1250   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1251               (__v32hi) __B,
1252               (__v32hi) _mm512_setzero_hi(),
1253               (__mmask32) __U);
1254 }
1255 
1256 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mulhi_epu16(__m512i __A,__m512i __B)1257 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
1258 {
1259   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1260                (__v32hi) __B,
1261                (__v32hi) _mm512_setzero_hi(),
1262                (__mmask32) -1);
1263 }
1264 
1265 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_mulhi_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1266 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1267        __m512i __B)
1268 {
1269   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1270                (__v32hi) __B,
1271                (__v32hi) __W,
1272                (__mmask32) __U);
1273 }
1274 
1275 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_mulhi_epu16(__mmask32 __U,__m512i __A,__m512i __B)1276 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1277 {
1278   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1279                (__v32hi) __B,
1280                (__v32hi) _mm512_setzero_hi(),
1281                (__mmask32) __U);
1282 }
1283 
1284 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maddubs_epi16(__m512i __X,__m512i __Y)1285 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
1286   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1287                  (__v64qi) __Y,
1288                  (__v32hi) _mm512_setzero_hi(),
1289                  (__mmask32) -1);
1290 }
1291 
1292 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_maddubs_epi16(__m512i __W,__mmask32 __U,__m512i __X,__m512i __Y)1293 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1294          __m512i __Y) {
1295   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1296                  (__v64qi) __Y,
1297                  (__v32hi) __W,
1298                  (__mmask32) __U);
1299 }
1300 
1301 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_maddubs_epi16(__mmask32 __U,__m512i __X,__m512i __Y)1302 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
1303   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1304                  (__v64qi) __Y,
1305                  (__v32hi) _mm512_setzero_hi(),
1306                  (__mmask32) __U);
1307 }
1308 
1309 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_madd_epi16(__m512i __A,__m512i __B)1310 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
1311   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1312                (__v32hi) __B,
1313                (__v16si) _mm512_setzero_si512(),
1314                (__mmask16) -1);
1315 }
1316 
1317 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_madd_epi16(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)1318 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1319       __m512i __B) {
1320   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1321                (__v32hi) __B,
1322                (__v16si) __W,
1323                (__mmask16) __U);
1324 }
1325 
1326 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_madd_epi16(__mmask16 __U,__m512i __A,__m512i __B)1327 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
1328   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1329                (__v32hi) __B,
1330                (__v16si) _mm512_setzero_si512(),
1331                (__mmask16) __U);
1332 }
1333 
1334 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_cvtsepi16_epi8(__m512i __A)1335 _mm512_cvtsepi16_epi8 (__m512i __A) {
1336   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1337                (__v32qi)_mm256_setzero_si256(),
1338                (__mmask32) -1);
1339 }
1340 
1341 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_mask_cvtsepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1342 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1343   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1344                (__v32qi)__O,
1345                __M);
1346 }
1347 
1348 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_maskz_cvtsepi16_epi8(__mmask32 __M,__m512i __A)1349 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1350   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1351                (__v32qi) _mm256_setzero_si256(),
1352                __M);
1353 }
1354 
1355 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_cvtusepi16_epi8(__m512i __A)1356 _mm512_cvtusepi16_epi8 (__m512i __A) {
1357   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1358                 (__v32qi) _mm256_setzero_si256(),
1359                 (__mmask32) -1);
1360 }
1361 
1362 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_mask_cvtusepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1363 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1364   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1365                 (__v32qi) __O,
1366                 __M);
1367 }
1368 
1369 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_maskz_cvtusepi16_epi8(__mmask32 __M,__m512i __A)1370 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1371   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1372                 (__v32qi) _mm256_setzero_si256(),
1373                 __M);
1374 }
1375 
1376 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_cvtepi16_epi8(__m512i __A)1377 _mm512_cvtepi16_epi8 (__m512i __A) {
1378   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1379               (__v32qi) _mm256_setzero_si256(),
1380               (__mmask32) -1);
1381 }
1382 
1383 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_mask_cvtepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1384 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1385   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1386               (__v32qi) __O,
1387               __M);
1388 }
1389 
1390 static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm512_maskz_cvtepi16_epi8(__mmask32 __M,__m512i __A)1391 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1392   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1393               (__v32qi) _mm256_setzero_si256(),
1394               __M);
1395 }
1396 
1397 static __inline__ void __DEFAULT_FN_ATTRS
_mm512_mask_cvtepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)1398 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1399 {
1400   __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1401 }
1402 
1403 static __inline__ void __DEFAULT_FN_ATTRS
_mm512_mask_cvtsepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)1404 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1405 {
1406   __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1407 }
1408 
1409 static __inline__ void __DEFAULT_FN_ATTRS
_mm512_mask_cvtusepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)1410 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1411 {
1412   __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1413 }
1414 
1415 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_unpackhi_epi8(__m512i __A,__m512i __B)1416 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1417   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1418                                           8,  64+8,   9, 64+9,
1419                                           10, 64+10, 11, 64+11,
1420                                           12, 64+12, 13, 64+13,
1421                                           14, 64+14, 15, 64+15,
1422                                           24, 64+24, 25, 64+25,
1423                                           26, 64+26, 27, 64+27,
1424                                           28, 64+28, 29, 64+29,
1425                                           30, 64+30, 31, 64+31,
1426                                           40, 64+40, 41, 64+41,
1427                                           42, 64+42, 43, 64+43,
1428                                           44, 64+44, 45, 64+45,
1429                                           46, 64+46, 47, 64+47,
1430                                           56, 64+56, 57, 64+57,
1431                                           58, 64+58, 59, 64+59,
1432                                           60, 64+60, 61, 64+61,
1433                                           62, 64+62, 63, 64+63);
1434 }
1435 
1436 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_unpackhi_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1437 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1438   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1439                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1440                                         (__v64qi)__W);
1441 }
1442 
1443 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_unpackhi_epi8(__mmask64 __U,__m512i __A,__m512i __B)1444 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1445   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1446                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1447                                         (__v64qi)_mm512_setzero_qi());
1448 }
1449 
1450 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_unpackhi_epi16(__m512i __A,__m512i __B)1451 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1452   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1453                                           4,  32+4,   5, 32+5,
1454                                           6,  32+6,   7, 32+7,
1455                                           12, 32+12, 13, 32+13,
1456                                           14, 32+14, 15, 32+15,
1457                                           20, 32+20, 21, 32+21,
1458                                           22, 32+22, 23, 32+23,
1459                                           28, 32+28, 29, 32+29,
1460                                           30, 32+30, 31, 32+31);
1461 }
1462 
1463 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_unpackhi_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1464 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1465   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1466                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1467                                        (__v32hi)__W);
1468 }
1469 
1470 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_unpackhi_epi16(__mmask32 __U,__m512i __A,__m512i __B)1471 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1472   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1473                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1474                                        (__v32hi)_mm512_setzero_hi());
1475 }
1476 
1477 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_unpacklo_epi8(__m512i __A,__m512i __B)1478 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1479   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1480                                           0,  64+0,   1, 64+1,
1481                                           2,  64+2,   3, 64+3,
1482                                           4,  64+4,   5, 64+5,
1483                                           6,  64+6,   7, 64+7,
1484                                           16, 64+16, 17, 64+17,
1485                                           18, 64+18, 19, 64+19,
1486                                           20, 64+20, 21, 64+21,
1487                                           22, 64+22, 23, 64+23,
1488                                           32, 64+32, 33, 64+33,
1489                                           34, 64+34, 35, 64+35,
1490                                           36, 64+36, 37, 64+37,
1491                                           38, 64+38, 39, 64+39,
1492                                           48, 64+48, 49, 64+49,
1493                                           50, 64+50, 51, 64+51,
1494                                           52, 64+52, 53, 64+53,
1495                                           54, 64+54, 55, 64+55);
1496 }
1497 
1498 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_unpacklo_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1499 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1500   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1501                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1502                                         (__v64qi)__W);
1503 }
1504 
1505 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_unpacklo_epi8(__mmask64 __U,__m512i __A,__m512i __B)1506 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1507   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1508                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1509                                         (__v64qi)_mm512_setzero_qi());
1510 }
1511 
1512 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_unpacklo_epi16(__m512i __A,__m512i __B)1513 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1514   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1515                                           0,  32+0,   1, 32+1,
1516                                           2,  32+2,   3, 32+3,
1517                                           8,  32+8,   9, 32+9,
1518                                           10, 32+10, 11, 32+11,
1519                                           16, 32+16, 17, 32+17,
1520                                           18, 32+18, 19, 32+19,
1521                                           24, 32+24, 25, 32+25,
1522                                           26, 32+26, 27, 32+27);
1523 }
1524 
1525 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_unpacklo_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1526 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1527   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1528                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1529                                        (__v32hi)__W);
1530 }
1531 
1532 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_unpacklo_epi16(__mmask32 __U,__m512i __A,__m512i __B)1533 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1534   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1535                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1536                                        (__v32hi)_mm512_setzero_hi());
1537 }
1538 
1539 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_cvtepi8_epi16(__m256i __A)1540 _mm512_cvtepi8_epi16 (__m256i __A)
1541 {
1542   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
1543                 (__v32hi)
1544                 _mm512_setzero_hi (),
1545                 (__mmask32) -1);
1546 }
1547 
1548 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_cvtepi8_epi16(__m512i __W,__mmask32 __U,__m256i __A)1549 _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
1550 {
1551   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
1552                 (__v32hi) __W,
1553                 (__mmask32) __U);
1554 }
1555 
1556 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_cvtepi8_epi16(__mmask32 __U,__m256i __A)1557 _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
1558 {
1559   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
1560                 (__v32hi)
1561                 _mm512_setzero_hi(),
1562                 (__mmask32) __U);
1563 }
1564 
1565 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_cvtepu8_epi16(__m256i __A)1566 _mm512_cvtepu8_epi16 (__m256i __A)
1567 {
1568   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
1569                 (__v32hi)
1570                 _mm512_setzero_hi (),
1571                 (__mmask32) -1);
1572 }
1573 
1574 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_cvtepu8_epi16(__m512i __W,__mmask32 __U,__m256i __A)1575 _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
1576 {
1577   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
1578                 (__v32hi) __W,
1579                 (__mmask32) __U);
1580 }
1581 
1582 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_cvtepu8_epi16(__mmask32 __U,__m256i __A)1583 _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
1584 {
1585   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
1586                 (__v32hi)
1587                 _mm512_setzero_hi(),
1588                 (__mmask32) __U);
1589 }
1590 
1591 
1592 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1593   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1594                                          (__v64qi)(__m512i)(b), (int)(p), \
1595                                          (__mmask64)-1); })
1596 
1597 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1598   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1599                                          (__v64qi)(__m512i)(b), (int)(p), \
1600                                          (__mmask64)(m)); })
1601 
1602 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1603   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1604                                           (__v64qi)(__m512i)(b), (int)(p), \
1605                                           (__mmask64)-1); })
1606 
1607 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1608   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1609                                           (__v64qi)(__m512i)(b), (int)(p), \
1610                                           (__mmask64)(m)); })
1611 
1612 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1613   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1614                                          (__v32hi)(__m512i)(b), (int)(p), \
1615                                          (__mmask32)-1); })
1616 
1617 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1618   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1619                                          (__v32hi)(__m512i)(b), (int)(p), \
1620                                          (__mmask32)(m)); })
1621 
1622 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1623   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1624                                           (__v32hi)(__m512i)(b), (int)(p), \
1625                                           (__mmask32)-1); })
1626 
1627 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1628   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1629                                           (__v32hi)(__m512i)(b), (int)(p), \
1630                                           (__mmask32)(m)); })
1631 
1632 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
1633   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1634                                    (__v32hi)_mm512_undefined_epi32(), \
1635                                    0, 1, 2, 3, \
1636                                    4  + (((imm) >> 0) & 0x3), \
1637                                    4  + (((imm) >> 2) & 0x3), \
1638                                    4  + (((imm) >> 4) & 0x3), \
1639                                    4  + (((imm) >> 6) & 0x3), \
1640                                    8, 9, 10, 11, \
1641                                    12 + (((imm) >> 0) & 0x3), \
1642                                    12 + (((imm) >> 2) & 0x3), \
1643                                    12 + (((imm) >> 4) & 0x3), \
1644                                    12 + (((imm) >> 6) & 0x3), \
1645                                    16, 17, 18, 19, \
1646                                    20 + (((imm) >> 0) & 0x3), \
1647                                    20 + (((imm) >> 2) & 0x3), \
1648                                    20 + (((imm) >> 4) & 0x3), \
1649                                    20 + (((imm) >> 6) & 0x3), \
1650                                    24, 25, 26, 27, \
1651                                    28 + (((imm) >> 0) & 0x3), \
1652                                    28 + (((imm) >> 2) & 0x3), \
1653                                    28 + (((imm) >> 4) & 0x3), \
1654                                    28 + (((imm) >> 6) & 0x3)); })
1655 
1656 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1657   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1658                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1659                                                                       (imm)), \
1660                                       (__v32hi)(__m512i)(W)); })
1661 
1662 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1663   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1664                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1665                                                                       (imm)), \
1666                                       (__v32hi)_mm512_setzero_hi()); })
1667 
1668 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
1669   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1670                                    (__v32hi)_mm512_undefined_epi32(), \
1671                                    0 + (((imm) >> 0) & 0x3), \
1672                                    0 + (((imm) >> 2) & 0x3), \
1673                                    0 + (((imm) >> 4) & 0x3), \
1674                                    0 + (((imm) >> 6) & 0x3), \
1675                                    4, 5, 6, 7, \
1676                                    8 + (((imm) >> 0) & 0x3), \
1677                                    8 + (((imm) >> 2) & 0x3), \
1678                                    8 + (((imm) >> 4) & 0x3), \
1679                                    8 + (((imm) >> 6) & 0x3), \
1680                                    12, 13, 14, 15, \
1681                                    16 + (((imm) >> 0) & 0x3), \
1682                                    16 + (((imm) >> 2) & 0x3), \
1683                                    16 + (((imm) >> 4) & 0x3), \
1684                                    16 + (((imm) >> 6) & 0x3), \
1685                                    20, 21, 22, 23, \
1686                                    24 + (((imm) >> 0) & 0x3), \
1687                                    24 + (((imm) >> 2) & 0x3), \
1688                                    24 + (((imm) >> 4) & 0x3), \
1689                                    24 + (((imm) >> 6) & 0x3), \
1690                                    28, 29, 30, 31); })
1691 
1692 
1693 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1694   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1695                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1696                                                                       (imm)), \
1697                                       (__v32hi)(__m512i)(W)); })
1698 
1699 
1700 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1701   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1702                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1703                                                                       (imm)), \
1704                                       (__v32hi)_mm512_setzero_hi()); })
1705 
1706 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_sllv_epi16(__m512i __A,__m512i __B)1707 _mm512_sllv_epi16 (__m512i __A, __m512i __B)
1708 {
1709   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1710               (__v32hi) __B,
1711               (__v32hi)
1712               _mm512_setzero_hi (),
1713               (__mmask32) -1);
1714 }
1715 
1716 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_sllv_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1717 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1718       __m512i __B)
1719 {
1720   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1721               (__v32hi) __B,
1722               (__v32hi) __W,
1723               (__mmask32) __U);
1724 }
1725 
1726 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_sllv_epi16(__mmask32 __U,__m512i __A,__m512i __B)1727 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1728 {
1729   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1730               (__v32hi) __B,
1731               (__v32hi)
1732               _mm512_setzero_hi (),
1733               (__mmask32) __U);
1734 }
1735 
1736 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_sll_epi16(__m512i __A,__m128i __B)1737 _mm512_sll_epi16 (__m512i __A, __m128i __B)
1738 {
1739   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1740              (__v8hi) __B,
1741              (__v32hi)
1742              _mm512_setzero_hi (),
1743              (__mmask32) -1);
1744 }
1745 
1746 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_sll_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1747 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1748            __m128i __B)
1749 {
1750   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1751              (__v8hi) __B,
1752              (__v32hi) __W,
1753              (__mmask32) __U);
1754 }
1755 
1756 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_sll_epi16(__mmask32 __U,__m512i __A,__m128i __B)1757 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1758 {
1759   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1760              (__v8hi) __B,
1761              (__v32hi)
1762              _mm512_setzero_hi (),
1763              (__mmask32) __U);
1764 }
1765 
1766 #define _mm512_slli_epi16(A, B) __extension__ ({ \
1767   (__m512i)__builtin_ia32_psllwi512_mask((__v32hi)(__m512i)(A), (int)(B), \
1768                                          (__v32hi)_mm512_setzero_hi(), \
1769                                          (__mmask32)-1); })
1770 
1771 #define _mm512_mask_slli_epi16(W, U, A, B) __extension__ ({ \
1772   (__m512i)__builtin_ia32_psllwi512_mask((__v32hi)(__m512i)(A), (int)(B), \
1773                                          (__v32hi)(__m512i)(W), \
1774                                          (__mmask32)(U)); })
1775 
1776 #define _mm512_maskz_slli_epi16(U, A, B) __extension__ ({ \
1777   (__m512i)__builtin_ia32_psllwi512_mask((__v32hi)(__m512i)(A), (int)(B), \
1778                                          (__v32hi)_mm512_setzero_hi(), \
1779                                          (__mmask32)(U)); })
1780 
1781 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
1782   (__m512i)__builtin_shufflevector(                                          \
1783        (__v64qi)_mm512_setzero_si512(),                                      \
1784        (__v64qi)(__m512i)(a),                                                \
1785        ((char)(imm)&0xF0) ?  0 : ((char)(imm)>0x0 ? 16 :  64) - (char)(imm), \
1786        ((char)(imm)&0xF0) ?  1 : ((char)(imm)>0x1 ? 17 :  65) - (char)(imm), \
1787        ((char)(imm)&0xF0) ?  2 : ((char)(imm)>0x2 ? 18 :  66) - (char)(imm), \
1788        ((char)(imm)&0xF0) ?  3 : ((char)(imm)>0x3 ? 19 :  67) - (char)(imm), \
1789        ((char)(imm)&0xF0) ?  4 : ((char)(imm)>0x4 ? 20 :  68) - (char)(imm), \
1790        ((char)(imm)&0xF0) ?  5 : ((char)(imm)>0x5 ? 21 :  69) - (char)(imm), \
1791        ((char)(imm)&0xF0) ?  6 : ((char)(imm)>0x6 ? 22 :  70) - (char)(imm), \
1792        ((char)(imm)&0xF0) ?  7 : ((char)(imm)>0x7 ? 23 :  71) - (char)(imm), \
1793        ((char)(imm)&0xF0) ?  8 : ((char)(imm)>0x8 ? 24 :  72) - (char)(imm), \
1794        ((char)(imm)&0xF0) ?  9 : ((char)(imm)>0x9 ? 25 :  73) - (char)(imm), \
1795        ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 :  74) - (char)(imm), \
1796        ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 :  75) - (char)(imm), \
1797        ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 :  76) - (char)(imm), \
1798        ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 :  77) - (char)(imm), \
1799        ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 :  78) - (char)(imm), \
1800        ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 :  79) - (char)(imm), \
1801        ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 :  80) - (char)(imm), \
1802        ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 :  81) - (char)(imm), \
1803        ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 :  82) - (char)(imm), \
1804        ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 :  83) - (char)(imm), \
1805        ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 :  84) - (char)(imm), \
1806        ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 :  85) - (char)(imm), \
1807        ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 :  86) - (char)(imm), \
1808        ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 :  87) - (char)(imm), \
1809        ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 :  88) - (char)(imm), \
1810        ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 :  89) - (char)(imm), \
1811        ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 :  90) - (char)(imm), \
1812        ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 :  91) - (char)(imm), \
1813        ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 :  92) - (char)(imm), \
1814        ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 :  93) - (char)(imm), \
1815        ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 :  94) - (char)(imm), \
1816        ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 :  95) - (char)(imm), \
1817        ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 :  96) - (char)(imm), \
1818        ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 :  97) - (char)(imm), \
1819        ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 :  98) - (char)(imm), \
1820        ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 :  99) - (char)(imm), \
1821        ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
1822        ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
1823        ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
1824        ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
1825        ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
1826        ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
1827        ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
1828        ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
1829        ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
1830        ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
1831        ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
1832        ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
1833        ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
1834        ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
1835        ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
1836        ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
1837        ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
1838        ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
1839        ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
1840        ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
1841        ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
1842        ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
1843        ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
1844        ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
1845        ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
1846        ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
1847        ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
1848        ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
1849 
1850 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_srlv_epi16(__m512i __A,__m512i __B)1851 _mm512_srlv_epi16 (__m512i __A, __m512i __B)
1852 {
1853   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1854               (__v32hi) __B,
1855               (__v32hi)
1856               _mm512_setzero_hi (),
1857               (__mmask32) -1);
1858 }
1859 
1860 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_srlv_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1861 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1862       __m512i __B)
1863 {
1864   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1865               (__v32hi) __B,
1866               (__v32hi) __W,
1867               (__mmask32) __U);
1868 }
1869 
1870 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_srlv_epi16(__mmask32 __U,__m512i __A,__m512i __B)1871 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1872 {
1873   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1874               (__v32hi) __B,
1875               (__v32hi)
1876               _mm512_setzero_hi (),
1877               (__mmask32) __U);
1878 }
1879 
1880 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_srav_epi16(__m512i __A,__m512i __B)1881 _mm512_srav_epi16 (__m512i __A, __m512i __B)
1882 {
1883   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1884               (__v32hi) __B,
1885               (__v32hi)
1886               _mm512_setzero_hi (),
1887               (__mmask32) -1);
1888 }
1889 
1890 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_srav_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1891 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1892       __m512i __B)
1893 {
1894   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1895               (__v32hi) __B,
1896               (__v32hi) __W,
1897               (__mmask32) __U);
1898 }
1899 
1900 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_srav_epi16(__mmask32 __U,__m512i __A,__m512i __B)1901 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1902 {
1903   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1904               (__v32hi) __B,
1905               (__v32hi)
1906               _mm512_setzero_hi (),
1907               (__mmask32) __U);
1908 }
1909 
1910 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_sra_epi16(__m512i __A,__m128i __B)1911 _mm512_sra_epi16 (__m512i __A, __m128i __B)
1912 {
1913  return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1914              (__v8hi) __B,
1915              (__v32hi)
1916              _mm512_setzero_hi (),
1917              (__mmask32) -1);
1918 }
1919 
1920 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_sra_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1921 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1922            __m128i __B)
1923 {
1924   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1925              (__v8hi) __B,
1926              (__v32hi) __W,
1927             (__mmask32) __U);
1928 }
1929 
1930 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_sra_epi16(__mmask32 __U,__m512i __A,__m128i __B)1931 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1932 {
1933   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1934              (__v8hi) __B,
1935              (__v32hi)
1936              _mm512_setzero_hi (),
1937             (__mmask32) __U);
1938 }
1939 
1940 #define _mm512_srai_epi16(A, B) __extension__ ({ \
1941   (__m512i)__builtin_ia32_psrawi512_mask((__v32hi)(__m512i)(A), (int)(B), \
1942                                          (__v32hi)_mm512_setzero_hi(), \
1943                                          (__mmask32)-1); })
1944 
1945 #define _mm512_mask_srai_epi16(W, U, A, B) __extension__ ({ \
1946   (__m512i)__builtin_ia32_psrawi512_mask((__v32hi)(__m512i)(A), (int)(B), \
1947                                          (__v32hi)(__m512i)(W), \
1948                                          (__mmask32)(U)); })
1949 
1950 #define _mm512_maskz_srai_epi16(U, A, B) __extension__ ({ \
1951   (__m512i)__builtin_ia32_psrawi512_mask((__v32hi)(__m512i)(A), (int)(B), \
1952                                          (__v32hi)_mm512_setzero_hi(), \
1953                                          (__mmask32)(U)); })
1954 
1955 
1956 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_srl_epi16(__m512i __A,__m128i __B)1957 _mm512_srl_epi16 (__m512i __A, __m128i __B)
1958 {
1959   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1960              (__v8hi) __B,
1961              (__v32hi)
1962              _mm512_setzero_hi (),
1963              (__mmask32) -1);
1964 }
1965 
1966 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_srl_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1967 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1968            __m128i __B)
1969 {
1970   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1971              (__v8hi) __B,
1972              (__v32hi) __W,
1973              (__mmask32) __U);
1974 }
1975 
1976 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_srl_epi16(__mmask32 __U,__m512i __A,__m128i __B)1977 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1978 {
1979   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1980              (__v8hi) __B,
1981              (__v32hi)
1982              _mm512_setzero_hi (),
1983              (__mmask32) __U);
1984 }
1985 
1986 #define _mm512_srli_epi16(A, imm) __extension__ ({ \
1987   (__m512i)__builtin_ia32_psrlwi512_mask((__v32hi)(__m512i)(A), (int)(imm), \
1988                                          (__v32hi)_mm512_setzero_hi(), \
1989                                          (__mmask32)-1); })
1990 
1991 #define _mm512_mask_srli_epi16(W, U, A, imm) __extension__ ({ \
1992   (__m512i)__builtin_ia32_psrlwi512_mask((__v32hi)(__m512i)(A), (int)(imm), \
1993                                          (__v32hi)(__m512i)(W), \
1994                                          (__mmask32)(U)); })
1995 
1996 #define _mm512_maskz_srli_epi16(U, A, imm) __extension__ ({ \
1997   (__m512i)__builtin_ia32_psrlwi512_mask((__v32hi)(__m512i)(A), (int)(imm), \
1998                                          (__v32hi)_mm512_setzero_hi(), \
1999                                          (__mmask32)(U)); })
2000 
2001 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
2002   (__m512i)__builtin_shufflevector(                     \
2003       (__v64qi)(__m512i)(a),                      \
2004       (__v64qi)_mm512_setzero_si512(),            \
2005       ((char)(imm)&0xF0) ?  64 : (char)(imm) + ((char)(imm)>0xF ?  48 : 0),  \
2006       ((char)(imm)&0xF0) ?  65 : (char)(imm) + ((char)(imm)>0xE ?  49 : 1),  \
2007       ((char)(imm)&0xF0) ?  66 : (char)(imm) + ((char)(imm)>0xD ?  50 : 2),  \
2008       ((char)(imm)&0xF0) ?  67 : (char)(imm) + ((char)(imm)>0xC ?  51 : 3),  \
2009       ((char)(imm)&0xF0) ?  68 : (char)(imm) + ((char)(imm)>0xB ?  52 : 4),  \
2010       ((char)(imm)&0xF0) ?  69 : (char)(imm) + ((char)(imm)>0xA ?  53 : 5),  \
2011       ((char)(imm)&0xF0) ?  70 : (char)(imm) + ((char)(imm)>0x9 ?  54 : 6),  \
2012       ((char)(imm)&0xF0) ?  71 : (char)(imm) + ((char)(imm)>0x8 ?  55 : 7),  \
2013       ((char)(imm)&0xF0) ?  72 : (char)(imm) + ((char)(imm)>0x7 ?  56 : 8),  \
2014       ((char)(imm)&0xF0) ?  73 : (char)(imm) + ((char)(imm)>0x6 ?  57 : 9),  \
2015       ((char)(imm)&0xF0) ?  74 : (char)(imm) + ((char)(imm)>0x5 ?  58 : 10), \
2016       ((char)(imm)&0xF0) ?  75 : (char)(imm) + ((char)(imm)>0x4 ?  59 : 11), \
2017       ((char)(imm)&0xF0) ?  76 : (char)(imm) + ((char)(imm)>0x3 ?  60 : 12), \
2018       ((char)(imm)&0xF0) ?  77 : (char)(imm) + ((char)(imm)>0x2 ?  61 : 13), \
2019       ((char)(imm)&0xF0) ?  78 : (char)(imm) + ((char)(imm)>0x1 ?  62 : 14), \
2020       ((char)(imm)&0xF0) ?  79 : (char)(imm) + ((char)(imm)>0x0 ?  63 : 15), \
2021       ((char)(imm)&0xF0) ?  80 : (char)(imm) + ((char)(imm)>0xF ?  64 : 16), \
2022       ((char)(imm)&0xF0) ?  81 : (char)(imm) + ((char)(imm)>0xE ?  65 : 17), \
2023       ((char)(imm)&0xF0) ?  82 : (char)(imm) + ((char)(imm)>0xD ?  66 : 18), \
2024       ((char)(imm)&0xF0) ?  83 : (char)(imm) + ((char)(imm)>0xC ?  67 : 19), \
2025       ((char)(imm)&0xF0) ?  84 : (char)(imm) + ((char)(imm)>0xB ?  68 : 20), \
2026       ((char)(imm)&0xF0) ?  85 : (char)(imm) + ((char)(imm)>0xA ?  69 : 21), \
2027       ((char)(imm)&0xF0) ?  86 : (char)(imm) + ((char)(imm)>0x9 ?  70 : 22), \
2028       ((char)(imm)&0xF0) ?  87 : (char)(imm) + ((char)(imm)>0x8 ?  71 : 23), \
2029       ((char)(imm)&0xF0) ?  88 : (char)(imm) + ((char)(imm)>0x7 ?  72 : 24), \
2030       ((char)(imm)&0xF0) ?  89 : (char)(imm) + ((char)(imm)>0x6 ?  73 : 25), \
2031       ((char)(imm)&0xF0) ?  90 : (char)(imm) + ((char)(imm)>0x5 ?  74 : 26), \
2032       ((char)(imm)&0xF0) ?  91 : (char)(imm) + ((char)(imm)>0x4 ?  75 : 27), \
2033       ((char)(imm)&0xF0) ?  92 : (char)(imm) + ((char)(imm)>0x3 ?  76 : 28), \
2034       ((char)(imm)&0xF0) ?  93 : (char)(imm) + ((char)(imm)>0x2 ?  77 : 29), \
2035       ((char)(imm)&0xF0) ?  94 : (char)(imm) + ((char)(imm)>0x1 ?  78 : 30), \
2036       ((char)(imm)&0xF0) ?  95 : (char)(imm) + ((char)(imm)>0x0 ?  79 : 31), \
2037       ((char)(imm)&0xF0) ?  96 : (char)(imm) + ((char)(imm)>0xF ?  80 : 32), \
2038       ((char)(imm)&0xF0) ?  97 : (char)(imm) + ((char)(imm)>0xE ?  81 : 33), \
2039       ((char)(imm)&0xF0) ?  98 : (char)(imm) + ((char)(imm)>0xD ?  82 : 34), \
2040       ((char)(imm)&0xF0) ?  99 : (char)(imm) + ((char)(imm)>0xC ?  83 : 35), \
2041       ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ?  84 : 36), \
2042       ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ?  85 : 37), \
2043       ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ?  86 : 38), \
2044       ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ?  87 : 39), \
2045       ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ?  88 : 40), \
2046       ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ?  89 : 41), \
2047       ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ?  90 : 42), \
2048       ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ?  91 : 43), \
2049       ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ?  92 : 44), \
2050       ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ?  93 : 45), \
2051       ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ?  94 : 46), \
2052       ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ?  95 : 47), \
2053       ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ?  96 : 48), \
2054       ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ?  97 : 49), \
2055       ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ?  98 : 50), \
2056       ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ?  99 : 51), \
2057       ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
2058       ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
2059       ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
2060       ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
2061       ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
2062       ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
2063       ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
2064       ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
2065       ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
2066       ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
2067       ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
2068       ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
2069 
2070 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_mov_epi16(__m512i __W,__mmask32 __U,__m512i __A)2071 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2072 {
2073   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2074                 (__v32hi) __A,
2075                 (__v32hi) __W);
2076 }
2077 
2078 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_mov_epi16(__mmask32 __U,__m512i __A)2079 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
2080 {
2081   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2082                 (__v32hi) __A,
2083                 (__v32hi) _mm512_setzero_hi ());
2084 }
2085 
2086 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_mov_epi8(__m512i __W,__mmask64 __U,__m512i __A)2087 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2088 {
2089   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2090                 (__v64qi) __A,
2091                 (__v64qi) __W);
2092 }
2093 
2094 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_mov_epi8(__mmask64 __U,__m512i __A)2095 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
2096 {
2097   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2098                 (__v64qi) __A,
2099                 (__v64qi) _mm512_setzero_hi ());
2100 }
2101 
2102 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_set1_epi8(__m512i __O,__mmask64 __M,char __A)2103 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
2104 {
2105   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2106                  (__v64qi) __O,
2107                  __M);
2108 }
2109 
2110 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_set1_epi8(__mmask64 __M,char __A)2111 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
2112 {
2113   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2114                  (__v64qi)
2115                  _mm512_setzero_qi(),
2116                  __M);
2117 }
2118 
2119 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_kunpackd(__mmask64 __A,__mmask64 __B)2120 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
2121 {
2122   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
2123                 (__mmask64) __B);
2124 }
2125 
2126 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_kunpackw(__mmask32 __A,__mmask32 __B)2127 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
2128 {
2129   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
2130                 (__mmask32) __B);
2131 }
2132 
2133 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_loadu_epi16(__m512i __W,__mmask32 __U,void const * __P)2134 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
2135 {
2136   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2137                  (__v32hi) __W,
2138                  (__mmask32) __U);
2139 }
2140 
2141 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_loadu_epi16(__mmask32 __U,void const * __P)2142 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
2143 {
2144   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2145                  (__v32hi)
2146                  _mm512_setzero_hi (),
2147                  (__mmask32) __U);
2148 }
2149 
2150 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_loadu_epi8(__m512i __W,__mmask64 __U,void const * __P)2151 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
2152 {
2153   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2154                  (__v64qi) __W,
2155                  (__mmask64) __U);
2156 }
2157 
2158 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_loadu_epi8(__mmask64 __U,void const * __P)2159 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
2160 {
2161   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2162                  (__v64qi)
2163                  _mm512_setzero_hi (),
2164                  (__mmask64) __U);
2165 }
2166 static __inline__ void __DEFAULT_FN_ATTRS
_mm512_mask_storeu_epi16(void * __P,__mmask32 __U,__m512i __A)2167 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
2168 {
2169   __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
2170              (__v32hi) __A,
2171              (__mmask32) __U);
2172 }
2173 
2174 static __inline__ void __DEFAULT_FN_ATTRS
_mm512_mask_storeu_epi8(void * __P,__mmask64 __U,__m512i __A)2175 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
2176 {
2177   __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
2178              (__v64qi) __A,
2179              (__mmask64) __U);
2180 }
2181 
2182 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_test_epi8_mask(__m512i __A,__m512i __B)2183 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
2184 {
2185   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2186             (__v64qi) __B,
2187             (__mmask64) -1);
2188 }
2189 
2190 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_test_epi8_mask(__mmask64 __U,__m512i __A,__m512i __B)2191 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2192 {
2193   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2194             (__v64qi) __B, __U);
2195 }
2196 
2197 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_test_epi16_mask(__m512i __A,__m512i __B)2198 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
2199 {
2200   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2201             (__v32hi) __B,
2202             (__mmask32) -1);
2203 }
2204 
2205 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_test_epi16_mask(__mmask32 __U,__m512i __A,__m512i __B)2206 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2207 {
2208   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2209             (__v32hi) __B, __U);
2210 }
2211 
2212 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_testn_epi8_mask(__m512i __A,__m512i __B)2213 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
2214 {
2215   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2216              (__v64qi) __B,
2217              (__mmask64) -1);
2218 }
2219 
2220 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_mask_testn_epi8_mask(__mmask64 __U,__m512i __A,__m512i __B)2221 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2222 {
2223   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2224              (__v64qi) __B, __U);
2225 }
2226 
2227 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_testn_epi16_mask(__m512i __A,__m512i __B)2228 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
2229 {
2230   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2231              (__v32hi) __B,
2232              (__mmask32) -1);
2233 }
2234 
2235 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_mask_testn_epi16_mask(__mmask32 __U,__m512i __A,__m512i __B)2236 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2237 {
2238   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2239              (__v32hi) __B, __U);
2240 }
2241 
2242 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
_mm512_movepi8_mask(__m512i __A)2243 _mm512_movepi8_mask (__m512i __A)
2244 {
2245   return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
2246 }
2247 
2248 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm512_movepi16_mask(__m512i __A)2249 _mm512_movepi16_mask (__m512i __A)
2250 {
2251   return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
2252 }
2253 
2254 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_movm_epi8(__mmask64 __A)2255 _mm512_movm_epi8 (__mmask64 __A)
2256 {
2257   return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
2258 }
2259 
2260 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_movm_epi16(__mmask32 __A)2261 _mm512_movm_epi16 (__mmask32 __A)
2262 {
2263   return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
2264 }
2265 
2266 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_broadcastb_epi8(__m128i __A)2267 _mm512_broadcastb_epi8 (__m128i __A)
2268 {
2269   return (__m512i)__builtin_shufflevector((__v16qi) __A,
2270                                           (__v16qi)_mm_undefined_si128(),
2271                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2272                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2274                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2275 }
2276 
2277 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_broadcastb_epi8(__m512i __O,__mmask64 __M,__m128i __A)2278 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
2279 {
2280   return (__m512i)__builtin_ia32_selectb_512(__M,
2281                                              (__v64qi) _mm512_broadcastb_epi8(__A),
2282                                              (__v64qi) __O);
2283 }
2284 
2285 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_broadcastb_epi8(__mmask64 __M,__m128i __A)2286 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
2287 {
2288   return (__m512i)__builtin_ia32_selectb_512(__M,
2289                                              (__v64qi) _mm512_broadcastb_epi8(__A),
2290                                              (__v64qi) _mm512_setzero_si512());
2291 }
2292 
2293 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_set1_epi16(__m512i __O,__mmask32 __M,short __A)2294 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
2295 {
2296   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2297                  (__v32hi) __O,
2298                  __M);
2299 }
2300 
2301 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_set1_epi16(__mmask32 __M,short __A)2302 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
2303 {
2304   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2305                  (__v32hi) _mm512_setzero_hi(),
2306                  __M);
2307 }
2308 
2309 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_broadcastw_epi16(__m128i __A)2310 _mm512_broadcastw_epi16 (__m128i __A)
2311 {
2312   return (__m512i)__builtin_shufflevector((__v8hi) __A,
2313                                           (__v8hi)_mm_undefined_si128(),
2314                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2315                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2316 }
2317 
2318 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_broadcastw_epi16(__m512i __O,__mmask32 __M,__m128i __A)2319 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
2320 {
2321   return (__m512i)__builtin_ia32_selectw_512(__M,
2322                                              (__v32hi) _mm512_broadcastw_epi16(__A),
2323                                              (__v32hi) __O);
2324 }
2325 
2326 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_broadcastw_epi16(__mmask32 __M,__m128i __A)2327 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
2328 {
2329   return (__m512i)__builtin_ia32_selectw_512(__M,
2330                                              (__v32hi) _mm512_broadcastw_epi16(__A),
2331                                              (__v32hi) _mm512_setzero_si512());
2332 }
2333 
2334 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_permutexvar_epi16(__m512i __A,__m512i __B)2335 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
2336 {
2337   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2338                  (__v32hi) __A,
2339                  (__v32hi) _mm512_undefined_epi32 (),
2340                  (__mmask32) -1);
2341 }
2342 
2343 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_permutexvar_epi16(__mmask32 __M,__m512i __A,__m512i __B)2344 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
2345         __m512i __B)
2346 {
2347   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2348                  (__v32hi) __A,
2349                  (__v32hi) _mm512_setzero_hi(),
2350                  (__mmask32) __M);
2351 }
2352 
2353 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_permutexvar_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)2354 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2355              __m512i __B)
2356 {
2357   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2358                  (__v32hi) __A,
2359                  (__v32hi) __W,
2360                  (__mmask32) __M);
2361 }
2362 
2363 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
2364   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2365                                           (__v64qi)(__m512i)(B), (int)(N), \
2366                                           (__v64qi)_mm512_undefined_pd(), \
2367                                           (__mmask64)-1); })
2368 
2369 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
2370   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2371                                           (__v64qi)(__m512i)(B), (int)(N), \
2372                                           (__v64qi)(__m512i)(W), \
2373                                           (__mmask64)(U)); })
2374 
2375 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
2376   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2377                                           (__v64qi)(__m512i)(B), (int)(N), \
2378                                           (__v64qi)_mm512_setzero_si512(), \
2379                                           (__mmask64)(U)); })
2380 
2381 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
2382   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2383                                            (__v64qi)(__m512i)(B), (int)(imm), \
2384                                            (__v32hi)_mm512_undefined_epi32(), \
2385                                            (__mmask32)-1); })
2386 
2387 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
2388   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2389                                            (__v64qi)(__m512i)(B), (int)(imm), \
2390                                            (__v32hi)(__m512i)(W), \
2391                                            (__mmask32)(U)); })
2392 
2393 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
2394   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2395                                            (__v64qi)(__m512i)(B), (int)(imm), \
2396                                            (__v32hi)_mm512_setzero_hi(), \
2397                                            (__mmask32)(U)); })
2398 
2399 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_sad_epu8(__m512i __A,__m512i __B)2400 _mm512_sad_epu8 (__m512i __A, __m512i __B)
2401 {
2402  return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2403                (__v64qi) __B);
2404 }
2405 
2406 
2407 
2408 #undef __DEFAULT_FN_ATTRS
2409 
2410 #endif
2411