Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
screetsec
GitHub Repository: screetsec/TheFatRat
Path: blob/master/tools/android-sdk/renderscript/clang-include/avx512bwintrin.h
496 views
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
348
_mm512_add_epi8 (__m512i __A, __m512i __B) {
349
return (__m512i) ((__v64qu) __A + (__v64qu) __B);
350
}
351
352
static __inline__ __m512i __DEFAULT_FN_ATTRS
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
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
369
_mm512_sub_epi8 (__m512i __A, __m512i __B) {
370
return (__m512i) ((__v64qu) __A - (__v64qu) __B);
371
}
372
373
static __inline__ __m512i __DEFAULT_FN_ATTRS
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
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
390
_mm512_add_epi16 (__m512i __A, __m512i __B) {
391
return (__m512i) ((__v32hu) __A + (__v32hu) __B);
392
}
393
394
static __inline__ __m512i __DEFAULT_FN_ATTRS
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
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
411
_mm512_sub_epi16 (__m512i __A, __m512i __B) {
412
return (__m512i) ((__v32hu) __A - (__v32hu) __B);
413
}
414
415
static __inline__ __m512i __DEFAULT_FN_ATTRS
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
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
432
_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
433
return (__m512i) ((__v32hu) __A * (__v32hu) __B);
434
}
435
436
static __inline__ __m512i __DEFAULT_FN_ATTRS
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2243
_mm512_movepi8_mask (__m512i __A)
2244
{
2245
return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
2246
}
2247
2248
static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2249
_mm512_movepi16_mask (__m512i __A)
2250
{
2251
return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
2252
}
2253
2254
static __inline__ __m512i __DEFAULT_FN_ATTRS
2255
_mm512_movm_epi8 (__mmask64 __A)
2256
{
2257
return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
2258
}
2259
2260
static __inline__ __m512i __DEFAULT_FN_ATTRS
2261
_mm512_movm_epi16 (__mmask32 __A)
2262
{
2263
return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
2264
}
2265
2266
static __inline__ __m512i __DEFAULT_FN_ATTRS
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
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
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
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
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
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
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
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
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
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
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
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
2412