Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
/*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
2
 *
3
 *
4
 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
 * See https://llvm.org/LICENSE.txt for license information.
6
 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
 *
8
 *===-----------------------------------------------------------------------===
9
 */
10
#ifndef __IMMINTRIN_H
11
#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
12
#endif
13
 
14
#ifndef __AVX512BWINTRIN_H
15
#define __AVX512BWINTRIN_H
16
 
17
typedef unsigned int __mmask32;
18
typedef unsigned long long __mmask64;
19
 
20
/* Define the default attributes for the functions in this file. */
21
#define __DEFAULT_FN_ATTRS512 __attribute__((__always_inline__, __nodebug__, __target__("avx512bw"), __min_vector_width__(512)))
22
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
23
 
24
static __inline __mmask32 __DEFAULT_FN_ATTRS
25
_knot_mask32(__mmask32 __M)
26
{
27
  return __builtin_ia32_knotsi(__M);
28
}
29
 
30
static __inline __mmask64 __DEFAULT_FN_ATTRS
31
_knot_mask64(__mmask64 __M)
32
{
33
  return __builtin_ia32_knotdi(__M);
34
}
35
 
36
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
37
_kand_mask32(__mmask32 __A, __mmask32 __B)
38
{
39
  return (__mmask32)__builtin_ia32_kandsi((__mmask32)__A, (__mmask32)__B);
40
}
41
 
42
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
43
_kand_mask64(__mmask64 __A, __mmask64 __B)
44
{
45
  return (__mmask64)__builtin_ia32_kanddi((__mmask64)__A, (__mmask64)__B);
46
}
47
 
48
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
49
_kandn_mask32(__mmask32 __A, __mmask32 __B)
50
{
51
  return (__mmask32)__builtin_ia32_kandnsi((__mmask32)__A, (__mmask32)__B);
52
}
53
 
54
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
55
_kandn_mask64(__mmask64 __A, __mmask64 __B)
56
{
57
  return (__mmask64)__builtin_ia32_kandndi((__mmask64)__A, (__mmask64)__B);
58
}
59
 
60
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
61
_kor_mask32(__mmask32 __A, __mmask32 __B)
62
{
63
  return (__mmask32)__builtin_ia32_korsi((__mmask32)__A, (__mmask32)__B);
64
}
65
 
66
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
67
_kor_mask64(__mmask64 __A, __mmask64 __B)
68
{
69
  return (__mmask64)__builtin_ia32_kordi((__mmask64)__A, (__mmask64)__B);
70
}
71
 
72
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
73
_kxnor_mask32(__mmask32 __A, __mmask32 __B)
74
{
75
  return (__mmask32)__builtin_ia32_kxnorsi((__mmask32)__A, (__mmask32)__B);
76
}
77
 
78
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
79
_kxnor_mask64(__mmask64 __A, __mmask64 __B)
80
{
81
  return (__mmask64)__builtin_ia32_kxnordi((__mmask64)__A, (__mmask64)__B);
82
}
83
 
84
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
85
_kxor_mask32(__mmask32 __A, __mmask32 __B)
86
{
87
  return (__mmask32)__builtin_ia32_kxorsi((__mmask32)__A, (__mmask32)__B);
88
}
89
 
90
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
91
_kxor_mask64(__mmask64 __A, __mmask64 __B)
92
{
93
  return (__mmask64)__builtin_ia32_kxordi((__mmask64)__A, (__mmask64)__B);
94
}
95
 
96
static __inline__ unsigned char __DEFAULT_FN_ATTRS
97
_kortestc_mask32_u8(__mmask32 __A, __mmask32 __B)
98
{
99
  return (unsigned char)__builtin_ia32_kortestcsi(__A, __B);
100
}
101
 
102
static __inline__ unsigned char __DEFAULT_FN_ATTRS
103
_kortestz_mask32_u8(__mmask32 __A, __mmask32 __B)
104
{
105
  return (unsigned char)__builtin_ia32_kortestzsi(__A, __B);
106
}
107
 
108
static __inline__ unsigned char __DEFAULT_FN_ATTRS
109
_kortest_mask32_u8(__mmask32 __A, __mmask32 __B, unsigned char *__C) {
110
  *__C = (unsigned char)__builtin_ia32_kortestcsi(__A, __B);
111
  return (unsigned char)__builtin_ia32_kortestzsi(__A, __B);
112
}
113
 
114
static __inline__ unsigned char __DEFAULT_FN_ATTRS
115
_kortestc_mask64_u8(__mmask64 __A, __mmask64 __B)
116
{
117
  return (unsigned char)__builtin_ia32_kortestcdi(__A, __B);
118
}
119
 
120
static __inline__ unsigned char __DEFAULT_FN_ATTRS
121
_kortestz_mask64_u8(__mmask64 __A, __mmask64 __B)
122
{
123
  return (unsigned char)__builtin_ia32_kortestzdi(__A, __B);
124
}
125
 
126
static __inline__ unsigned char __DEFAULT_FN_ATTRS
127
_kortest_mask64_u8(__mmask64 __A, __mmask64 __B, unsigned char *__C) {
128
  *__C = (unsigned char)__builtin_ia32_kortestcdi(__A, __B);
129
  return (unsigned char)__builtin_ia32_kortestzdi(__A, __B);
130
}
131
 
132
static __inline__ unsigned char __DEFAULT_FN_ATTRS
133
_ktestc_mask32_u8(__mmask32 __A, __mmask32 __B)
134
{
135
  return (unsigned char)__builtin_ia32_ktestcsi(__A, __B);
136
}
137
 
138
static __inline__ unsigned char __DEFAULT_FN_ATTRS
139
_ktestz_mask32_u8(__mmask32 __A, __mmask32 __B)
140
{
141
  return (unsigned char)__builtin_ia32_ktestzsi(__A, __B);
142
}
143
 
144
static __inline__ unsigned char __DEFAULT_FN_ATTRS
145
_ktest_mask32_u8(__mmask32 __A, __mmask32 __B, unsigned char *__C) {
146
  *__C = (unsigned char)__builtin_ia32_ktestcsi(__A, __B);
147
  return (unsigned char)__builtin_ia32_ktestzsi(__A, __B);
148
}
149
 
150
static __inline__ unsigned char __DEFAULT_FN_ATTRS
151
_ktestc_mask64_u8(__mmask64 __A, __mmask64 __B)
152
{
153
  return (unsigned char)__builtin_ia32_ktestcdi(__A, __B);
154
}
155
 
156
static __inline__ unsigned char __DEFAULT_FN_ATTRS
157
_ktestz_mask64_u8(__mmask64 __A, __mmask64 __B)
158
{
159
  return (unsigned char)__builtin_ia32_ktestzdi(__A, __B);
160
}
161
 
162
static __inline__ unsigned char __DEFAULT_FN_ATTRS
163
_ktest_mask64_u8(__mmask64 __A, __mmask64 __B, unsigned char *__C) {
164
  *__C = (unsigned char)__builtin_ia32_ktestcdi(__A, __B);
165
  return (unsigned char)__builtin_ia32_ktestzdi(__A, __B);
166
}
167
 
168
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
169
_kadd_mask32(__mmask32 __A, __mmask32 __B)
170
{
171
  return (__mmask32)__builtin_ia32_kaddsi((__mmask32)__A, (__mmask32)__B);
172
}
173
 
174
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
175
_kadd_mask64(__mmask64 __A, __mmask64 __B)
176
{
177
  return (__mmask64)__builtin_ia32_kadddi((__mmask64)__A, (__mmask64)__B);
178
}
179
 
180
#define _kshiftli_mask32(A, I) \
181
  ((__mmask32)__builtin_ia32_kshiftlisi((__mmask32)(A), (unsigned int)(I)))
182
 
183
#define _kshiftri_mask32(A, I) \
184
  ((__mmask32)__builtin_ia32_kshiftrisi((__mmask32)(A), (unsigned int)(I)))
185
 
186
#define _kshiftli_mask64(A, I) \
187
  ((__mmask64)__builtin_ia32_kshiftlidi((__mmask64)(A), (unsigned int)(I)))
188
 
189
#define _kshiftri_mask64(A, I) \
190
  ((__mmask64)__builtin_ia32_kshiftridi((__mmask64)(A), (unsigned int)(I)))
191
 
192
static __inline__ unsigned int __DEFAULT_FN_ATTRS
193
_cvtmask32_u32(__mmask32 __A) {
194
  return (unsigned int)__builtin_ia32_kmovd((__mmask32)__A);
195
}
196
 
197
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
198
_cvtmask64_u64(__mmask64 __A) {
199
  return (unsigned long long)__builtin_ia32_kmovq((__mmask64)__A);
200
}
201
 
202
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
203
_cvtu32_mask32(unsigned int __A) {
204
  return (__mmask32)__builtin_ia32_kmovd((__mmask32)__A);
205
}
206
 
207
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
208
_cvtu64_mask64(unsigned long long __A) {
209
  return (__mmask64)__builtin_ia32_kmovq((__mmask64)__A);
210
}
211
 
212
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
213
_load_mask32(__mmask32 *__A) {
214
  return (__mmask32)__builtin_ia32_kmovd(*(__mmask32 *)__A);
215
}
216
 
217
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
218
_load_mask64(__mmask64 *__A) {
219
  return (__mmask64)__builtin_ia32_kmovq(*(__mmask64 *)__A);
220
}
221
 
222
static __inline__ void __DEFAULT_FN_ATTRS
223
_store_mask32(__mmask32 *__A, __mmask32 __B) {
224
  *(__mmask32 *)__A = __builtin_ia32_kmovd((__mmask32)__B);
225
}
226
 
227
static __inline__ void __DEFAULT_FN_ATTRS
228
_store_mask64(__mmask64 *__A, __mmask64 __B) {
229
  *(__mmask64 *)__A = __builtin_ia32_kmovq((__mmask64)__B);
230
}
231
 
232
/* Integer compare */
233
 
234
#define _mm512_cmp_epi8_mask(a, b, p) \
235
  ((__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
236
                                          (__v64qi)(__m512i)(b), (int)(p), \
237
                                          (__mmask64)-1))
238
 
239
#define _mm512_mask_cmp_epi8_mask(m, a, b, p) \
240
  ((__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
241
                                          (__v64qi)(__m512i)(b), (int)(p), \
242
                                          (__mmask64)(m)))
243
 
244
#define _mm512_cmp_epu8_mask(a, b, p) \
245
  ((__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
246
                                           (__v64qi)(__m512i)(b), (int)(p), \
247
                                           (__mmask64)-1))
248
 
249
#define _mm512_mask_cmp_epu8_mask(m, a, b, p) \
250
  ((__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
251
                                           (__v64qi)(__m512i)(b), (int)(p), \
252
                                           (__mmask64)(m)))
253
 
254
#define _mm512_cmp_epi16_mask(a, b, p) \
255
  ((__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
256
                                          (__v32hi)(__m512i)(b), (int)(p), \
257
                                          (__mmask32)-1))
258
 
259
#define _mm512_mask_cmp_epi16_mask(m, a, b, p) \
260
  ((__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
261
                                          (__v32hi)(__m512i)(b), (int)(p), \
262
                                          (__mmask32)(m)))
263
 
264
#define _mm512_cmp_epu16_mask(a, b, p) \
265
  ((__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
266
                                           (__v32hi)(__m512i)(b), (int)(p), \
267
                                           (__mmask32)-1))
268
 
269
#define _mm512_mask_cmp_epu16_mask(m, a, b, p) \
270
  ((__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
271
                                           (__v32hi)(__m512i)(b), (int)(p), \
272
                                           (__mmask32)(m)))
273
 
274
#define _mm512_cmpeq_epi8_mask(A, B) \
275
    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
276
#define _mm512_mask_cmpeq_epi8_mask(k, A, B) \
277
    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
278
#define _mm512_cmpge_epi8_mask(A, B) \
279
    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
280
#define _mm512_mask_cmpge_epi8_mask(k, A, B) \
281
    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
282
#define _mm512_cmpgt_epi8_mask(A, B) \
283
    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
284
#define _mm512_mask_cmpgt_epi8_mask(k, A, B) \
285
    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
286
#define _mm512_cmple_epi8_mask(A, B) \
287
    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
288
#define _mm512_mask_cmple_epi8_mask(k, A, B) \
289
    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
290
#define _mm512_cmplt_epi8_mask(A, B) \
291
    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
292
#define _mm512_mask_cmplt_epi8_mask(k, A, B) \
293
    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
294
#define _mm512_cmpneq_epi8_mask(A, B) \
295
    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
296
#define _mm512_mask_cmpneq_epi8_mask(k, A, B) \
297
    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
298
 
299
#define _mm512_cmpeq_epu8_mask(A, B) \
300
    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
301
#define _mm512_mask_cmpeq_epu8_mask(k, A, B) \
302
    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
303
#define _mm512_cmpge_epu8_mask(A, B) \
304
    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
305
#define _mm512_mask_cmpge_epu8_mask(k, A, B) \
306
    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
307
#define _mm512_cmpgt_epu8_mask(A, B) \
308
    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
309
#define _mm512_mask_cmpgt_epu8_mask(k, A, B) \
310
    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
311
#define _mm512_cmple_epu8_mask(A, B) \
312
    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
313
#define _mm512_mask_cmple_epu8_mask(k, A, B) \
314
    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
315
#define _mm512_cmplt_epu8_mask(A, B) \
316
    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
317
#define _mm512_mask_cmplt_epu8_mask(k, A, B) \
318
    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
319
#define _mm512_cmpneq_epu8_mask(A, B) \
320
    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
321
#define _mm512_mask_cmpneq_epu8_mask(k, A, B) \
322
    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
323
 
324
#define _mm512_cmpeq_epi16_mask(A, B) \
325
    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
326
#define _mm512_mask_cmpeq_epi16_mask(k, A, B) \
327
    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
328
#define _mm512_cmpge_epi16_mask(A, B) \
329
    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
330
#define _mm512_mask_cmpge_epi16_mask(k, A, B) \
331
    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
332
#define _mm512_cmpgt_epi16_mask(A, B) \
333
    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
334
#define _mm512_mask_cmpgt_epi16_mask(k, A, B) \
335
    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
336
#define _mm512_cmple_epi16_mask(A, B) \
337
    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
338
#define _mm512_mask_cmple_epi16_mask(k, A, B) \
339
    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
340
#define _mm512_cmplt_epi16_mask(A, B) \
341
    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
342
#define _mm512_mask_cmplt_epi16_mask(k, A, B) \
343
    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
344
#define _mm512_cmpneq_epi16_mask(A, B) \
345
    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
346
#define _mm512_mask_cmpneq_epi16_mask(k, A, B) \
347
    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
348
 
349
#define _mm512_cmpeq_epu16_mask(A, B) \
350
    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
351
#define _mm512_mask_cmpeq_epu16_mask(k, A, B) \
352
    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
353
#define _mm512_cmpge_epu16_mask(A, B) \
354
    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
355
#define _mm512_mask_cmpge_epu16_mask(k, A, B) \
356
    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
357
#define _mm512_cmpgt_epu16_mask(A, B) \
358
    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
359
#define _mm512_mask_cmpgt_epu16_mask(k, A, B) \
360
    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
361
#define _mm512_cmple_epu16_mask(A, B) \
362
    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
363
#define _mm512_mask_cmple_epu16_mask(k, A, B) \
364
    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
365
#define _mm512_cmplt_epu16_mask(A, B) \
366
    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
367
#define _mm512_mask_cmplt_epu16_mask(k, A, B) \
368
    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
369
#define _mm512_cmpneq_epu16_mask(A, B) \
370
    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
371
#define _mm512_mask_cmpneq_epu16_mask(k, A, B) \
372
    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
373
 
374
static __inline__ __m512i __DEFAULT_FN_ATTRS512
375
_mm512_add_epi8 (__m512i __A, __m512i __B) {
376
  return (__m512i) ((__v64qu) __A + (__v64qu) __B);
377
}
378
 
379
static __inline__ __m512i __DEFAULT_FN_ATTRS512
380
_mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
381
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
382
                                             (__v64qi)_mm512_add_epi8(__A, __B),
383
                                             (__v64qi)__W);
384
}
385
 
386
static __inline__ __m512i __DEFAULT_FN_ATTRS512
387
_mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
388
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
389
                                             (__v64qi)_mm512_add_epi8(__A, __B),
390
                                             (__v64qi)_mm512_setzero_si512());
391
}
392
 
393
static __inline__ __m512i __DEFAULT_FN_ATTRS512
394
_mm512_sub_epi8 (__m512i __A, __m512i __B) {
395
  return (__m512i) ((__v64qu) __A - (__v64qu) __B);
396
}
397
 
398
static __inline__ __m512i __DEFAULT_FN_ATTRS512
399
_mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
400
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
401
                                             (__v64qi)_mm512_sub_epi8(__A, __B),
402
                                             (__v64qi)__W);
403
}
404
 
405
static __inline__ __m512i __DEFAULT_FN_ATTRS512
406
_mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
407
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
408
                                             (__v64qi)_mm512_sub_epi8(__A, __B),
409
                                             (__v64qi)_mm512_setzero_si512());
410
}
411
 
412
static __inline__ __m512i __DEFAULT_FN_ATTRS512
413
_mm512_add_epi16 (__m512i __A, __m512i __B) {
414
  return (__m512i) ((__v32hu) __A + (__v32hu) __B);
415
}
416
 
417
static __inline__ __m512i __DEFAULT_FN_ATTRS512
418
_mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
419
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
420
                                             (__v32hi)_mm512_add_epi16(__A, __B),
421
                                             (__v32hi)__W);
422
}
423
 
424
static __inline__ __m512i __DEFAULT_FN_ATTRS512
425
_mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
426
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
427
                                             (__v32hi)_mm512_add_epi16(__A, __B),
428
                                             (__v32hi)_mm512_setzero_si512());
429
}
430
 
431
static __inline__ __m512i __DEFAULT_FN_ATTRS512
432
_mm512_sub_epi16 (__m512i __A, __m512i __B) {
433
  return (__m512i) ((__v32hu) __A - (__v32hu) __B);
434
}
435
 
436
static __inline__ __m512i __DEFAULT_FN_ATTRS512
437
_mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
438
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
439
                                             (__v32hi)_mm512_sub_epi16(__A, __B),
440
                                             (__v32hi)__W);
441
}
442
 
443
static __inline__ __m512i __DEFAULT_FN_ATTRS512
444
_mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
445
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
446
                                             (__v32hi)_mm512_sub_epi16(__A, __B),
447
                                             (__v32hi)_mm512_setzero_si512());
448
}
449
 
450
static __inline__ __m512i __DEFAULT_FN_ATTRS512
451
_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
452
  return (__m512i) ((__v32hu) __A * (__v32hu) __B);
453
}
454
 
455
static __inline__ __m512i __DEFAULT_FN_ATTRS512
456
_mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
457
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
458
                                             (__v32hi)_mm512_mullo_epi16(__A, __B),
459
                                             (__v32hi)__W);
460
}
461
 
462
static __inline__ __m512i __DEFAULT_FN_ATTRS512
463
_mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
464
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
465
                                             (__v32hi)_mm512_mullo_epi16(__A, __B),
466
                                             (__v32hi)_mm512_setzero_si512());
467
}
468
 
469
static __inline__ __m512i __DEFAULT_FN_ATTRS512
470
_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
471
{
472
  return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
473
              (__v64qi) __W,
474
              (__v64qi) __A);
475
}
476
 
477
static __inline__ __m512i __DEFAULT_FN_ATTRS512
478
_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
479
{
480
  return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
481
              (__v32hi) __W,
482
              (__v32hi) __A);
483
}
484
 
485
static __inline__ __m512i __DEFAULT_FN_ATTRS512
486
_mm512_abs_epi8 (__m512i __A)
487
{
488
  return (__m512i)__builtin_elementwise_abs((__v64qs)__A);
489
}
490
 
491
static __inline__ __m512i __DEFAULT_FN_ATTRS512
492
_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
493
{
494
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
495
                                             (__v64qi)_mm512_abs_epi8(__A),
496
                                             (__v64qi)__W);
497
}
498
 
499
static __inline__ __m512i __DEFAULT_FN_ATTRS512
500
_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
501
{
502
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
503
                                             (__v64qi)_mm512_abs_epi8(__A),
504
                                             (__v64qi)_mm512_setzero_si512());
505
}
506
 
507
static __inline__ __m512i __DEFAULT_FN_ATTRS512
508
_mm512_abs_epi16 (__m512i __A)
509
{
510
  return (__m512i)__builtin_elementwise_abs((__v32hi)__A);
511
}
512
 
513
static __inline__ __m512i __DEFAULT_FN_ATTRS512
514
_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
515
{
516
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
517
                                             (__v32hi)_mm512_abs_epi16(__A),
518
                                             (__v32hi)__W);
519
}
520
 
521
static __inline__ __m512i __DEFAULT_FN_ATTRS512
522
_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
523
{
524
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
525
                                             (__v32hi)_mm512_abs_epi16(__A),
526
                                             (__v32hi)_mm512_setzero_si512());
527
}
528
 
529
static __inline__ __m512i __DEFAULT_FN_ATTRS512
530
_mm512_packs_epi32(__m512i __A, __m512i __B)
531
{
532
  return (__m512i)__builtin_ia32_packssdw512((__v16si)__A, (__v16si)__B);
533
}
534
 
535
static __inline__ __m512i __DEFAULT_FN_ATTRS512
536
_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B)
537
{
538
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
539
                                       (__v32hi)_mm512_packs_epi32(__A, __B),
540
                                       (__v32hi)_mm512_setzero_si512());
541
}
542
 
543
static __inline__ __m512i __DEFAULT_FN_ATTRS512
544
_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
545
{
546
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
547
                                       (__v32hi)_mm512_packs_epi32(__A, __B),
548
                                       (__v32hi)__W);
549
}
550
 
551
static __inline__ __m512i __DEFAULT_FN_ATTRS512
552
_mm512_packs_epi16(__m512i __A, __m512i __B)
553
{
554
  return (__m512i)__builtin_ia32_packsswb512((__v32hi)__A, (__v32hi) __B);
555
}
556
 
557
static __inline__ __m512i __DEFAULT_FN_ATTRS512
558
_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
559
{
560
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
561
                                        (__v64qi)_mm512_packs_epi16(__A, __B),
562
                                        (__v64qi)__W);
563
}
564
 
565
static __inline__ __m512i __DEFAULT_FN_ATTRS512
566
_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B)
567
{
568
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
569
                                        (__v64qi)_mm512_packs_epi16(__A, __B),
570
                                        (__v64qi)_mm512_setzero_si512());
571
}
572
 
573
static __inline__ __m512i __DEFAULT_FN_ATTRS512
574
_mm512_packus_epi32(__m512i __A, __m512i __B)
575
{
576
  return (__m512i)__builtin_ia32_packusdw512((__v16si) __A, (__v16si) __B);
577
}
578
 
579
static __inline__ __m512i __DEFAULT_FN_ATTRS512
580
_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B)
581
{
582
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
583
                                       (__v32hi)_mm512_packus_epi32(__A, __B),
584
                                       (__v32hi)_mm512_setzero_si512());
585
}
586
 
587
static __inline__ __m512i __DEFAULT_FN_ATTRS512
588
_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
589
{
590
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
591
                                       (__v32hi)_mm512_packus_epi32(__A, __B),
592
                                       (__v32hi)__W);
593
}
594
 
595
static __inline__ __m512i __DEFAULT_FN_ATTRS512
596
_mm512_packus_epi16(__m512i __A, __m512i __B)
597
{
598
  return (__m512i)__builtin_ia32_packuswb512((__v32hi) __A, (__v32hi) __B);
599
}
600
 
601
static __inline__ __m512i __DEFAULT_FN_ATTRS512
602
_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
603
{
604
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
605
                                        (__v64qi)_mm512_packus_epi16(__A, __B),
606
                                        (__v64qi)__W);
607
}
608
 
609
static __inline__ __m512i __DEFAULT_FN_ATTRS512
610
_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B)
611
{
612
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
613
                                        (__v64qi)_mm512_packus_epi16(__A, __B),
614
                                        (__v64qi)_mm512_setzero_si512());
615
}
616
 
617
static __inline__ __m512i __DEFAULT_FN_ATTRS512
618
_mm512_adds_epi8 (__m512i __A, __m512i __B)
619
{
620
  return (__m512i)__builtin_elementwise_add_sat((__v64qs)__A, (__v64qs)__B);
621
}
622
 
623
static __inline__ __m512i __DEFAULT_FN_ATTRS512
624
_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
625
{
626
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
627
                                        (__v64qi)_mm512_adds_epi8(__A, __B),
628
                                        (__v64qi)__W);
629
}
630
 
631
static __inline__ __m512i __DEFAULT_FN_ATTRS512
632
_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
633
{
634
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
635
                                        (__v64qi)_mm512_adds_epi8(__A, __B),
636
                                        (__v64qi)_mm512_setzero_si512());
637
}
638
 
639
static __inline__ __m512i __DEFAULT_FN_ATTRS512
640
_mm512_adds_epi16 (__m512i __A, __m512i __B)
641
{
642
  return (__m512i)__builtin_elementwise_add_sat((__v32hi)__A, (__v32hi)__B);
643
}
644
 
645
static __inline__ __m512i __DEFAULT_FN_ATTRS512
646
_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
647
{
648
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
649
                                        (__v32hi)_mm512_adds_epi16(__A, __B),
650
                                        (__v32hi)__W);
651
}
652
 
653
static __inline__ __m512i __DEFAULT_FN_ATTRS512
654
_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
655
{
656
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
657
                                        (__v32hi)_mm512_adds_epi16(__A, __B),
658
                                        (__v32hi)_mm512_setzero_si512());
659
}
660
 
661
static __inline__ __m512i __DEFAULT_FN_ATTRS512
662
_mm512_adds_epu8 (__m512i __A, __m512i __B)
663
{
664
  return (__m512i)__builtin_elementwise_add_sat((__v64qu) __A, (__v64qu) __B);
665
}
666
 
667
static __inline__ __m512i __DEFAULT_FN_ATTRS512
668
_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
669
{
670
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
671
                                        (__v64qi)_mm512_adds_epu8(__A, __B),
672
                                        (__v64qi)__W);
673
}
674
 
675
static __inline__ __m512i __DEFAULT_FN_ATTRS512
676
_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
677
{
678
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
679
                                        (__v64qi)_mm512_adds_epu8(__A, __B),
680
                                        (__v64qi)_mm512_setzero_si512());
681
}
682
 
683
static __inline__ __m512i __DEFAULT_FN_ATTRS512
684
_mm512_adds_epu16 (__m512i __A, __m512i __B)
685
{
686
  return (__m512i)__builtin_elementwise_add_sat((__v32hu) __A, (__v32hu) __B);
687
}
688
 
689
static __inline__ __m512i __DEFAULT_FN_ATTRS512
690
_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
691
{
692
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
693
                                        (__v32hi)_mm512_adds_epu16(__A, __B),
694
                                        (__v32hi)__W);
695
}
696
 
697
static __inline__ __m512i __DEFAULT_FN_ATTRS512
698
_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
699
{
700
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
701
                                        (__v32hi)_mm512_adds_epu16(__A, __B),
702
                                        (__v32hi)_mm512_setzero_si512());
703
}
704
 
705
static __inline__ __m512i __DEFAULT_FN_ATTRS512
706
_mm512_avg_epu8 (__m512i __A, __m512i __B)
707
{
708
  return (__m512i)__builtin_ia32_pavgb512((__v64qi)__A, (__v64qi)__B);
709
}
710
 
711
static __inline__ __m512i __DEFAULT_FN_ATTRS512
712
_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
713
          __m512i __B)
714
{
715
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
716
              (__v64qi)_mm512_avg_epu8(__A, __B),
717
              (__v64qi)__W);
718
}
719
 
720
static __inline__ __m512i __DEFAULT_FN_ATTRS512
721
_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
722
{
723
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
724
              (__v64qi)_mm512_avg_epu8(__A, __B),
725
              (__v64qi)_mm512_setzero_si512());
726
}
727
 
728
static __inline__ __m512i __DEFAULT_FN_ATTRS512
729
_mm512_avg_epu16 (__m512i __A, __m512i __B)
730
{
731
  return (__m512i)__builtin_ia32_pavgw512((__v32hi)__A, (__v32hi)__B);
732
}
733
 
734
static __inline__ __m512i __DEFAULT_FN_ATTRS512
735
_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
736
           __m512i __B)
737
{
738
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
739
              (__v32hi)_mm512_avg_epu16(__A, __B),
740
              (__v32hi)__W);
741
}
742
 
743
static __inline__ __m512i __DEFAULT_FN_ATTRS512
744
_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
745
{
746
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
747
              (__v32hi)_mm512_avg_epu16(__A, __B),
748
              (__v32hi) _mm512_setzero_si512());
749
}
750
 
751
static __inline__ __m512i __DEFAULT_FN_ATTRS512
752
_mm512_max_epi8 (__m512i __A, __m512i __B)
753
{
754
  return (__m512i)__builtin_elementwise_max((__v64qs) __A, (__v64qs) __B);
755
}
756
 
757
static __inline__ __m512i __DEFAULT_FN_ATTRS512
758
_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
759
{
760
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
761
                                             (__v64qi)_mm512_max_epi8(__A, __B),
762
                                             (__v64qi)_mm512_setzero_si512());
763
}
764
 
765
static __inline__ __m512i __DEFAULT_FN_ATTRS512
766
_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
767
{
768
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
769
                                             (__v64qi)_mm512_max_epi8(__A, __B),
770
                                             (__v64qi)__W);
771
}
772
 
773
static __inline__ __m512i __DEFAULT_FN_ATTRS512
774
_mm512_max_epi16 (__m512i __A, __m512i __B)
775
{
776
  return (__m512i)__builtin_elementwise_max((__v32hi) __A, (__v32hi) __B);
777
}
778
 
779
static __inline__ __m512i __DEFAULT_FN_ATTRS512
780
_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
781
{
782
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
783
                                            (__v32hi)_mm512_max_epi16(__A, __B),
784
                                            (__v32hi)_mm512_setzero_si512());
785
}
786
 
787
static __inline__ __m512i __DEFAULT_FN_ATTRS512
788
_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
789
           __m512i __B)
790
{
791
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
792
                                            (__v32hi)_mm512_max_epi16(__A, __B),
793
                                            (__v32hi)__W);
794
}
795
 
796
static __inline__ __m512i __DEFAULT_FN_ATTRS512
797
_mm512_max_epu8 (__m512i __A, __m512i __B)
798
{
799
  return (__m512i)__builtin_elementwise_max((__v64qu)__A, (__v64qu)__B);
800
}
801
 
802
static __inline__ __m512i __DEFAULT_FN_ATTRS512
803
_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
804
{
805
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
806
                                             (__v64qi)_mm512_max_epu8(__A, __B),
807
                                             (__v64qi)_mm512_setzero_si512());
808
}
809
 
810
static __inline__ __m512i __DEFAULT_FN_ATTRS512
811
_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
812
{
813
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
814
                                             (__v64qi)_mm512_max_epu8(__A, __B),
815
                                             (__v64qi)__W);
816
}
817
 
818
static __inline__ __m512i __DEFAULT_FN_ATTRS512
819
_mm512_max_epu16 (__m512i __A, __m512i __B)
820
{
821
  return (__m512i)__builtin_elementwise_max((__v32hu)__A, (__v32hu)__B);
822
}
823
 
824
static __inline__ __m512i __DEFAULT_FN_ATTRS512
825
_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
826
{
827
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
828
                                            (__v32hi)_mm512_max_epu16(__A, __B),
829
                                            (__v32hi)_mm512_setzero_si512());
830
}
831
 
832
static __inline__ __m512i __DEFAULT_FN_ATTRS512
833
_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
834
{
835
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
836
                                            (__v32hi)_mm512_max_epu16(__A, __B),
837
                                            (__v32hi)__W);
838
}
839
 
840
static __inline__ __m512i __DEFAULT_FN_ATTRS512
841
_mm512_min_epi8 (__m512i __A, __m512i __B)
842
{
843
  return (__m512i)__builtin_elementwise_min((__v64qs) __A, (__v64qs) __B);
844
}
845
 
846
static __inline__ __m512i __DEFAULT_FN_ATTRS512
847
_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
848
{
849
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
850
                                             (__v64qi)_mm512_min_epi8(__A, __B),
851
                                             (__v64qi)_mm512_setzero_si512());
852
}
853
 
854
static __inline__ __m512i __DEFAULT_FN_ATTRS512
855
_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
856
{
857
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
858
                                             (__v64qi)_mm512_min_epi8(__A, __B),
859
                                             (__v64qi)__W);
860
}
861
 
862
static __inline__ __m512i __DEFAULT_FN_ATTRS512
863
_mm512_min_epi16 (__m512i __A, __m512i __B)
864
{
865
  return (__m512i)__builtin_elementwise_min((__v32hi) __A, (__v32hi) __B);
866
}
867
 
868
static __inline__ __m512i __DEFAULT_FN_ATTRS512
869
_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
870
{
871
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
872
                                            (__v32hi)_mm512_min_epi16(__A, __B),
873
                                            (__v32hi)_mm512_setzero_si512());
874
}
875
 
876
static __inline__ __m512i __DEFAULT_FN_ATTRS512
877
_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
878
{
879
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
880
                                            (__v32hi)_mm512_min_epi16(__A, __B),
881
                                            (__v32hi)__W);
882
}
883
 
884
static __inline__ __m512i __DEFAULT_FN_ATTRS512
885
_mm512_min_epu8 (__m512i __A, __m512i __B)
886
{
887
  return (__m512i)__builtin_elementwise_min((__v64qu)__A, (__v64qu)__B);
888
}
889
 
890
static __inline__ __m512i __DEFAULT_FN_ATTRS512
891
_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
892
{
893
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
894
                                             (__v64qi)_mm512_min_epu8(__A, __B),
895
                                             (__v64qi)_mm512_setzero_si512());
896
}
897
 
898
static __inline__ __m512i __DEFAULT_FN_ATTRS512
899
_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
900
{
901
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
902
                                             (__v64qi)_mm512_min_epu8(__A, __B),
903
                                             (__v64qi)__W);
904
}
905
 
906
static __inline__ __m512i __DEFAULT_FN_ATTRS512
907
_mm512_min_epu16 (__m512i __A, __m512i __B)
908
{
909
  return (__m512i)__builtin_elementwise_min((__v32hu)__A, (__v32hu)__B);
910
}
911
 
912
static __inline__ __m512i __DEFAULT_FN_ATTRS512
913
_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
914
{
915
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
916
                                            (__v32hi)_mm512_min_epu16(__A, __B),
917
                                            (__v32hi)_mm512_setzero_si512());
918
}
919
 
920
static __inline__ __m512i __DEFAULT_FN_ATTRS512
921
_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
922
{
923
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
924
                                            (__v32hi)_mm512_min_epu16(__A, __B),
925
                                            (__v32hi)__W);
926
}
927
 
928
static __inline__ __m512i __DEFAULT_FN_ATTRS512
929
_mm512_shuffle_epi8(__m512i __A, __m512i __B)
930
{
931
  return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
932
}
933
 
934
static __inline__ __m512i __DEFAULT_FN_ATTRS512
935
_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
936
{
937
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
938
                                         (__v64qi)_mm512_shuffle_epi8(__A, __B),
939
                                         (__v64qi)__W);
940
}
941
 
942
static __inline__ __m512i __DEFAULT_FN_ATTRS512
943
_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
944
{
945
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
946
                                         (__v64qi)_mm512_shuffle_epi8(__A, __B),
947
                                         (__v64qi)_mm512_setzero_si512());
948
}
949
 
950
static __inline__ __m512i __DEFAULT_FN_ATTRS512
951
_mm512_subs_epi8 (__m512i __A, __m512i __B)
952
{
953
  return (__m512i)__builtin_elementwise_sub_sat((__v64qs)__A, (__v64qs)__B);
954
}
955
 
956
static __inline__ __m512i __DEFAULT_FN_ATTRS512
957
_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
958
{
959
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
960
                                        (__v64qi)_mm512_subs_epi8(__A, __B),
961
                                        (__v64qi)__W);
962
}
963
 
964
static __inline__ __m512i __DEFAULT_FN_ATTRS512
965
_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
966
{
967
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
968
                                        (__v64qi)_mm512_subs_epi8(__A, __B),
969
                                        (__v64qi)_mm512_setzero_si512());
970
}
971
 
972
static __inline__ __m512i __DEFAULT_FN_ATTRS512
973
_mm512_subs_epi16 (__m512i __A, __m512i __B)
974
{
975
  return (__m512i)__builtin_elementwise_sub_sat((__v32hi)__A, (__v32hi)__B);
976
}
977
 
978
static __inline__ __m512i __DEFAULT_FN_ATTRS512
979
_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
980
{
981
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
982
                                        (__v32hi)_mm512_subs_epi16(__A, __B),
983
                                        (__v32hi)__W);
984
}
985
 
986
static __inline__ __m512i __DEFAULT_FN_ATTRS512
987
_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
988
{
989
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
990
                                        (__v32hi)_mm512_subs_epi16(__A, __B),
991
                                        (__v32hi)_mm512_setzero_si512());
992
}
993
 
994
static __inline__ __m512i __DEFAULT_FN_ATTRS512
995
_mm512_subs_epu8 (__m512i __A, __m512i __B)
996
{
997
  return (__m512i)__builtin_elementwise_sub_sat((__v64qu) __A, (__v64qu) __B);
998
}
999
 
1000
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1001
_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
1002
{
1003
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1004
                                        (__v64qi)_mm512_subs_epu8(__A, __B),
1005
                                        (__v64qi)__W);
1006
}
1007
 
1008
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1009
_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1010
{
1011
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1012
                                        (__v64qi)_mm512_subs_epu8(__A, __B),
1013
                                        (__v64qi)_mm512_setzero_si512());
1014
}
1015
 
1016
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1017
_mm512_subs_epu16 (__m512i __A, __m512i __B)
1018
{
1019
  return (__m512i)__builtin_elementwise_sub_sat((__v32hu) __A, (__v32hu) __B);
1020
}
1021
 
1022
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1023
_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1024
{
1025
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1026
                                        (__v32hi)_mm512_subs_epu16(__A, __B),
1027
                                        (__v32hi)__W);
1028
}
1029
 
1030
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1031
_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1032
{
1033
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1034
                                        (__v32hi)_mm512_subs_epu16(__A, __B),
1035
                                        (__v32hi)_mm512_setzero_si512());
1036
}
1037
 
1038
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1039
_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B)
1040
{
1041
  return (__m512i)__builtin_ia32_vpermi2varhi512((__v32hi)__A, (__v32hi)__I,
1042
                                                 (__v32hi)__B);
1043
}
1044
 
1045
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1046
_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I,
1047
                               __m512i __B)
1048
{
1049
  return (__m512i)__builtin_ia32_selectw_512(__U,
1050
                              (__v32hi)_mm512_permutex2var_epi16(__A, __I, __B),
1051
                              (__v32hi)__A);
1052
}
1053
 
1054
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1055
_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U,
1056
                                __m512i __B)
1057
{
1058
  return (__m512i)__builtin_ia32_selectw_512(__U,
1059
                              (__v32hi)_mm512_permutex2var_epi16(__A, __I, __B),
1060
                              (__v32hi)__I);
1061
}
1062
 
1063
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1064
_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I,
1065
                                __m512i __B)
1066
{
1067
  return (__m512i)__builtin_ia32_selectw_512(__U,
1068
                              (__v32hi)_mm512_permutex2var_epi16(__A, __I, __B),
1069
                              (__v32hi)_mm512_setzero_si512());
1070
}
1071
 
1072
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1073
_mm512_mulhrs_epi16(__m512i __A, __m512i __B)
1074
{
1075
  return (__m512i)__builtin_ia32_pmulhrsw512((__v32hi)__A, (__v32hi)__B);
1076
}
1077
 
1078
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1079
_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1080
{
1081
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1082
                                         (__v32hi)_mm512_mulhrs_epi16(__A, __B),
1083
                                         (__v32hi)__W);
1084
}
1085
 
1086
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1087
_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1088
{
1089
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1090
                                         (__v32hi)_mm512_mulhrs_epi16(__A, __B),
1091
                                         (__v32hi)_mm512_setzero_si512());
1092
}
1093
 
1094
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1095
_mm512_mulhi_epi16(__m512i __A, __m512i __B)
1096
{
1097
  return (__m512i)__builtin_ia32_pmulhw512((__v32hi) __A, (__v32hi) __B);
1098
}
1099
 
1100
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1101
_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1102
       __m512i __B)
1103
{
1104
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1105
                                          (__v32hi)_mm512_mulhi_epi16(__A, __B),
1106
                                          (__v32hi)__W);
1107
}
1108
 
1109
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1110
_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1111
{
1112
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1113
                                          (__v32hi)_mm512_mulhi_epi16(__A, __B),
1114
                                          (__v32hi)_mm512_setzero_si512());
1115
}
1116
 
1117
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1118
_mm512_mulhi_epu16(__m512i __A, __m512i __B)
1119
{
1120
  return (__m512i)__builtin_ia32_pmulhuw512((__v32hi) __A, (__v32hi) __B);
1121
}
1122
 
1123
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1124
_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1125
{
1126
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1127
                                          (__v32hi)_mm512_mulhi_epu16(__A, __B),
1128
                                          (__v32hi)__W);
1129
}
1130
 
1131
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1132
_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1133
{
1134
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1135
                                          (__v32hi)_mm512_mulhi_epu16(__A, __B),
1136
                                          (__v32hi)_mm512_setzero_si512());
1137
}
1138
 
1139
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1140
_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
1141
  return (__m512i)__builtin_ia32_pmaddubsw512((__v64qi)__X, (__v64qi)__Y);
1142
}
1143
 
1144
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1145
_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X,
1146
                          __m512i __Y) {
1147
  return (__m512i)__builtin_ia32_selectw_512((__mmask32) __U,
1148
                                        (__v32hi)_mm512_maddubs_epi16(__X, __Y),
1149
                                        (__v32hi)__W);
1150
}
1151
 
1152
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1153
_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
1154
  return (__m512i)__builtin_ia32_selectw_512((__mmask32) __U,
1155
                                        (__v32hi)_mm512_maddubs_epi16(__X, __Y),
1156
                                        (__v32hi)_mm512_setzero_si512());
1157
}
1158
 
1159
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1160
_mm512_madd_epi16(__m512i __A, __m512i __B) {
1161
  return (__m512i)__builtin_ia32_pmaddwd512((__v32hi)__A, (__v32hi)__B);
1162
}
1163
 
1164
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1165
_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
1166
  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
1167
                                           (__v16si)_mm512_madd_epi16(__A, __B),
1168
                                           (__v16si)__W);
1169
}
1170
 
1171
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1172
_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
1173
  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
1174
                                           (__v16si)_mm512_madd_epi16(__A, __B),
1175
                                           (__v16si)_mm512_setzero_si512());
1176
}
1177
 
1178
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1179
_mm512_cvtsepi16_epi8 (__m512i __A) {
1180
  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1181
               (__v32qi)_mm256_setzero_si256(),
1182
               (__mmask32) -1);
1183
}
1184
 
1185
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1186
_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1187
  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1188
               (__v32qi)__O,
1189
               __M);
1190
}
1191
 
1192
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1193
_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1194
  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1195
               (__v32qi) _mm256_setzero_si256(),
1196
               __M);
1197
}
1198
 
1199
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1200
_mm512_cvtusepi16_epi8 (__m512i __A) {
1201
  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1202
                (__v32qi) _mm256_setzero_si256(),
1203
                (__mmask32) -1);
1204
}
1205
 
1206
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1207
_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1208
  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1209
                (__v32qi) __O,
1210
                __M);
1211
}
1212
 
1213
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1214
_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1215
  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1216
                (__v32qi) _mm256_setzero_si256(),
1217
                __M);
1218
}
1219
 
1220
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1221
_mm512_cvtepi16_epi8 (__m512i __A) {
1222
  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1223
              (__v32qi) _mm256_undefined_si256(),
1224
              (__mmask32) -1);
1225
}
1226
 
1227
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1228
_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1229
  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1230
              (__v32qi) __O,
1231
              __M);
1232
}
1233
 
1234
static __inline__ __m256i __DEFAULT_FN_ATTRS512
1235
_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1236
  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1237
              (__v32qi) _mm256_setzero_si256(),
1238
              __M);
1239
}
1240
 
1241
static __inline__ void __DEFAULT_FN_ATTRS512
1242
_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1243
{
1244
  __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1245
}
1246
 
1247
static __inline__ void __DEFAULT_FN_ATTRS512
1248
_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1249
{
1250
  __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1251
}
1252
 
1253
static __inline__ void __DEFAULT_FN_ATTRS512
1254
_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1255
{
1256
  __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1257
}
1258
 
1259
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1260
_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1261
  return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1262
                                          8,  64+8,   9, 64+9,
1263
                                          10, 64+10, 11, 64+11,
1264
                                          12, 64+12, 13, 64+13,
1265
                                          14, 64+14, 15, 64+15,
1266
                                          24, 64+24, 25, 64+25,
1267
                                          26, 64+26, 27, 64+27,
1268
                                          28, 64+28, 29, 64+29,
1269
                                          30, 64+30, 31, 64+31,
1270
                                          40, 64+40, 41, 64+41,
1271
                                          42, 64+42, 43, 64+43,
1272
                                          44, 64+44, 45, 64+45,
1273
                                          46, 64+46, 47, 64+47,
1274
                                          56, 64+56, 57, 64+57,
1275
                                          58, 64+58, 59, 64+59,
1276
                                          60, 64+60, 61, 64+61,
1277
                                          62, 64+62, 63, 64+63);
1278
}
1279
 
1280
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1281
_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1282
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1283
                                        (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1284
                                        (__v64qi)__W);
1285
}
1286
 
1287
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1288
_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1289
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1290
                                        (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1291
                                        (__v64qi)_mm512_setzero_si512());
1292
}
1293
 
1294
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1295
_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1296
  return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1297
                                          4,  32+4,   5, 32+5,
1298
                                          6,  32+6,   7, 32+7,
1299
                                          12, 32+12, 13, 32+13,
1300
                                          14, 32+14, 15, 32+15,
1301
                                          20, 32+20, 21, 32+21,
1302
                                          22, 32+22, 23, 32+23,
1303
                                          28, 32+28, 29, 32+29,
1304
                                          30, 32+30, 31, 32+31);
1305
}
1306
 
1307
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1308
_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1309
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1310
                                       (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1311
                                       (__v32hi)__W);
1312
}
1313
 
1314
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1315
_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1316
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1317
                                       (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1318
                                       (__v32hi)_mm512_setzero_si512());
1319
}
1320
 
1321
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1322
_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1323
  return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1324
                                          0,  64+0,   1, 64+1,
1325
                                          2,  64+2,   3, 64+3,
1326
                                          4,  64+4,   5, 64+5,
1327
                                          6,  64+6,   7, 64+7,
1328
                                          16, 64+16, 17, 64+17,
1329
                                          18, 64+18, 19, 64+19,
1330
                                          20, 64+20, 21, 64+21,
1331
                                          22, 64+22, 23, 64+23,
1332
                                          32, 64+32, 33, 64+33,
1333
                                          34, 64+34, 35, 64+35,
1334
                                          36, 64+36, 37, 64+37,
1335
                                          38, 64+38, 39, 64+39,
1336
                                          48, 64+48, 49, 64+49,
1337
                                          50, 64+50, 51, 64+51,
1338
                                          52, 64+52, 53, 64+53,
1339
                                          54, 64+54, 55, 64+55);
1340
}
1341
 
1342
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1343
_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1344
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1345
                                        (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1346
                                        (__v64qi)__W);
1347
}
1348
 
1349
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1350
_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1351
  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1352
                                        (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1353
                                        (__v64qi)_mm512_setzero_si512());
1354
}
1355
 
1356
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1357
_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1358
  return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1359
                                          0,  32+0,   1, 32+1,
1360
                                          2,  32+2,   3, 32+3,
1361
                                          8,  32+8,   9, 32+9,
1362
                                          10, 32+10, 11, 32+11,
1363
                                          16, 32+16, 17, 32+17,
1364
                                          18, 32+18, 19, 32+19,
1365
                                          24, 32+24, 25, 32+25,
1366
                                          26, 32+26, 27, 32+27);
1367
}
1368
 
1369
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1370
_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1371
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1372
                                       (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1373
                                       (__v32hi)__W);
1374
}
1375
 
1376
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1377
_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1378
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1379
                                       (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1380
                                       (__v32hi)_mm512_setzero_si512());
1381
}
1382
 
1383
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1384
_mm512_cvtepi8_epi16(__m256i __A)
1385
{
1386
  /* This function always performs a signed extension, but __v32qi is a char
1387
     which may be signed or unsigned, so use __v32qs. */
1388
  return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
1389
}
1390
 
1391
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1392
_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1393
{
1394
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1395
                                             (__v32hi)_mm512_cvtepi8_epi16(__A),
1396
                                             (__v32hi)__W);
1397
}
1398
 
1399
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1400
_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1401
{
1402
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1403
                                             (__v32hi)_mm512_cvtepi8_epi16(__A),
1404
                                             (__v32hi)_mm512_setzero_si512());
1405
}
1406
 
1407
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1408
_mm512_cvtepu8_epi16(__m256i __A)
1409
{
1410
  return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
1411
}
1412
 
1413
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1414
_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1415
{
1416
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1417
                                             (__v32hi)_mm512_cvtepu8_epi16(__A),
1418
                                             (__v32hi)__W);
1419
}
1420
 
1421
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1422
_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1423
{
1424
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1425
                                             (__v32hi)_mm512_cvtepu8_epi16(__A),
1426
                                             (__v32hi)_mm512_setzero_si512());
1427
}
1428
 
1429
 
1430
#define _mm512_shufflehi_epi16(A, imm) \
1431
  ((__m512i)__builtin_ia32_pshufhw512((__v32hi)(__m512i)(A), (int)(imm)))
1432
 
1433
#define _mm512_mask_shufflehi_epi16(W, U, A, imm) \
1434
  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1435
                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1436
                                                                       (imm)), \
1437
                                       (__v32hi)(__m512i)(W)))
1438
 
1439
#define _mm512_maskz_shufflehi_epi16(U, A, imm) \
1440
  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1441
                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1442
                                                                       (imm)), \
1443
                                       (__v32hi)_mm512_setzero_si512()))
1444
 
1445
#define _mm512_shufflelo_epi16(A, imm) \
1446
  ((__m512i)__builtin_ia32_pshuflw512((__v32hi)(__m512i)(A), (int)(imm)))
1447
 
1448
 
1449
#define _mm512_mask_shufflelo_epi16(W, U, A, imm) \
1450
  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1451
                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1452
                                                                       (imm)), \
1453
                                       (__v32hi)(__m512i)(W)))
1454
 
1455
 
1456
#define _mm512_maskz_shufflelo_epi16(U, A, imm) \
1457
  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1458
                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1459
                                                                       (imm)), \
1460
                                       (__v32hi)_mm512_setzero_si512()))
1461
 
1462
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1463
_mm512_sllv_epi16(__m512i __A, __m512i __B)
1464
{
1465
  return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
1466
}
1467
 
1468
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1469
_mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1470
{
1471
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1472
                                           (__v32hi)_mm512_sllv_epi16(__A, __B),
1473
                                           (__v32hi)__W);
1474
}
1475
 
1476
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1477
_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1478
{
1479
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1480
                                           (__v32hi)_mm512_sllv_epi16(__A, __B),
1481
                                           (__v32hi)_mm512_setzero_si512());
1482
}
1483
 
1484
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1485
_mm512_sll_epi16(__m512i __A, __m128i __B)
1486
{
1487
  return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
1488
}
1489
 
1490
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1491
_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1492
{
1493
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1494
                                          (__v32hi)_mm512_sll_epi16(__A, __B),
1495
                                          (__v32hi)__W);
1496
}
1497
 
1498
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1499
_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1500
{
1501
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1502
                                          (__v32hi)_mm512_sll_epi16(__A, __B),
1503
                                          (__v32hi)_mm512_setzero_si512());
1504
}
1505
 
1506
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1507
_mm512_slli_epi16(__m512i __A, unsigned int __B)
1508
{
1509
  return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, (int)__B);
1510
}
1511
 
1512
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1513
_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1514
                       unsigned int __B)
1515
{
1516
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1517
                                         (__v32hi)_mm512_slli_epi16(__A, __B),
1518
                                         (__v32hi)__W);
1519
}
1520
 
1521
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1522
_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, unsigned int __B)
1523
{
1524
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1525
                                         (__v32hi)_mm512_slli_epi16(__A, __B),
1526
                                         (__v32hi)_mm512_setzero_si512());
1527
}
1528
 
1529
#define _mm512_bslli_epi128(a, imm) \
1530
  ((__m512i)__builtin_ia32_pslldqi512_byteshift((__v8di)(__m512i)(a), (int)(imm)))
1531
 
1532
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1533
_mm512_srlv_epi16(__m512i __A, __m512i __B)
1534
{
1535
  return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
1536
}
1537
 
1538
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1539
_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1540
{
1541
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1542
                                           (__v32hi)_mm512_srlv_epi16(__A, __B),
1543
                                           (__v32hi)__W);
1544
}
1545
 
1546
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1547
_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1548
{
1549
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1550
                                           (__v32hi)_mm512_srlv_epi16(__A, __B),
1551
                                           (__v32hi)_mm512_setzero_si512());
1552
}
1553
 
1554
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1555
_mm512_srav_epi16(__m512i __A, __m512i __B)
1556
{
1557
  return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
1558
}
1559
 
1560
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1561
_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1562
{
1563
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1564
                                           (__v32hi)_mm512_srav_epi16(__A, __B),
1565
                                           (__v32hi)__W);
1566
}
1567
 
1568
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1569
_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1570
{
1571
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1572
                                           (__v32hi)_mm512_srav_epi16(__A, __B),
1573
                                           (__v32hi)_mm512_setzero_si512());
1574
}
1575
 
1576
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1577
_mm512_sra_epi16(__m512i __A, __m128i __B)
1578
{
1579
  return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
1580
}
1581
 
1582
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1583
_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1584
{
1585
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1586
                                          (__v32hi)_mm512_sra_epi16(__A, __B),
1587
                                          (__v32hi)__W);
1588
}
1589
 
1590
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1591
_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1592
{
1593
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1594
                                          (__v32hi)_mm512_sra_epi16(__A, __B),
1595
                                          (__v32hi)_mm512_setzero_si512());
1596
}
1597
 
1598
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1599
_mm512_srai_epi16(__m512i __A, unsigned int __B)
1600
{
1601
  return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, (int)__B);
1602
}
1603
 
1604
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1605
_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1606
                       unsigned int __B)
1607
{
1608
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1609
                                         (__v32hi)_mm512_srai_epi16(__A, __B),
1610
                                         (__v32hi)__W);
1611
}
1612
 
1613
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1614
_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, unsigned int __B)
1615
{
1616
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1617
                                         (__v32hi)_mm512_srai_epi16(__A, __B),
1618
                                         (__v32hi)_mm512_setzero_si512());
1619
}
1620
 
1621
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1622
_mm512_srl_epi16(__m512i __A, __m128i __B)
1623
{
1624
  return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
1625
}
1626
 
1627
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1628
_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1629
{
1630
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1631
                                          (__v32hi)_mm512_srl_epi16(__A, __B),
1632
                                          (__v32hi)__W);
1633
}
1634
 
1635
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1636
_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1637
{
1638
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1639
                                          (__v32hi)_mm512_srl_epi16(__A, __B),
1640
                                          (__v32hi)_mm512_setzero_si512());
1641
}
1642
 
1643
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1644
_mm512_srli_epi16(__m512i __A, unsigned int __B)
1645
{
1646
  return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, (int)__B);
1647
}
1648
 
1649
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1650
_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1651
                       unsigned int __B)
1652
{
1653
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1654
                                         (__v32hi)_mm512_srli_epi16(__A, __B),
1655
                                         (__v32hi)__W);
1656
}
1657
 
1658
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1659
_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
1660
{
1661
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1662
                                         (__v32hi)_mm512_srli_epi16(__A, (unsigned int)__B),
1663
                                         (__v32hi)_mm512_setzero_si512());
1664
}
1665
 
1666
#define _mm512_bsrli_epi128(a, imm) \
1667
  ((__m512i)__builtin_ia32_psrldqi512_byteshift((__v8di)(__m512i)(a), (int)(imm)))
1668
 
1669
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1670
_mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
1671
{
1672
  return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
1673
                (__v32hi) __A,
1674
                (__v32hi) __W);
1675
}
1676
 
1677
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1678
_mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
1679
{
1680
  return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
1681
                (__v32hi) __A,
1682
                (__v32hi) _mm512_setzero_si512 ());
1683
}
1684
 
1685
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1686
_mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
1687
{
1688
  return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
1689
                (__v64qi) __A,
1690
                (__v64qi) __W);
1691
}
1692
 
1693
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1694
_mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
1695
{
1696
  return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
1697
                (__v64qi) __A,
1698
                (__v64qi) _mm512_setzero_si512 ());
1699
}
1700
 
1701
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1702
_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
1703
{
1704
  return (__m512i) __builtin_ia32_selectb_512(__M,
1705
                                              (__v64qi)_mm512_set1_epi8(__A),
1706
                                              (__v64qi) __O);
1707
}
1708
 
1709
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1710
_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
1711
{
1712
  return (__m512i) __builtin_ia32_selectb_512(__M,
1713
                                              (__v64qi) _mm512_set1_epi8(__A),
1714
                                              (__v64qi) _mm512_setzero_si512());
1715
}
1716
 
1717
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1718
_mm512_kunpackd (__mmask64 __A, __mmask64 __B)
1719
{
1720
  return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
1721
                (__mmask64) __B);
1722
}
1723
 
1724
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1725
_mm512_kunpackw (__mmask32 __A, __mmask32 __B)
1726
{
1727
  return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
1728
                (__mmask32) __B);
1729
}
1730
 
1731
static __inline __m512i __DEFAULT_FN_ATTRS512
1732
_mm512_loadu_epi16 (void const *__P)
1733
{
1734
  struct __loadu_epi16 {
1735
    __m512i_u __v;
1736
  } __attribute__((__packed__, __may_alias__));
1737
  return ((const struct __loadu_epi16*)__P)->__v;
1738
}
1739
 
1740
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1741
_mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
1742
{
1743
  return (__m512i) __builtin_ia32_loaddquhi512_mask ((const __v32hi *) __P,
1744
                 (__v32hi) __W,
1745
                 (__mmask32) __U);
1746
}
1747
 
1748
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1749
_mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
1750
{
1751
  return (__m512i) __builtin_ia32_loaddquhi512_mask ((const __v32hi *) __P,
1752
                 (__v32hi)
1753
                 _mm512_setzero_si512 (),
1754
                 (__mmask32) __U);
1755
}
1756
 
1757
static __inline __m512i __DEFAULT_FN_ATTRS512
1758
_mm512_loadu_epi8 (void const *__P)
1759
{
1760
  struct __loadu_epi8 {
1761
    __m512i_u __v;
1762
  } __attribute__((__packed__, __may_alias__));
1763
  return ((const struct __loadu_epi8*)__P)->__v;
1764
}
1765
 
1766
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1767
_mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
1768
{
1769
  return (__m512i) __builtin_ia32_loaddquqi512_mask ((const __v64qi *) __P,
1770
                 (__v64qi) __W,
1771
                 (__mmask64) __U);
1772
}
1773
 
1774
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1775
_mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
1776
{
1777
  return (__m512i) __builtin_ia32_loaddquqi512_mask ((const __v64qi *) __P,
1778
                 (__v64qi)
1779
                 _mm512_setzero_si512 (),
1780
                 (__mmask64) __U);
1781
}
1782
 
1783
static __inline void __DEFAULT_FN_ATTRS512
1784
_mm512_storeu_epi16 (void *__P, __m512i __A)
1785
{
1786
  struct __storeu_epi16 {
1787
    __m512i_u __v;
1788
  } __attribute__((__packed__, __may_alias__));
1789
  ((struct __storeu_epi16*)__P)->__v = __A;
1790
}
1791
 
1792
static __inline__ void __DEFAULT_FN_ATTRS512
1793
_mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
1794
{
1795
  __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
1796
             (__v32hi) __A,
1797
             (__mmask32) __U);
1798
}
1799
 
1800
static __inline void __DEFAULT_FN_ATTRS512
1801
_mm512_storeu_epi8 (void *__P, __m512i __A)
1802
{
1803
  struct __storeu_epi8 {
1804
    __m512i_u __v;
1805
  } __attribute__((__packed__, __may_alias__));
1806
  ((struct __storeu_epi8*)__P)->__v = __A;
1807
}
1808
 
1809
static __inline__ void __DEFAULT_FN_ATTRS512
1810
_mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
1811
{
1812
  __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
1813
             (__v64qi) __A,
1814
             (__mmask64) __U);
1815
}
1816
 
1817
static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1818
_mm512_test_epi8_mask (__m512i __A, __m512i __B)
1819
{
1820
  return _mm512_cmpneq_epi8_mask (_mm512_and_epi32 (__A, __B),
1821
                                  _mm512_setzero_si512());
1822
}
1823
 
1824
static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1825
_mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1826
{
1827
  return _mm512_mask_cmpneq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1828
                                       _mm512_setzero_si512());
1829
}
1830
 
1831
static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1832
_mm512_test_epi16_mask (__m512i __A, __m512i __B)
1833
{
1834
  return _mm512_cmpneq_epi16_mask (_mm512_and_epi32 (__A, __B),
1835
                                   _mm512_setzero_si512());
1836
}
1837
 
1838
static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1839
_mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1840
{
1841
  return _mm512_mask_cmpneq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1842
                                        _mm512_setzero_si512());
1843
}
1844
 
1845
static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1846
_mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1847
{
1848
  return _mm512_cmpeq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512());
1849
}
1850
 
1851
static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1852
_mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1853
{
1854
  return _mm512_mask_cmpeq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1855
                                      _mm512_setzero_si512());
1856
}
1857
 
1858
static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1859
_mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1860
{
1861
  return _mm512_cmpeq_epi16_mask (_mm512_and_epi32 (__A, __B),
1862
                                  _mm512_setzero_si512());
1863
}
1864
 
1865
static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1866
_mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1867
{
1868
  return _mm512_mask_cmpeq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1869
                                       _mm512_setzero_si512());
1870
}
1871
 
1872
static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1873
_mm512_movepi8_mask (__m512i __A)
1874
{
1875
  return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1876
}
1877
 
1878
static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1879
_mm512_movepi16_mask (__m512i __A)
1880
{
1881
  return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1882
}
1883
 
1884
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1885
_mm512_movm_epi8 (__mmask64 __A)
1886
{
1887
  return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1888
}
1889
 
1890
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1891
_mm512_movm_epi16 (__mmask32 __A)
1892
{
1893
  return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1894
}
1895
 
1896
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1897
_mm512_broadcastb_epi8 (__m128i __A)
1898
{
1899
  return (__m512i)__builtin_shufflevector((__v16qi) __A, (__v16qi) __A,
1900
                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901
                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902
                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903
                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1904
}
1905
 
1906
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1907
_mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
1908
{
1909
  return (__m512i)__builtin_ia32_selectb_512(__M,
1910
                                             (__v64qi) _mm512_broadcastb_epi8(__A),
1911
                                             (__v64qi) __O);
1912
}
1913
 
1914
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1915
_mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
1916
{
1917
  return (__m512i)__builtin_ia32_selectb_512(__M,
1918
                                             (__v64qi) _mm512_broadcastb_epi8(__A),
1919
                                             (__v64qi) _mm512_setzero_si512());
1920
}
1921
 
1922
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1923
_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
1924
{
1925
  return (__m512i) __builtin_ia32_selectw_512(__M,
1926
                                              (__v32hi) _mm512_set1_epi16(__A),
1927
                                              (__v32hi) __O);
1928
}
1929
 
1930
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1931
_mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
1932
{
1933
  return (__m512i) __builtin_ia32_selectw_512(__M,
1934
                                              (__v32hi) _mm512_set1_epi16(__A),
1935
                                              (__v32hi) _mm512_setzero_si512());
1936
}
1937
 
1938
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1939
_mm512_broadcastw_epi16 (__m128i __A)
1940
{
1941
  return (__m512i)__builtin_shufflevector((__v8hi) __A, (__v8hi) __A,
1942
                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943
                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1944
}
1945
 
1946
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1947
_mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
1948
{
1949
  return (__m512i)__builtin_ia32_selectw_512(__M,
1950
                                             (__v32hi) _mm512_broadcastw_epi16(__A),
1951
                                             (__v32hi) __O);
1952
}
1953
 
1954
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1955
_mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
1956
{
1957
  return (__m512i)__builtin_ia32_selectw_512(__M,
1958
                                             (__v32hi) _mm512_broadcastw_epi16(__A),
1959
                                             (__v32hi) _mm512_setzero_si512());
1960
}
1961
 
1962
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1963
_mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
1964
{
1965
  return (__m512i)__builtin_ia32_permvarhi512((__v32hi)__B, (__v32hi)__A);
1966
}
1967
 
1968
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1969
_mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
1970
        __m512i __B)
1971
{
1972
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
1973
                                    (__v32hi)_mm512_permutexvar_epi16(__A, __B),
1974
                                    (__v32hi)_mm512_setzero_si512());
1975
}
1976
 
1977
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1978
_mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1979
             __m512i __B)
1980
{
1981
  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
1982
                                    (__v32hi)_mm512_permutexvar_epi16(__A, __B),
1983
                                    (__v32hi)__W);
1984
}
1985
 
1986
#define _mm512_alignr_epi8(A, B, N) \
1987
  ((__m512i)__builtin_ia32_palignr512((__v64qi)(__m512i)(A), \
1988
                                      (__v64qi)(__m512i)(B), (int)(N)))
1989
 
1990
#define _mm512_mask_alignr_epi8(W, U, A, B, N) \
1991
  ((__m512i)__builtin_ia32_selectb_512((__mmask64)(U), \
1992
                              (__v64qi)_mm512_alignr_epi8((A), (B), (int)(N)), \
1993
                              (__v64qi)(__m512i)(W)))
1994
 
1995
#define _mm512_maskz_alignr_epi8(U, A, B, N) \
1996
  ((__m512i)__builtin_ia32_selectb_512((__mmask64)(U), \
1997
                              (__v64qi)_mm512_alignr_epi8((A), (B), (int)(N)), \
1998
                              (__v64qi)(__m512i)_mm512_setzero_si512()))
1999
 
2000
#define _mm512_dbsad_epu8(A, B, imm) \
2001
  ((__m512i)__builtin_ia32_dbpsadbw512((__v64qi)(__m512i)(A), \
2002
                                       (__v64qi)(__m512i)(B), (int)(imm)))
2003
 
2004
#define _mm512_mask_dbsad_epu8(W, U, A, B, imm) \
2005
  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
2006
                                  (__v32hi)_mm512_dbsad_epu8((A), (B), (imm)), \
2007
                                  (__v32hi)(__m512i)(W)))
2008
 
2009
#define _mm512_maskz_dbsad_epu8(U, A, B, imm) \
2010
  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
2011
                                  (__v32hi)_mm512_dbsad_epu8((A), (B), (imm)), \
2012
                                  (__v32hi)_mm512_setzero_si512()))
2013
 
2014
static __inline__ __m512i __DEFAULT_FN_ATTRS512
2015
_mm512_sad_epu8 (__m512i __A, __m512i __B)
2016
{
2017
 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2018
               (__v64qi) __B);
2019
}
2020
 
2021
#undef __DEFAULT_FN_ATTRS512
2022
#undef __DEFAULT_FN_ATTRS
2023
 
2024
#endif