blob: 8f6dd19ac893ad9fc93b08efc01fd7f1b50ad999 [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
30typedef double __v8df __attribute__((__vector_size__(64)));
31typedef float __v16sf __attribute__((__vector_size__(64)));
32typedef long long __v8di __attribute__((__vector_size__(64)));
33typedef int __v16si __attribute__((__vector_size__(64)));
34
35typedef float __m512 __attribute__((__vector_size__(64)));
36typedef double __m512d __attribute__((__vector_size__(64)));
37typedef long long __m512i __attribute__((__vector_size__(64)));
38
39typedef unsigned char __mmask8;
40typedef unsigned short __mmask16;
41
42/* Rounding mode macros. */
43#define _MM_FROUND_TO_NEAREST_INT 0x00
44#define _MM_FROUND_TO_NEG_INF 0x01
45#define _MM_FROUND_TO_POS_INF 0x02
46#define _MM_FROUND_TO_ZERO 0x03
47#define _MM_FROUND_CUR_DIRECTION 0x04
48
Eric Christopher4d1851682015-06-17 07:09:20 +000049/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +000050#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +000051
Adam Nemet0d5bb552014-07-28 17:14:40 +000052/* Create vectors with repeated elements */
53
Michael Kupersteine45af542015-06-30 13:36:19 +000054static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000055_mm512_setzero_si512(void)
56{
57 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
58}
59
Simon Pilgrim5aba9922015-08-26 21:17:12 +000060static __inline__ __m512d __DEFAULT_FN_ATTRS
61_mm512_undefined_pd()
62{
63 return (__m512d)__builtin_ia32_undef512();
64}
65
66static __inline__ __m512 __DEFAULT_FN_ATTRS
67_mm512_undefined()
68{
69 return (__m512)__builtin_ia32_undef512();
70}
71
72static __inline__ __m512 __DEFAULT_FN_ATTRS
73_mm512_undefined_ps()
74{
75 return (__m512)__builtin_ia32_undef512();
76}
77
78static __inline__ __m512i __DEFAULT_FN_ATTRS
79_mm512_undefined_epi32()
80{
81 return (__m512i)__builtin_ia32_undef512();
82}
83
Michael Kupersteine45af542015-06-30 13:36:19 +000084static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000085_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
86{
87 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
88 (__v16si)
89 _mm512_setzero_si512 (),
90 __M);
91}
92
Michael Kupersteine45af542015-06-30 13:36:19 +000093static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000094_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
95{
96#ifdef __x86_64__
97 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
98 (__v8di)
99 _mm512_setzero_si512 (),
100 __M);
101#else
102 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
103 (__v8di)
104 _mm512_setzero_si512 (),
105 __M);
106#endif
107}
108
Michael Kupersteine45af542015-06-30 13:36:19 +0000109static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000110_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000111{
112 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
113 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
114}
Michael Kupersteine45af542015-06-30 13:36:19 +0000115static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000116_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000117{
118 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
119}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000120
Michael Kupersteine45af542015-06-30 13:36:19 +0000121static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000122_mm512_set1_ps(float __w)
123{
124 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
125 __w, __w, __w, __w, __w, __w, __w, __w };
126}
127
Michael Kupersteine45af542015-06-30 13:36:19 +0000128static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000129_mm512_set1_pd(double __w)
130{
131 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
132}
133
Michael Kupersteine45af542015-06-30 13:36:19 +0000134static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000135_mm512_set1_epi32(int __s)
136{
137 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
138 __s, __s, __s, __s, __s, __s, __s, __s };
139}
140
Michael Kupersteine45af542015-06-30 13:36:19 +0000141static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000142_mm512_set1_epi64(long long __d)
143{
144 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
145}
146
Michael Kupersteine45af542015-06-30 13:36:19 +0000147static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000148_mm512_broadcastss_ps(__m128 __X)
149{
150 float __f = __X[0];
151 return (__v16sf){ __f, __f, __f, __f,
152 __f, __f, __f, __f,
153 __f, __f, __f, __f,
154 __f, __f, __f, __f };
155}
156
Michael Kupersteine45af542015-06-30 13:36:19 +0000157static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000158_mm512_broadcastsd_pd(__m128d __X)
159{
160 double __d = __X[0];
161 return (__v8df){ __d, __d, __d, __d,
162 __d, __d, __d, __d };
163}
164
Adam Nemetc871ff92014-07-30 16:51:24 +0000165/* Cast between vector types */
166
Michael Kupersteine45af542015-06-30 13:36:19 +0000167static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000168_mm512_castpd256_pd512(__m256d __a)
169{
170 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
171}
172
Michael Kupersteine45af542015-06-30 13:36:19 +0000173static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000174_mm512_castps256_ps512(__m256 __a)
175{
176 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
177 -1, -1, -1, -1, -1, -1, -1, -1);
178}
179
Michael Kupersteine45af542015-06-30 13:36:19 +0000180static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000181_mm512_castpd512_pd128(__m512d __a)
182{
183 return __builtin_shufflevector(__a, __a, 0, 1);
184}
185
Michael Kupersteine45af542015-06-30 13:36:19 +0000186static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000187_mm512_castps512_ps128(__m512 __a)
188{
189 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
190}
191
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000192/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000193static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000194_mm512_and_epi32(__m512i __a, __m512i __b)
195{
196 return __a & __b;
197}
198
Michael Kupersteine45af542015-06-30 13:36:19 +0000199static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000200_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
201{
202 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
203 (__v16si) __b,
204 (__v16si) __src,
205 (__mmask16) __k);
206}
Michael Kupersteine45af542015-06-30 13:36:19 +0000207static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000208_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
209{
210 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
211 (__v16si) __b,
212 (__v16si)
213 _mm512_setzero_si512 (),
214 (__mmask16) __k);
215}
216
Michael Kupersteine45af542015-06-30 13:36:19 +0000217static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000218_mm512_and_epi64(__m512i __a, __m512i __b)
219{
220 return __a & __b;
221}
222
Michael Kupersteine45af542015-06-30 13:36:19 +0000223static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000224_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
225{
226 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
227 (__v8di) __b,
228 (__v8di) __src,
229 (__mmask8) __k);
230}
Michael Kupersteine45af542015-06-30 13:36:19 +0000231static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000232_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
233{
234 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
235 (__v8di) __b,
236 (__v8di)
237 _mm512_setzero_si512 (),
238 (__mmask8) __k);
239}
240
Michael Kupersteine45af542015-06-30 13:36:19 +0000241static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000242_mm512_andnot_epi32 (__m512i __A, __m512i __B)
243{
244 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
245 (__v16si) __B,
246 (__v16si)
247 _mm512_setzero_si512 (),
248 (__mmask16) -1);
249}
250
Michael Kupersteine45af542015-06-30 13:36:19 +0000251static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000252_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
253{
254 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
255 (__v16si) __B,
256 (__v16si) __W,
257 (__mmask16) __U);
258}
259
Michael Kupersteine45af542015-06-30 13:36:19 +0000260static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000261_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
262{
263 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
264 (__v16si) __B,
265 (__v16si)
266 _mm512_setzero_si512 (),
267 (__mmask16) __U);
268}
269
Michael Kupersteine45af542015-06-30 13:36:19 +0000270static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000271_mm512_andnot_epi64 (__m512i __A, __m512i __B)
272{
273 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
274 (__v8di) __B,
275 (__v8di)
276 _mm512_setzero_si512 (),
277 (__mmask8) -1);
278}
279
Michael Kupersteine45af542015-06-30 13:36:19 +0000280static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000281_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
282{
283 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
284 (__v8di) __B,
285 (__v8di) __W, __U);
286}
287
Michael Kupersteine45af542015-06-30 13:36:19 +0000288static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000289_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
290{
291 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
292 (__v8di) __B,
293 (__v8di)
294 _mm512_setzero_pd (),
295 __U);
296}
Michael Kupersteine45af542015-06-30 13:36:19 +0000297static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000298_mm512_or_epi32(__m512i __a, __m512i __b)
299{
300 return __a | __b;
301}
302
Michael Kupersteine45af542015-06-30 13:36:19 +0000303static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000304_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
305{
306 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
307 (__v16si) __b,
308 (__v16si) __src,
309 (__mmask16) __k);
310}
Michael Kupersteine45af542015-06-30 13:36:19 +0000311static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000312_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
313{
314 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
315 (__v16si) __b,
316 (__v16si)
317 _mm512_setzero_si512 (),
318 (__mmask16) __k);
319}
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000322_mm512_or_epi64(__m512i __a, __m512i __b)
323{
324 return __a | __b;
325}
326
Michael Kupersteine45af542015-06-30 13:36:19 +0000327static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000328_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
329{
330 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
331 (__v8di) __b,
332 (__v8di) __src,
333 (__mmask8) __k);
334}
Michael Kupersteine45af542015-06-30 13:36:19 +0000335static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000336_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
337{
338 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
339 (__v8di) __b,
340 (__v8di)
341 _mm512_setzero_si512 (),
342 (__mmask8) __k);
343}
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000346_mm512_xor_epi32(__m512i __a, __m512i __b)
347{
348 return __a ^ __b;
349}
350
Michael Kupersteine45af542015-06-30 13:36:19 +0000351static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000352_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
353{
354 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
355 (__v16si) __b,
356 (__v16si) __src,
357 (__mmask16) __k);
358}
Michael Kupersteine45af542015-06-30 13:36:19 +0000359static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000360_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
361{
362 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
363 (__v16si) __b,
364 (__v16si)
365 _mm512_setzero_si512 (),
366 (__mmask16) __k);
367}
368
Michael Kupersteine45af542015-06-30 13:36:19 +0000369static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000370_mm512_xor_epi64(__m512i __a, __m512i __b)
371{
372 return __a ^ __b;
373}
374
Michael Kupersteine45af542015-06-30 13:36:19 +0000375static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000376_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
377{
378 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
379 (__v8di) __b,
380 (__v8di) __src,
381 (__mmask8) __k);
382}
Michael Kupersteine45af542015-06-30 13:36:19 +0000383static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000384_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
385{
386 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
387 (__v8di) __b,
388 (__v8di)
389 _mm512_setzero_si512 (),
390 (__mmask8) __k);
391}
392
Michael Kupersteine45af542015-06-30 13:36:19 +0000393static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000394_mm512_and_si512(__m512i __a, __m512i __b)
395{
396 return __a & __b;
397}
398
Michael Kupersteine45af542015-06-30 13:36:19 +0000399static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000400_mm512_or_si512(__m512i __a, __m512i __b)
401{
402 return __a | __b;
403}
404
Michael Kupersteine45af542015-06-30 13:36:19 +0000405static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000406_mm512_xor_si512(__m512i __a, __m512i __b)
407{
408 return __a ^ __b;
409}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000410/* Arithmetic */
411
Michael Kupersteine45af542015-06-30 13:36:19 +0000412static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000413_mm512_add_pd(__m512d __a, __m512d __b)
414{
415 return __a + __b;
416}
417
Michael Kupersteine45af542015-06-30 13:36:19 +0000418static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000419_mm512_add_ps(__m512 __a, __m512 __b)
420{
421 return __a + __b;
422}
423
Michael Kupersteine45af542015-06-30 13:36:19 +0000424static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000425_mm512_mul_pd(__m512d __a, __m512d __b)
426{
427 return __a * __b;
428}
429
Michael Kupersteine45af542015-06-30 13:36:19 +0000430static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000431_mm512_mul_ps(__m512 __a, __m512 __b)
432{
433 return __a * __b;
434}
435
Michael Kupersteine45af542015-06-30 13:36:19 +0000436static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000437_mm512_sub_pd(__m512d __a, __m512d __b)
438{
439 return __a - __b;
440}
441
Michael Kupersteine45af542015-06-30 13:36:19 +0000442static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000443_mm512_sub_ps(__m512 __a, __m512 __b)
444{
445 return __a - __b;
446}
447
Michael Kupersteine45af542015-06-30 13:36:19 +0000448static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000449_mm512_add_epi64 (__m512i __A, __m512i __B)
450{
451 return (__m512i) ((__v8di) __A + (__v8di) __B);
452}
453
Michael Kupersteine45af542015-06-30 13:36:19 +0000454static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000455_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
456{
457 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
458 (__v8di) __B,
459 (__v8di) __W,
460 (__mmask8) __U);
461}
462
Michael Kupersteine45af542015-06-30 13:36:19 +0000463static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000464_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
465{
466 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
467 (__v8di) __B,
468 (__v8di)
469 _mm512_setzero_si512 (),
470 (__mmask8) __U);
471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000474_mm512_sub_epi64 (__m512i __A, __m512i __B)
475{
476 return (__m512i) ((__v8di) __A - (__v8di) __B);
477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000480_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
481{
482 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
483 (__v8di) __B,
484 (__v8di) __W,
485 (__mmask8) __U);
486}
487
Michael Kupersteine45af542015-06-30 13:36:19 +0000488static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000489_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
490{
491 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
492 (__v8di) __B,
493 (__v8di)
494 _mm512_setzero_si512 (),
495 (__mmask8) __U);
496}
497
Michael Kupersteine45af542015-06-30 13:36:19 +0000498static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000499_mm512_add_epi32 (__m512i __A, __m512i __B)
500{
501 return (__m512i) ((__v16si) __A + (__v16si) __B);
502}
503
Michael Kupersteine45af542015-06-30 13:36:19 +0000504static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000505_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
506{
507 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
508 (__v16si) __B,
509 (__v16si) __W,
510 (__mmask16) __U);
511}
512
Michael Kupersteine45af542015-06-30 13:36:19 +0000513static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000514_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
515{
516 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
517 (__v16si) __B,
518 (__v16si)
519 _mm512_setzero_si512 (),
520 (__mmask16) __U);
521}
522
Michael Kupersteine45af542015-06-30 13:36:19 +0000523static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000524_mm512_sub_epi32 (__m512i __A, __m512i __B)
525{
526 return (__m512i) ((__v16si) __A - (__v16si) __B);
527}
528
Michael Kupersteine45af542015-06-30 13:36:19 +0000529static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000530_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
531{
532 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
533 (__v16si) __B,
534 (__v16si) __W,
535 (__mmask16) __U);
536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000539_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
540{
541 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
542 (__v16si) __B,
543 (__v16si)
544 _mm512_setzero_si512 (),
545 (__mmask16) __U);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000549_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000550{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000551 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
552 (__v8df) __B,
553 (__v8df)
554 _mm512_setzero_pd (),
555 (__mmask8) -1,
556 _MM_FROUND_CUR_DIRECTION);
557}
558
Michael Kupersteine45af542015-06-30 13:36:19 +0000559static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000560_mm512_max_ps(__m512 __A, __m512 __B)
561{
562 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
563 (__v16sf) __B,
564 (__v16sf)
565 _mm512_setzero_ps (),
566 (__mmask16) -1,
567 _MM_FROUND_CUR_DIRECTION);
568}
569
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000570static __inline__ __m128 __DEFAULT_FN_ATTRS
571_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000572 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000573 (__v4sf) __B,
574 (__v4sf) __W,
575 (__mmask8) __U,
576 _MM_FROUND_CUR_DIRECTION);
577}
578
579static __inline__ __m128 __DEFAULT_FN_ATTRS
580_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000581 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000582 (__v4sf) __B,
583 (__v4sf) _mm_setzero_ps (),
584 (__mmask8) __U,
585 _MM_FROUND_CUR_DIRECTION);
586}
587
588#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000589 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000590 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
591
592#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000593 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000594 (__v4sf) __W, (__mmask8) __U,__R); })
595
596#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000597 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000598 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
599
600static __inline__ __m128d __DEFAULT_FN_ATTRS
601_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000602 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000603 (__v2df) __B,
604 (__v2df) __W,
605 (__mmask8) __U,
606 _MM_FROUND_CUR_DIRECTION);
607}
608
609static __inline__ __m128d __DEFAULT_FN_ATTRS
610_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000611 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000612 (__v2df) __B,
613 (__v2df) _mm_setzero_pd (),
614 (__mmask8) __U,
615 _MM_FROUND_CUR_DIRECTION);
616}
617
618#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000619 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000620 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
621
622#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000623 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000624 (__v2df) __W, (__mmask8) __U,__R); })
625
626#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000627 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000628 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
629
Adam Nemet0d5bb552014-07-28 17:14:40 +0000630static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000631__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000632_mm512_max_epi32(__m512i __A, __m512i __B)
633{
634 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
635 (__v16si) __B,
636 (__v16si)
637 _mm512_setzero_si512 (),
638 (__mmask16) -1);
639}
640
Michael Kupersteine45af542015-06-30 13:36:19 +0000641static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000642_mm512_max_epu32(__m512i __A, __m512i __B)
643{
644 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
645 (__v16si) __B,
646 (__v16si)
647 _mm512_setzero_si512 (),
648 (__mmask16) -1);
649}
650
Michael Kupersteine45af542015-06-30 13:36:19 +0000651static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000652_mm512_max_epi64(__m512i __A, __m512i __B)
653{
654 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
655 (__v8di) __B,
656 (__v8di)
657 _mm512_setzero_si512 (),
658 (__mmask8) -1);
659}
660
Michael Kupersteine45af542015-06-30 13:36:19 +0000661static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000662_mm512_max_epu64(__m512i __A, __m512i __B)
663{
664 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
665 (__v8di) __B,
666 (__v8di)
667 _mm512_setzero_si512 (),
668 (__mmask8) -1);
669}
670
Michael Kupersteine45af542015-06-30 13:36:19 +0000671static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000672_mm512_min_pd(__m512d __A, __m512d __B)
673{
674 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
675 (__v8df) __B,
676 (__v8df)
677 _mm512_setzero_pd (),
678 (__mmask8) -1,
679 _MM_FROUND_CUR_DIRECTION);
680}
681
Michael Kupersteine45af542015-06-30 13:36:19 +0000682static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000683_mm512_min_ps(__m512 __A, __m512 __B)
684{
685 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
686 (__v16sf) __B,
687 (__v16sf)
688 _mm512_setzero_ps (),
689 (__mmask16) -1,
690 _MM_FROUND_CUR_DIRECTION);
691}
692
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000693static __inline__ __m128 __DEFAULT_FN_ATTRS
694_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000695 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000696 (__v4sf) __B,
697 (__v4sf) __W,
698 (__mmask8) __U,
699 _MM_FROUND_CUR_DIRECTION);
700}
701
702static __inline__ __m128 __DEFAULT_FN_ATTRS
703_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000704 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000705 (__v4sf) __B,
706 (__v4sf) _mm_setzero_ps (),
707 (__mmask8) __U,
708 _MM_FROUND_CUR_DIRECTION);
709}
710
711#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000712 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000713 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
714
715#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000716 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000717 (__v4sf) __W, (__mmask8) __U,__R); })
718
719#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000720 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000721 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
722
723static __inline__ __m128d __DEFAULT_FN_ATTRS
724_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000725 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000726 (__v2df) __B,
727 (__v2df) __W,
728 (__mmask8) __U,
729 _MM_FROUND_CUR_DIRECTION);
730}
731
732static __inline__ __m128d __DEFAULT_FN_ATTRS
733_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000734 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000735 (__v2df) __B,
736 (__v2df) _mm_setzero_pd (),
737 (__mmask8) __U,
738 _MM_FROUND_CUR_DIRECTION);
739}
740
741#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000742 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000743 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
744
745#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000746 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000747 (__v2df) __W, (__mmask8) __U,__R); })
748
749#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000750 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000751 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
752
Adam Nemet0d5bb552014-07-28 17:14:40 +0000753static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000754__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000755_mm512_min_epi32(__m512i __A, __m512i __B)
756{
757 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
758 (__v16si) __B,
759 (__v16si)
760 _mm512_setzero_si512 (),
761 (__mmask16) -1);
762}
763
Michael Kupersteine45af542015-06-30 13:36:19 +0000764static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000765_mm512_min_epu32(__m512i __A, __m512i __B)
766{
767 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
768 (__v16si) __B,
769 (__v16si)
770 _mm512_setzero_si512 (),
771 (__mmask16) -1);
772}
773
Michael Kupersteine45af542015-06-30 13:36:19 +0000774static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000775_mm512_min_epi64(__m512i __A, __m512i __B)
776{
777 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
778 (__v8di) __B,
779 (__v8di)
780 _mm512_setzero_si512 (),
781 (__mmask8) -1);
782}
783
Michael Kupersteine45af542015-06-30 13:36:19 +0000784static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000785_mm512_min_epu64(__m512i __A, __m512i __B)
786{
787 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
788 (__v8di) __B,
789 (__v8di)
790 _mm512_setzero_si512 (),
791 (__mmask8) -1);
792}
793
Michael Kupersteine45af542015-06-30 13:36:19 +0000794static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000795_mm512_mul_epi32(__m512i __X, __m512i __Y)
796{
797 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
798 (__v16si) __Y,
799 (__v8di)
800 _mm512_setzero_si512 (),
801 (__mmask8) -1);
802}
803
Michael Kupersteine45af542015-06-30 13:36:19 +0000804static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000805_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
806{
807 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
808 (__v16si) __Y,
809 (__v8di) __W, __M);
810}
811
Michael Kupersteine45af542015-06-30 13:36:19 +0000812static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000813_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
814{
815 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
816 (__v16si) __Y,
817 (__v8di)
818 _mm512_setzero_si512 (),
819 __M);
820}
821
Michael Kupersteine45af542015-06-30 13:36:19 +0000822static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000823_mm512_mul_epu32(__m512i __X, __m512i __Y)
824{
825 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
826 (__v16si) __Y,
827 (__v8di)
828 _mm512_setzero_si512 (),
829 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000830}
831
Michael Kupersteine45af542015-06-30 13:36:19 +0000832static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000833_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
834{
835 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
836 (__v16si) __Y,
837 (__v8di) __W, __M);
838}
839
Michael Kupersteine45af542015-06-30 13:36:19 +0000840static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000841_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
842{
843 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
844 (__v16si) __Y,
845 (__v8di)
846 _mm512_setzero_si512 (),
847 __M);
848}
849
Michael Kupersteine45af542015-06-30 13:36:19 +0000850static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000851_mm512_mullo_epi32 (__m512i __A, __m512i __B)
852{
853 return (__m512i) ((__v16si) __A * (__v16si) __B);
854}
855
Michael Kupersteine45af542015-06-30 13:36:19 +0000856static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000857_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
858{
859 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
860 (__v16si) __B,
861 (__v16si)
862 _mm512_setzero_si512 (),
863 __M);
864}
865
Michael Kupersteine45af542015-06-30 13:36:19 +0000866static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000867_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
868{
869 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
870 (__v16si) __B,
871 (__v16si) __W, __M);
872}
873
Michael Kupersteine45af542015-06-30 13:36:19 +0000874static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000875_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000876{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000877 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000878 (__v8df) _mm512_setzero_pd (),
879 (__mmask8) -1,
880 _MM_FROUND_CUR_DIRECTION);
881}
882
Michael Kupersteine45af542015-06-30 13:36:19 +0000883static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000884_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000885{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000886 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000887 (__v16sf) _mm512_setzero_ps (),
888 (__mmask16) -1,
889 _MM_FROUND_CUR_DIRECTION);
890}
891
Michael Kupersteine45af542015-06-30 13:36:19 +0000892static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000893_mm512_rsqrt14_pd(__m512d __A)
894{
895 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
896 (__v8df)
897 _mm512_setzero_pd (),
898 (__mmask8) -1);}
899
Michael Kupersteine45af542015-06-30 13:36:19 +0000900static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000901_mm512_rsqrt14_ps(__m512 __A)
902{
903 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
904 (__v16sf)
905 _mm512_setzero_ps (),
906 (__mmask16) -1);
907}
908
Michael Kupersteine45af542015-06-30 13:36:19 +0000909static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000910_mm_rsqrt14_ss(__m128 __A, __m128 __B)
911{
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000912 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000913 (__v4sf) __B,
914 (__v4sf)
915 _mm_setzero_ps (),
916 (__mmask8) -1);
917}
918
Michael Kupersteine45af542015-06-30 13:36:19 +0000919static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000920_mm_rsqrt14_sd(__m128d __A, __m128d __B)
921{
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000922 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000923 (__v2df) __B,
924 (__v2df)
925 _mm_setzero_pd (),
926 (__mmask8) -1);
927}
928
Michael Kupersteine45af542015-06-30 13:36:19 +0000929static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000930_mm512_rcp14_pd(__m512d __A)
931{
932 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
933 (__v8df)
934 _mm512_setzero_pd (),
935 (__mmask8) -1);
936}
937
Michael Kupersteine45af542015-06-30 13:36:19 +0000938static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000939_mm512_rcp14_ps(__m512 __A)
940{
941 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
942 (__v16sf)
943 _mm512_setzero_ps (),
944 (__mmask16) -1);
945}
Michael Kupersteine45af542015-06-30 13:36:19 +0000946static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000947_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000948{
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000949 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000950 (__v4sf) __B,
951 (__v4sf)
952 _mm_setzero_ps (),
953 (__mmask8) -1);
954}
955
Michael Kupersteine45af542015-06-30 13:36:19 +0000956static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000957_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000958{
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000959 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000960 (__v2df) __B,
961 (__v2df)
962 _mm_setzero_pd (),
963 (__mmask8) -1);
964}
965
Michael Kupersteine45af542015-06-30 13:36:19 +0000966static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000967_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000968{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000969 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
970 _MM_FROUND_FLOOR,
971 (__v16sf) __A, -1,
972 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000973}
974
Michael Kupersteine45af542015-06-30 13:36:19 +0000975static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000976_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000977{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000978 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
979 _MM_FROUND_FLOOR,
980 (__v8df) __A, -1,
981 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000982}
983
Michael Kupersteine45af542015-06-30 13:36:19 +0000984static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000985_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000986{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000987 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
988 _MM_FROUND_CEIL,
989 (__v16sf) __A, -1,
990 _MM_FROUND_CUR_DIRECTION);
991}
992
Michael Kupersteine45af542015-06-30 13:36:19 +0000993static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000994_mm512_ceil_pd(__m512d __A)
995{
996 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
997 _MM_FROUND_CEIL,
998 (__v8df) __A, -1,
999 _MM_FROUND_CUR_DIRECTION);
1000}
1001
Michael Kupersteine45af542015-06-30 13:36:19 +00001002static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001003_mm512_abs_epi64(__m512i __A)
1004{
1005 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1006 (__v8di)
1007 _mm512_setzero_si512 (),
1008 (__mmask8) -1);
1009}
1010
Michael Kupersteine45af542015-06-30 13:36:19 +00001011static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001012_mm512_abs_epi32(__m512i __A)
1013{
1014 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1015 (__v16si)
1016 _mm512_setzero_si512 (),
1017 (__mmask16) -1);
1018}
1019
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001020static __inline__ __m128 __DEFAULT_FN_ATTRS
1021_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001022 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001023 (__v4sf) __B,
1024 (__v4sf) __W,
1025 (__mmask8) __U,
1026 _MM_FROUND_CUR_DIRECTION);
1027}
1028
1029static __inline__ __m128 __DEFAULT_FN_ATTRS
1030_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001031 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001032 (__v4sf) __B,
1033 (__v4sf) _mm_setzero_ps (),
1034 (__mmask8) __U,
1035 _MM_FROUND_CUR_DIRECTION);
1036}
1037
1038#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001039 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001040 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1041
1042#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001043 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001044 (__v4sf) __W, (__mmask8) __U,__R); })
1045
1046#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001047 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001048 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1049
1050static __inline__ __m128d __DEFAULT_FN_ATTRS
1051_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001052 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001053 (__v2df) __B,
1054 (__v2df) __W,
1055 (__mmask8) __U,
1056 _MM_FROUND_CUR_DIRECTION);
1057}
1058
1059static __inline__ __m128d __DEFAULT_FN_ATTRS
1060_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001061 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001062 (__v2df) __B,
1063 (__v2df) _mm_setzero_pd (),
1064 (__mmask8) __U,
1065 _MM_FROUND_CUR_DIRECTION);
1066}
1067#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001068 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001069 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1070
1071#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001072 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001073 (__v2df) __W, (__mmask8) __U,__R); })
1074
1075#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001076 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001077 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1078
Asaf Badouhffeb6242015-07-21 15:27:28 +00001079static __inline__ __m512d __DEFAULT_FN_ATTRS
1080_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1081 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1082 (__v8df) __B,
1083 (__v8df) __W,
1084 (__mmask8) __U,
1085 _MM_FROUND_CUR_DIRECTION);
1086}
1087
1088static __inline__ __m512d __DEFAULT_FN_ATTRS
1089_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1090 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1091 (__v8df) __B,
1092 (__v8df) _mm512_setzero_pd (),
1093 (__mmask8) __U,
1094 _MM_FROUND_CUR_DIRECTION);
1095}
1096
1097static __inline__ __m512 __DEFAULT_FN_ATTRS
1098_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1099 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1100 (__v16sf) __B,
1101 (__v16sf) __W,
1102 (__mmask16) __U,
1103 _MM_FROUND_CUR_DIRECTION);
1104}
1105
1106static __inline__ __m512 __DEFAULT_FN_ATTRS
1107_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1108 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1109 (__v16sf) __B,
1110 (__v16sf) _mm512_setzero_ps (),
1111 (__mmask16) __U,
1112 _MM_FROUND_CUR_DIRECTION);
1113}
1114
1115#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1116 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1117 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1118
1119#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1120 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1121 (__v8df) __W, (__mmask8) __U, __R); })
1122
1123#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1124 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1125 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1126
1127#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1128 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1129 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1130
1131#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1132 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1133 (__v16sf) __W, (__mmask16)__U, __R); })
1134
1135#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1136 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1137 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1138
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001139static __inline__ __m128 __DEFAULT_FN_ATTRS
1140_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001141 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001142 (__v4sf) __B,
1143 (__v4sf) __W,
1144 (__mmask8) __U,
1145 _MM_FROUND_CUR_DIRECTION);
1146}
1147
1148static __inline__ __m128 __DEFAULT_FN_ATTRS
1149_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001150 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001151 (__v4sf) __B,
1152 (__v4sf) _mm_setzero_ps (),
1153 (__mmask8) __U,
1154 _MM_FROUND_CUR_DIRECTION);
1155}
1156#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001157 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1159
1160#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001161 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001162 (__v4sf) __W, (__mmask8) __U,__R); })
1163
1164#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001165 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001166 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1167
1168static __inline__ __m128d __DEFAULT_FN_ATTRS
1169_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001170 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001171 (__v2df) __B,
1172 (__v2df) __W,
1173 (__mmask8) __U,
1174 _MM_FROUND_CUR_DIRECTION);
1175}
1176
1177static __inline__ __m128d __DEFAULT_FN_ATTRS
1178_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001179 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001180 (__v2df) __B,
1181 (__v2df) _mm_setzero_pd (),
1182 (__mmask8) __U,
1183 _MM_FROUND_CUR_DIRECTION);
1184}
1185
1186#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001187 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001188 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1189
1190#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001191 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001192 (__v2df) __W, (__mmask8) __U,__R); })
1193
1194#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001195 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001196 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1197
Asaf Badouhffeb6242015-07-21 15:27:28 +00001198static __inline__ __m512d __DEFAULT_FN_ATTRS
1199_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1200 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1201 (__v8df) __B,
1202 (__v8df) __W,
1203 (__mmask8) __U,
1204 _MM_FROUND_CUR_DIRECTION);
1205}
1206
1207static __inline__ __m512d __DEFAULT_FN_ATTRS
1208_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1209 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1210 (__v8df) __B,
1211 (__v8df)
1212 _mm512_setzero_pd (),
1213 (__mmask8) __U,
1214 _MM_FROUND_CUR_DIRECTION);
1215}
1216
1217static __inline__ __m512 __DEFAULT_FN_ATTRS
1218_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1219 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1220 (__v16sf) __B,
1221 (__v16sf) __W,
1222 (__mmask16) __U,
1223 _MM_FROUND_CUR_DIRECTION);
1224}
1225
1226static __inline__ __m512 __DEFAULT_FN_ATTRS
1227_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1228 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1229 (__v16sf) __B,
1230 (__v16sf)
1231 _mm512_setzero_ps (),
1232 (__mmask16) __U,
1233 _MM_FROUND_CUR_DIRECTION);
1234}
1235
1236#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1237 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1238 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1239
1240#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1241 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1242 (__v8df) __W, (__mmask8) __U, __R); })
1243
1244#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1245 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1246 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1247
1248#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1249 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1250 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1251
1252#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1253 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1254 (__v16sf) __W, (__mmask16) __U, __R); });
1255
1256#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1257 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1258 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1259
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001260static __inline__ __m128 __DEFAULT_FN_ATTRS
1261_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001262 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001263 (__v4sf) __B,
1264 (__v4sf) __W,
1265 (__mmask8) __U,
1266 _MM_FROUND_CUR_DIRECTION);
1267}
1268
1269static __inline__ __m128 __DEFAULT_FN_ATTRS
1270_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001271 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001272 (__v4sf) __B,
1273 (__v4sf) _mm_setzero_ps (),
1274 (__mmask8) __U,
1275 _MM_FROUND_CUR_DIRECTION);
1276}
1277#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001278 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001279 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1280
1281#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001282 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001283 (__v4sf) __W, (__mmask8) __U,__R); })
1284
1285#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001286 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001287 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1288
1289static __inline__ __m128d __DEFAULT_FN_ATTRS
1290_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001291 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001292 (__v2df) __B,
1293 (__v2df) __W,
1294 (__mmask8) __U,
1295 _MM_FROUND_CUR_DIRECTION);
1296}
1297
1298static __inline__ __m128d __DEFAULT_FN_ATTRS
1299_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001300 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001301 (__v2df) __B,
1302 (__v2df) _mm_setzero_pd (),
1303 (__mmask8) __U,
1304 _MM_FROUND_CUR_DIRECTION);
1305}
1306
1307#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001308 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001309 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1310
1311#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001312 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001313 (__v2df) __W, (__mmask8) __U,__R); })
1314
1315#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001316 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001317 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1318
Asaf Badouhffeb6242015-07-21 15:27:28 +00001319static __inline__ __m512d __DEFAULT_FN_ATTRS
1320_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1321 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1322 (__v8df) __B,
1323 (__v8df) __W,
1324 (__mmask8) __U,
1325 _MM_FROUND_CUR_DIRECTION);
1326}
1327
1328static __inline__ __m512d __DEFAULT_FN_ATTRS
1329_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1330 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1331 (__v8df) __B,
1332 (__v8df)
1333 _mm512_setzero_pd (),
1334 (__mmask8) __U,
1335 _MM_FROUND_CUR_DIRECTION);
1336}
1337
1338static __inline__ __m512 __DEFAULT_FN_ATTRS
1339_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1340 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1341 (__v16sf) __B,
1342 (__v16sf) __W,
1343 (__mmask16) __U,
1344 _MM_FROUND_CUR_DIRECTION);
1345}
1346
1347static __inline__ __m512 __DEFAULT_FN_ATTRS
1348_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1349 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1350 (__v16sf) __B,
1351 (__v16sf)
1352 _mm512_setzero_ps (),
1353 (__mmask16) __U,
1354 _MM_FROUND_CUR_DIRECTION);
1355}
1356
1357#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1358 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1359 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1360
1361#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1362 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1363 (__v8df) __W, (__mmask8) __U, __R); })
1364
1365#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1366 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1367 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1368
1369#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1370 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1371 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1372
1373#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1374 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1375 (__v16sf) __W, (__mmask16) __U, __R); });
1376
1377#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1378 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1379 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1380
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001381static __inline__ __m128 __DEFAULT_FN_ATTRS
1382_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001383 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001384 (__v4sf) __B,
1385 (__v4sf) __W,
1386 (__mmask8) __U,
1387 _MM_FROUND_CUR_DIRECTION);
1388}
1389
1390static __inline__ __m128 __DEFAULT_FN_ATTRS
1391_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001392 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001393 (__v4sf) __B,
1394 (__v4sf) _mm_setzero_ps (),
1395 (__mmask8) __U,
1396 _MM_FROUND_CUR_DIRECTION);
1397}
1398
1399#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001400 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001401 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1402
1403#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001404 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001405 (__v4sf) __W, (__mmask8) __U,__R); })
1406
1407#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001408 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001409 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1410
1411static __inline__ __m128d __DEFAULT_FN_ATTRS
1412_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001413 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001414 (__v2df) __B,
1415 (__v2df) __W,
1416 (__mmask8) __U,
1417 _MM_FROUND_CUR_DIRECTION);
1418}
1419
1420static __inline__ __m128d __DEFAULT_FN_ATTRS
1421_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001422 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001423 (__v2df) __B,
1424 (__v2df) _mm_setzero_pd (),
1425 (__mmask8) __U,
1426 _MM_FROUND_CUR_DIRECTION);
1427}
1428
1429#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001430 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001431 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1432
1433#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001434 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001435 (__v2df) __W, (__mmask8) __U,__R); })
1436
1437#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001438 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001439 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1440
Asaf Badouhffeb6242015-07-21 15:27:28 +00001441static __inline__ __m512d __DEFAULT_FN_ATTRS
1442_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1443 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1444 (__v8df) __B,
1445 (__v8df) __W,
1446 (__mmask8) __U,
1447 _MM_FROUND_CUR_DIRECTION);
1448}
1449
1450static __inline__ __m512d __DEFAULT_FN_ATTRS
1451_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1452 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1453 (__v8df) __B,
1454 (__v8df)
1455 _mm512_setzero_pd (),
1456 (__mmask8) __U,
1457 _MM_FROUND_CUR_DIRECTION);
1458}
1459
1460static __inline__ __m512 __DEFAULT_FN_ATTRS
1461_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1462 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1463 (__v16sf) __B,
1464 (__v16sf) __W,
1465 (__mmask16) __U,
1466 _MM_FROUND_CUR_DIRECTION);
1467}
1468
1469static __inline__ __m512 __DEFAULT_FN_ATTRS
1470_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1471 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1472 (__v16sf) __B,
1473 (__v16sf)
1474 _mm512_setzero_ps (),
1475 (__mmask16) __U,
1476 _MM_FROUND_CUR_DIRECTION);
1477}
1478
1479#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1480 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1481 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1482
1483#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1484 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1485 (__v8df) __W, (__mmask8) __U, __R); })
1486
1487#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1488 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1489 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1490
1491#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1492 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1493 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1494
1495#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1496 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1497 (__v16sf) __W, (__mmask16) __U, __R); });
1498
1499#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
1500 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1501 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1502
Craig Topper72c7d512015-02-01 07:35:35 +00001503#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1504 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1505 -1, _MM_FROUND_CUR_DIRECTION); })
1506
1507#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1508 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1509 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001510
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001511#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1512 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1513 (__v8df) (B), (__v8df) (C), \
1514 (__mmask8) -1, (R)); })
1515
1516
1517#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1518 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1519 (__v8df) (B), (__v8df) (C), \
1520 (__mmask8) (U), (R)); })
1521
1522
1523#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1524 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1525 (__v8df) (B), (__v8df) (C), \
1526 (__mmask8) (U), (R)); })
1527
1528
1529#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1530 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1531 (__v8df) (B), (__v8df) (C), \
1532 (__mmask8) (U), (R)); })
1533
1534
1535#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1536 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1537 (__v8df) (B), -(__v8df) (C), \
1538 (__mmask8) -1, (R)); })
1539
1540
1541#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1542 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1543 (__v8df) (B), -(__v8df) (C), \
1544 (__mmask8) (U), (R)); })
1545
1546
1547#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1548 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1549 (__v8df) (B), -(__v8df) (C), \
1550 (__mmask8) (U), (R)); })
1551
1552
1553#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1554 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1555 (__v8df) (B), (__v8df) (C), \
1556 (__mmask8) -1, (R)); })
1557
1558
1559#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1560 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1561 (__v8df) (B), (__v8df) (C), \
1562 (__mmask8) (U), (R)); })
1563
1564
1565#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1566 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1567 (__v8df) (B), (__v8df) (C), \
1568 (__mmask8) (U), (R)); })
1569
1570
1571#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1572 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1573 (__v8df) (B), -(__v8df) (C), \
1574 (__mmask8) -1, (R)); })
1575
1576
1577#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1578 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1579 (__v8df) (B), -(__v8df) (C), \
1580 (__mmask8) (U), (R)); })
1581
1582
Michael Kupersteine45af542015-06-30 13:36:19 +00001583static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001584_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1585{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001586 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1587 (__v8df) __B,
1588 (__v8df) __C,
1589 (__mmask8) -1,
1590 _MM_FROUND_CUR_DIRECTION);
1591}
1592
Michael Kupersteine45af542015-06-30 13:36:19 +00001593static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001594_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1595{
1596 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1597 (__v8df) __B,
1598 (__v8df) __C,
1599 (__mmask8) __U,
1600 _MM_FROUND_CUR_DIRECTION);
1601}
1602
Michael Kupersteine45af542015-06-30 13:36:19 +00001603static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001604_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1605{
1606 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
1607 (__v8df) __B,
1608 (__v8df) __C,
1609 (__mmask8) __U,
1610 _MM_FROUND_CUR_DIRECTION);
1611}
1612
Michael Kupersteine45af542015-06-30 13:36:19 +00001613static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001614_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1615{
1616 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1617 (__v8df) __B,
1618 (__v8df) __C,
1619 (__mmask8) __U,
1620 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001621}
1622
Michael Kupersteine45af542015-06-30 13:36:19 +00001623static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001624_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1625{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001626 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1627 (__v8df) __B,
1628 -(__v8df) __C,
1629 (__mmask8) -1,
1630 _MM_FROUND_CUR_DIRECTION);
1631}
1632
Michael Kupersteine45af542015-06-30 13:36:19 +00001633static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001634_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1635{
1636 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1637 (__v8df) __B,
1638 -(__v8df) __C,
1639 (__mmask8) __U,
1640 _MM_FROUND_CUR_DIRECTION);
1641}
1642
Michael Kupersteine45af542015-06-30 13:36:19 +00001643static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001644_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1645{
1646 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1647 (__v8df) __B,
1648 -(__v8df) __C,
1649 (__mmask8) __U,
1650 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001651}
1652
Michael Kupersteine45af542015-06-30 13:36:19 +00001653static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001654_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1655{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001656 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1657 (__v8df) __B,
1658 (__v8df) __C,
1659 (__mmask8) -1,
1660 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001661}
1662
Michael Kupersteine45af542015-06-30 13:36:19 +00001663static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001664_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1665{
1666 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1667 (__v8df) __B,
1668 (__v8df) __C,
1669 (__mmask8) __U,
1670 _MM_FROUND_CUR_DIRECTION);
1671}
1672
Michael Kupersteine45af542015-06-30 13:36:19 +00001673static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001674_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1675{
1676 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1677 (__v8df) __B,
1678 (__v8df) __C,
1679 (__mmask8) __U,
1680 _MM_FROUND_CUR_DIRECTION);
1681}
1682
Michael Kupersteine45af542015-06-30 13:36:19 +00001683static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001684_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1685{
1686 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1687 (__v8df) __B,
1688 -(__v8df) __C,
1689 (__mmask8) -1,
1690 _MM_FROUND_CUR_DIRECTION);
1691}
1692
Michael Kupersteine45af542015-06-30 13:36:19 +00001693static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001694_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1695{
1696 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1697 (__v8df) __B,
1698 -(__v8df) __C,
1699 (__mmask8) __U,
1700 _MM_FROUND_CUR_DIRECTION);
1701}
1702
1703#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1704 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1705 (__v16sf) (B), (__v16sf) (C), \
1706 (__mmask16) -1, (R)); })
1707
1708
1709#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1710 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1711 (__v16sf) (B), (__v16sf) (C), \
1712 (__mmask16) (U), (R)); })
1713
1714
1715#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1716 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1717 (__v16sf) (B), (__v16sf) (C), \
1718 (__mmask16) (U), (R)); })
1719
1720
1721#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1722 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1723 (__v16sf) (B), (__v16sf) (C), \
1724 (__mmask16) (U), (R)); })
1725
1726
1727#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1728 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1729 (__v16sf) (B), -(__v16sf) (C), \
1730 (__mmask16) -1, (R)); })
1731
1732
1733#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1734 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1735 (__v16sf) (B), -(__v16sf) (C), \
1736 (__mmask16) (U), (R)); })
1737
1738
1739#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1740 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1741 (__v16sf) (B), -(__v16sf) (C), \
1742 (__mmask16) (U), (R)); })
1743
1744
1745#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1746 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1747 (__v16sf) (B), (__v16sf) (C), \
1748 (__mmask16) -1, (R)); })
1749
1750
1751#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1752 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1753 (__v16sf) (B), (__v16sf) (C), \
1754 (__mmask16) (U), (R)); })
1755
1756
1757#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1758 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1759 (__v16sf) (B), (__v16sf) (C), \
1760 (__mmask16) (U), (R)); })
1761
1762
1763#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1764 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1765 (__v16sf) (B), -(__v16sf) (C), \
1766 (__mmask16) -1, (R)); })
1767
1768
1769#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1770 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1771 (__v16sf) (B), -(__v16sf) (C), \
1772 (__mmask16) (U), (R)); })
1773
1774
Michael Kupersteine45af542015-06-30 13:36:19 +00001775static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001776_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1777{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001778 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1779 (__v16sf) __B,
1780 (__v16sf) __C,
1781 (__mmask16) -1,
1782 _MM_FROUND_CUR_DIRECTION);
1783}
1784
Michael Kupersteine45af542015-06-30 13:36:19 +00001785static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001786_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1787{
1788 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1789 (__v16sf) __B,
1790 (__v16sf) __C,
1791 (__mmask16) __U,
1792 _MM_FROUND_CUR_DIRECTION);
1793}
1794
Michael Kupersteine45af542015-06-30 13:36:19 +00001795static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001796_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1797{
1798 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1799 (__v16sf) __B,
1800 (__v16sf) __C,
1801 (__mmask16) __U,
1802 _MM_FROUND_CUR_DIRECTION);
1803}
1804
Michael Kupersteine45af542015-06-30 13:36:19 +00001805static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001806_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1807{
1808 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1809 (__v16sf) __B,
1810 (__v16sf) __C,
1811 (__mmask16) __U,
1812 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001813}
1814
Michael Kupersteine45af542015-06-30 13:36:19 +00001815static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001816_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1817{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001818 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1819 (__v16sf) __B,
1820 -(__v16sf) __C,
1821 (__mmask16) -1,
1822 _MM_FROUND_CUR_DIRECTION);
1823}
1824
Michael Kupersteine45af542015-06-30 13:36:19 +00001825static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001826_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1827{
1828 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1829 (__v16sf) __B,
1830 -(__v16sf) __C,
1831 (__mmask16) __U,
1832 _MM_FROUND_CUR_DIRECTION);
1833}
1834
Michael Kupersteine45af542015-06-30 13:36:19 +00001835static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001836_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1837{
1838 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1839 (__v16sf) __B,
1840 -(__v16sf) __C,
1841 (__mmask16) __U,
1842 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001843}
1844
Michael Kupersteine45af542015-06-30 13:36:19 +00001845static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001846_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1847{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001848 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1849 (__v16sf) __B,
1850 (__v16sf) __C,
1851 (__mmask16) -1,
1852 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001853}
1854
Michael Kupersteine45af542015-06-30 13:36:19 +00001855static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001856_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1857{
1858 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
1859 (__v16sf) __B,
1860 (__v16sf) __C,
1861 (__mmask16) __U,
1862 _MM_FROUND_CUR_DIRECTION);
1863}
1864
Michael Kupersteine45af542015-06-30 13:36:19 +00001865static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001866_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1867{
1868 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1869 (__v16sf) __B,
1870 (__v16sf) __C,
1871 (__mmask16) __U,
1872 _MM_FROUND_CUR_DIRECTION);
1873}
1874
Michael Kupersteine45af542015-06-30 13:36:19 +00001875static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001876_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1877{
1878 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1879 (__v16sf) __B,
1880 -(__v16sf) __C,
1881 (__mmask16) -1,
1882 _MM_FROUND_CUR_DIRECTION);
1883}
1884
Michael Kupersteine45af542015-06-30 13:36:19 +00001885static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001886_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1887{
1888 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1889 (__v16sf) __B,
1890 -(__v16sf) __C,
1891 (__mmask16) __U,
1892 _MM_FROUND_CUR_DIRECTION);
1893}
1894
1895#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
1896 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1897 (__v8df) (B), (__v8df) (C), \
1898 (__mmask8) -1, (R)); })
1899
1900
1901#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
1902 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1903 (__v8df) (B), (__v8df) (C), \
1904 (__mmask8) (U), (R)); })
1905
1906
1907#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
1908 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
1909 (__v8df) (B), (__v8df) (C), \
1910 (__mmask8) (U), (R)); })
1911
1912
1913#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
1914 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1915 (__v8df) (B), (__v8df) (C), \
1916 (__mmask8) (U), (R)); })
1917
1918
1919#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
1920 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1921 (__v8df) (B), -(__v8df) (C), \
1922 (__mmask8) -1, (R)); })
1923
1924
1925#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
1926 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1927 (__v8df) (B), -(__v8df) (C), \
1928 (__mmask8) (U), (R)); })
1929
1930
1931#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
1932 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1933 (__v8df) (B), -(__v8df) (C), \
1934 (__mmask8) (U), (R)); })
1935
1936
Michael Kupersteine45af542015-06-30 13:36:19 +00001937static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001938_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
1939{
1940 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1941 (__v8df) __B,
1942 (__v8df) __C,
1943 (__mmask8) -1,
1944 _MM_FROUND_CUR_DIRECTION);
1945}
1946
Michael Kupersteine45af542015-06-30 13:36:19 +00001947static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001948_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1949{
1950 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1951 (__v8df) __B,
1952 (__v8df) __C,
1953 (__mmask8) __U,
1954 _MM_FROUND_CUR_DIRECTION);
1955}
1956
Michael Kupersteine45af542015-06-30 13:36:19 +00001957static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001958_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1959{
1960 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
1961 (__v8df) __B,
1962 (__v8df) __C,
1963 (__mmask8) __U,
1964 _MM_FROUND_CUR_DIRECTION);
1965}
1966
Michael Kupersteine45af542015-06-30 13:36:19 +00001967static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001968_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1969{
1970 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1971 (__v8df) __B,
1972 (__v8df) __C,
1973 (__mmask8) __U,
1974 _MM_FROUND_CUR_DIRECTION);
1975}
1976
Michael Kupersteine45af542015-06-30 13:36:19 +00001977static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001978_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
1979{
1980 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1981 (__v8df) __B,
1982 -(__v8df) __C,
1983 (__mmask8) -1,
1984 _MM_FROUND_CUR_DIRECTION);
1985}
1986
Michael Kupersteine45af542015-06-30 13:36:19 +00001987static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001988_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1989{
1990 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1991 (__v8df) __B,
1992 -(__v8df) __C,
1993 (__mmask8) __U,
1994 _MM_FROUND_CUR_DIRECTION);
1995}
1996
Michael Kupersteine45af542015-06-30 13:36:19 +00001997static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001998_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1999{
2000 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2001 (__v8df) __B,
2002 -(__v8df) __C,
2003 (__mmask8) __U,
2004 _MM_FROUND_CUR_DIRECTION);
2005}
2006
2007#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2008 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2009 (__v16sf) (B), (__v16sf) (C), \
2010 (__mmask16) -1, (R)); })
2011
2012
2013#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2014 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2015 (__v16sf) (B), (__v16sf) (C), \
2016 (__mmask16) (U), (R)); })
2017
2018
2019#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2020 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2021 (__v16sf) (B), (__v16sf) (C), \
2022 (__mmask16) (U), (R)); })
2023
2024
2025#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2026 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2027 (__v16sf) (B), (__v16sf) (C), \
2028 (__mmask16) (U), (R)); })
2029
2030
2031#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2032 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2033 (__v16sf) (B), -(__v16sf) (C), \
2034 (__mmask16) -1, (R)); })
2035
2036
2037#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2038 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2039 (__v16sf) (B), -(__v16sf) (C), \
2040 (__mmask16) (U), (R)); })
2041
2042
2043#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2044 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2045 (__v16sf) (B), -(__v16sf) (C), \
2046 (__mmask16) (U), (R)); })
2047
2048
Michael Kupersteine45af542015-06-30 13:36:19 +00002049static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002050_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2051{
2052 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2053 (__v16sf) __B,
2054 (__v16sf) __C,
2055 (__mmask16) -1,
2056 _MM_FROUND_CUR_DIRECTION);
2057}
2058
Michael Kupersteine45af542015-06-30 13:36:19 +00002059static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002060_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2061{
2062 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2063 (__v16sf) __B,
2064 (__v16sf) __C,
2065 (__mmask16) __U,
2066 _MM_FROUND_CUR_DIRECTION);
2067}
2068
Michael Kupersteine45af542015-06-30 13:36:19 +00002069static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002070_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2071{
2072 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2073 (__v16sf) __B,
2074 (__v16sf) __C,
2075 (__mmask16) __U,
2076 _MM_FROUND_CUR_DIRECTION);
2077}
2078
Michael Kupersteine45af542015-06-30 13:36:19 +00002079static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002080_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2081{
2082 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2083 (__v16sf) __B,
2084 (__v16sf) __C,
2085 (__mmask16) __U,
2086 _MM_FROUND_CUR_DIRECTION);
2087}
2088
Michael Kupersteine45af542015-06-30 13:36:19 +00002089static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002090_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2091{
2092 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2093 (__v16sf) __B,
2094 -(__v16sf) __C,
2095 (__mmask16) -1,
2096 _MM_FROUND_CUR_DIRECTION);
2097}
2098
Michael Kupersteine45af542015-06-30 13:36:19 +00002099static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002100_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2101{
2102 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2103 (__v16sf) __B,
2104 -(__v16sf) __C,
2105 (__mmask16) __U,
2106 _MM_FROUND_CUR_DIRECTION);
2107}
2108
Michael Kupersteine45af542015-06-30 13:36:19 +00002109static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002110_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2111{
2112 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2113 (__v16sf) __B,
2114 -(__v16sf) __C,
2115 (__mmask16) __U,
2116 _MM_FROUND_CUR_DIRECTION);
2117}
2118
2119#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2120 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2121 (__v8df) (B), (__v8df) (C), \
2122 (__mmask8) (U), (R)); })
2123
2124
Michael Kupersteine45af542015-06-30 13:36:19 +00002125static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002126_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2127{
2128 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2129 (__v8df) __B,
2130 (__v8df) __C,
2131 (__mmask8) __U,
2132 _MM_FROUND_CUR_DIRECTION);
2133}
2134
2135#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2136 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2137 (__v16sf) (B), (__v16sf) (C), \
2138 (__mmask16) (U), (R)); })
2139
2140
Michael Kupersteine45af542015-06-30 13:36:19 +00002141static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002142_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2143{
2144 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2145 (__v16sf) __B,
2146 (__v16sf) __C,
2147 (__mmask16) __U,
2148 _MM_FROUND_CUR_DIRECTION);
2149}
2150
2151#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2152 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2153 (__v8df) (B), (__v8df) (C), \
2154 (__mmask8) (U), (R)); })
2155
2156
Michael Kupersteine45af542015-06-30 13:36:19 +00002157static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002158_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2159{
2160 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2161 (__v8df) __B,
2162 (__v8df) __C,
2163 (__mmask8) __U,
2164 _MM_FROUND_CUR_DIRECTION);
2165}
2166
2167#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2168 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2169 (__v16sf) (B), (__v16sf) (C), \
2170 (__mmask16) (U), (R)); })
2171
2172
Michael Kupersteine45af542015-06-30 13:36:19 +00002173static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002174_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2175{
2176 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2177 (__v16sf) __B,
2178 (__v16sf) __C,
2179 (__mmask16) __U,
2180 _MM_FROUND_CUR_DIRECTION);
2181}
2182
2183#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2184 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2185 (__v8df) (B), (__v8df) (C), \
2186 (__mmask8) (U), (R)); })
2187
2188
Michael Kupersteine45af542015-06-30 13:36:19 +00002189static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002190_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2191{
2192 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2193 (__v8df) __B,
2194 (__v8df) __C,
2195 (__mmask8) __U,
2196 _MM_FROUND_CUR_DIRECTION);
2197}
2198
2199#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2200 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2201 (__v16sf) (B), (__v16sf) (C), \
2202 (__mmask16) (U), (R)); })
2203
2204
Michael Kupersteine45af542015-06-30 13:36:19 +00002205static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002206_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2207{
2208 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2209 (__v16sf) __B,
2210 (__v16sf) __C,
2211 (__mmask16) __U,
2212 _MM_FROUND_CUR_DIRECTION);
2213}
2214
2215#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2216 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2217 (__v8df) (B), (__v8df) (C), \
2218 (__mmask8) (U), (R)); })
2219
2220
2221#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2222 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2223 (__v8df) (B), (__v8df) (C), \
2224 (__mmask8) (U), (R)); })
2225
2226
Michael Kupersteine45af542015-06-30 13:36:19 +00002227static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002228_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2229{
2230 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2231 (__v8df) __B,
2232 (__v8df) __C,
2233 (__mmask8) __U,
2234 _MM_FROUND_CUR_DIRECTION);
2235}
2236
Michael Kupersteine45af542015-06-30 13:36:19 +00002237static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002238_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2239{
2240 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2241 (__v8df) __B,
2242 (__v8df) __C,
2243 (__mmask8) __U,
2244 _MM_FROUND_CUR_DIRECTION);
2245}
2246
2247#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2248 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2249 (__v16sf) (B), (__v16sf) (C), \
2250 (__mmask16) (U), (R)); })
2251
2252
2253#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2254 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2255 (__v16sf) (B), (__v16sf) (C), \
2256 (__mmask16) (U), (R)); })
2257
2258
Michael Kupersteine45af542015-06-30 13:36:19 +00002259static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002260_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2261{
2262 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2263 (__v16sf) __B,
2264 (__v16sf) __C,
2265 (__mmask16) __U,
2266 _MM_FROUND_CUR_DIRECTION);
2267}
2268
Michael Kupersteine45af542015-06-30 13:36:19 +00002269static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002270_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2271{
2272 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2273 (__v16sf) __B,
2274 (__v16sf) __C,
2275 (__mmask16) __U,
2276 _MM_FROUND_CUR_DIRECTION);
2277}
2278
2279
2280
Adam Nemet0d5bb552014-07-28 17:14:40 +00002281/* Vector permutations */
2282
Michael Kupersteine45af542015-06-30 13:36:19 +00002283static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002284_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2285{
2286 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2287 /* idx */ ,
2288 (__v16si) __A,
2289 (__v16si) __B,
2290 (__mmask16) -1);
2291}
Michael Kupersteine45af542015-06-30 13:36:19 +00002292static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002293_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2294{
2295 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2296 /* idx */ ,
2297 (__v8di) __A,
2298 (__v8di) __B,
2299 (__mmask8) -1);
2300}
2301
Michael Kupersteine45af542015-06-30 13:36:19 +00002302static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002303_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2304{
2305 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2306 /* idx */ ,
2307 (__v8df) __A,
2308 (__v8df) __B,
2309 (__mmask8) -1);
2310}
Michael Kupersteine45af542015-06-30 13:36:19 +00002311static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002312_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2313{
2314 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2315 /* idx */ ,
2316 (__v16sf) __A,
2317 (__v16sf) __B,
2318 (__mmask16) -1);
2319}
2320
Craig Topper67826a52015-02-01 07:35:40 +00002321#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2322 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2323 (__v8di)(__m512i)(B), \
2324 (I), (__v8di)_mm512_setzero_si512(), \
2325 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002326
Craig Topper67826a52015-02-01 07:35:40 +00002327#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
2328 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
2329 (__v16si)(__m512i)(B), \
2330 (I), (__v16si)_mm512_setzero_si512(), \
2331 (__mmask16)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002332
Adam Nemetf893ede2015-01-19 20:12:05 +00002333/* Vector Extract */
2334
2335#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Adam Nemetf893ede2015-01-19 20:12:05 +00002336 (__m256d) \
Craig Topper3a71f352015-11-29 06:50:33 +00002337 __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002338 (I), \
2339 (__v4df)_mm256_setzero_si256(), \
2340 (__mmask8) -1); })
2341
2342#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Adam Nemetf893ede2015-01-19 20:12:05 +00002343 (__m128) \
Craig Topper3a71f352015-11-29 06:50:33 +00002344 __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002345 (I), \
2346 (__v4sf)_mm_setzero_ps(), \
2347 (__mmask8) -1); })
2348
Adam Nemet0d5bb552014-07-28 17:14:40 +00002349/* Vector Blend */
2350
Michael Kupersteine45af542015-06-30 13:36:19 +00002351static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002352_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2353{
2354 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2355 (__v8df) __W,
2356 (__mmask8) __U);
2357}
2358
Michael Kupersteine45af542015-06-30 13:36:19 +00002359static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002360_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2361{
2362 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2363 (__v16sf) __W,
2364 (__mmask16) __U);
2365}
2366
Michael Kupersteine45af542015-06-30 13:36:19 +00002367static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002368_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2369{
2370 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2371 (__v8di) __W,
2372 (__mmask8) __U);
2373}
2374
Michael Kupersteine45af542015-06-30 13:36:19 +00002375static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002376_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2377{
2378 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2379 (__v16si) __W,
2380 (__mmask16) __U);
2381}
2382
2383/* Compare */
2384
Craig Topper53565c62015-02-01 22:27:40 +00002385#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2386 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2387 (__v16sf)(__m512)(B), \
2388 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002389
Craig Topper53565c62015-02-01 22:27:40 +00002390#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2391 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2392 (__v16sf)(__m512)(B), \
2393 (P), (__mmask16)(U), (R)); })
2394
2395#define _mm512_cmp_ps_mask(A, B, P) \
2396 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2397
2398#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2399 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2400
2401#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2402 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2403 (__v8df)(__m512d)(B), \
2404 (P), (__mmask8)-1, (R)); })
2405
2406#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2407 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2408 (__v8df)(__m512d)(B), \
2409 (P), (__mmask8)(U), (R)); })
2410
2411#define _mm512_cmp_pd_mask(A, B, P) \
2412 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2413
2414#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2415 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002416
2417/* Conversion */
2418
Michael Kupersteine45af542015-06-30 13:36:19 +00002419static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002420_mm512_cvttps_epu32(__m512 __A)
2421{
2422 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2423 (__v16si)
2424 _mm512_setzero_si512 (),
2425 (__mmask16) -1,
2426 _MM_FROUND_CUR_DIRECTION);
2427}
2428
Craig Topper72c7d512015-02-01 07:35:35 +00002429#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2430 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2431 (__v16sf)_mm512_setzero_ps(), \
2432 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002433
Craig Topper72c7d512015-02-01 07:35:35 +00002434#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2435 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2436 (__v16sf)_mm512_setzero_ps(), \
2437 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002438
Michael Kupersteine45af542015-06-30 13:36:19 +00002439static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002440_mm512_cvtepi32_pd(__m256i __A)
2441{
2442 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2443 (__v8df)
2444 _mm512_setzero_pd (),
2445 (__mmask8) -1);
2446}
2447
Michael Kupersteine45af542015-06-30 13:36:19 +00002448static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002449_mm512_cvtepu32_pd(__m256i __A)
2450{
2451 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2452 (__v8df)
2453 _mm512_setzero_pd (),
2454 (__mmask8) -1);
2455}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002456
Craig Topper72c7d512015-02-01 07:35:35 +00002457#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2458 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2459 (__v8sf)_mm256_setzero_ps(), \
2460 (__mmask8)-1, (R)); })
2461
2462#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2463 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2464 (__v16hi)_mm256_setzero_si256(), \
2465 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002466
Michael Kupersteine45af542015-06-30 13:36:19 +00002467static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002468_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002469{
2470 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2471 (__v16sf)
2472 _mm512_setzero_ps (),
2473 (__mmask16) -1,
2474 _MM_FROUND_CUR_DIRECTION);
2475}
2476
Michael Kupersteine45af542015-06-30 13:36:19 +00002477static __inline __m512i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002478_mm512_cvttps_epi32(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002479{
2480 return (__m512i)
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002481 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002482 (__v16si) _mm512_setzero_si512 (),
2483 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2484}
2485
Michael Kupersteine45af542015-06-30 13:36:19 +00002486static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002487_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002488{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002489 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002490 (__v8si)_mm256_setzero_si256(),
2491 (__mmask8) -1,
2492 _MM_FROUND_CUR_DIRECTION);
2493}
2494
Craig Topper72c7d512015-02-01 07:35:35 +00002495#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2496 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2497 (__v8si)_mm256_setzero_si256(), \
2498 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002499
Craig Topper72c7d512015-02-01 07:35:35 +00002500#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2501 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2502 (__v16si)_mm512_setzero_si512(), \
2503 (__mmask16)-1, (R)); })
2504
2505#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2506 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2507 (__v16si)_mm512_setzero_si512(), \
2508 (__mmask16)-1, (R)); })
2509
2510#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2511 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2512 (__v8si)_mm256_setzero_si256(), \
2513 (__mmask8)-1, (R)); })
2514
2515#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2516 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2517 (__v16si)_mm512_setzero_si512(), \
2518 (__mmask16)-1, (R)); })
2519
2520#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2521 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2522 (__v8si)_mm256_setzero_si256(), \
2523 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002524
Adam Nemet63a951e2015-01-14 01:31:17 +00002525/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00002526static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002527_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2528{
2529 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2530}
2531
Michael Kupersteine45af542015-06-30 13:36:19 +00002532static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002533_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2534{
2535 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2536}
2537
Michael Kupersteine45af542015-06-30 13:36:19 +00002538static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002539_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2540{
2541 return __builtin_shufflevector(__a, __b,
2542 2, 18, 3, 19,
2543 2+4, 18+4, 3+4, 19+4,
2544 2+8, 18+8, 3+8, 19+8,
2545 2+12, 18+12, 3+12, 19+12);
2546}
2547
Michael Kupersteine45af542015-06-30 13:36:19 +00002548static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002549_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2550{
2551 return __builtin_shufflevector(__a, __b,
2552 0, 16, 1, 17,
2553 0+4, 16+4, 1+4, 17+4,
2554 0+8, 16+8, 1+8, 17+8,
2555 0+12, 16+12, 1+12, 17+12);
2556}
2557
Adam Nemet0d5bb552014-07-28 17:14:40 +00002558/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002559
Michael Kupersteine45af542015-06-30 13:36:19 +00002560static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002561_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002562{
2563 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2564 (__v16si) __B,
2565 (__mmask16) -1);
2566}
2567
Michael Kupersteine45af542015-06-30 13:36:19 +00002568static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002569_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002570{
2571 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2572 (__v8di) __B,
2573 (__mmask8) -1);
2574}
2575
Adam Nemet0d5bb552014-07-28 17:14:40 +00002576/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002577
Michael Kupersteine45af542015-06-30 13:36:19 +00002578static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002579_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002580{
2581 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2582 (__v16si)
2583 _mm512_setzero_si512 (),
2584 (__mmask16) __U);
2585}
2586
Michael Kupersteine45af542015-06-30 13:36:19 +00002587static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002588_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002589{
2590 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2591 (__v8di)
2592 _mm512_setzero_si512 (),
2593 (__mmask8) __U);
2594}
2595
Michael Kupersteine45af542015-06-30 13:36:19 +00002596static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002597_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002598{
2599 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2600 (__v16sf)
2601 _mm512_setzero_ps (),
2602 (__mmask16) __U);
2603}
2604
Michael Kupersteine45af542015-06-30 13:36:19 +00002605static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002606_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002607{
2608 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2609 (__v8df)
2610 _mm512_setzero_pd (),
2611 (__mmask8) __U);
2612}
2613
Michael Kupersteine45af542015-06-30 13:36:19 +00002614static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002615_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2616{
2617 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2618 (__v16sf)
2619 _mm512_setzero_ps (),
2620 (__mmask16) __U);
2621}
2622
Michael Kupersteine45af542015-06-30 13:36:19 +00002623static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002624_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2625{
2626 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2627 (__v8df)
2628 _mm512_setzero_pd (),
2629 (__mmask8) __U);
2630}
2631
Michael Kupersteine45af542015-06-30 13:36:19 +00002632static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002633_mm512_loadu_pd(double const *__p)
2634{
2635 struct __loadu_pd {
2636 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002637 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002638 return ((struct __loadu_pd*)__p)->__v;
2639}
2640
Michael Kupersteine45af542015-06-30 13:36:19 +00002641static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002642_mm512_loadu_ps(float const *__p)
2643{
2644 struct __loadu_ps {
2645 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002646 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002647 return ((struct __loadu_ps*)__p)->__v;
2648}
2649
Michael Kupersteine45af542015-06-30 13:36:19 +00002650static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00002651_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00002652{
2653 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2654 (__v16sf)
2655 _mm512_setzero_ps (),
2656 (__mmask16) -1);
2657}
2658
Michael Kupersteine45af542015-06-30 13:36:19 +00002659static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00002660_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00002661{
2662 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2663 (__v8df)
2664 _mm512_setzero_pd (),
2665 (__mmask8) -1);
2666}
2667
Adam Nemet0d5bb552014-07-28 17:14:40 +00002668/* SIMD store ops */
2669
Michael Kupersteine45af542015-06-30 13:36:19 +00002670static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002671_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002672{
2673 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2674 (__mmask8) __U);
2675}
2676
Michael Kupersteine45af542015-06-30 13:36:19 +00002677static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002678_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002679{
2680 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2681 (__mmask16) __U);
2682}
2683
Michael Kupersteine45af542015-06-30 13:36:19 +00002684static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002685_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002686{
2687 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2688}
2689
Michael Kupersteine45af542015-06-30 13:36:19 +00002690static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002691_mm512_storeu_pd(void *__P, __m512d __A)
2692{
2693 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2694}
2695
Michael Kupersteine45af542015-06-30 13:36:19 +00002696static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002697_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002698{
2699 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2700 (__mmask16) __U);
2701}
2702
Michael Kupersteine45af542015-06-30 13:36:19 +00002703static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002704_mm512_storeu_ps(void *__P, __m512 __A)
2705{
2706 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2707}
2708
Michael Kupersteine45af542015-06-30 13:36:19 +00002709static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002710_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002711{
Adam Nemetc0cff242015-01-16 18:51:50 +00002712 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002713}
2714
Michael Kupersteine45af542015-06-30 13:36:19 +00002715static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002716_mm512_store_pd(void *__P, __m512d __A)
2717{
2718 *(__m512d*)__P = __A;
2719}
2720
Michael Kupersteine45af542015-06-30 13:36:19 +00002721static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002722_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2723{
2724 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2725 (__mmask16) __U);
2726}
2727
Michael Kupersteine45af542015-06-30 13:36:19 +00002728static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002729_mm512_store_ps(void *__P, __m512 __A)
2730{
2731 *(__m512*)__P = __A;
2732}
2733
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002734/* Mask ops */
2735
Michael Kupersteine45af542015-06-30 13:36:19 +00002736static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002737_mm512_knot(__mmask16 __M)
2738{
2739 return __builtin_ia32_knothi(__M);
2740}
2741
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002742/* Integer compare */
2743
Michael Kupersteine45af542015-06-30 13:36:19 +00002744static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002745_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2746 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2747 (__mmask16)-1);
2748}
2749
Michael Kupersteine45af542015-06-30 13:36:19 +00002750static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002751_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2752 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2753 __u);
2754}
2755
Michael Kupersteine45af542015-06-30 13:36:19 +00002756static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002757_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2758 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2759 (__mmask16)-1);
2760}
2761
Michael Kupersteine45af542015-06-30 13:36:19 +00002762static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002763_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2764 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2765 __u);
2766}
2767
Michael Kupersteine45af542015-06-30 13:36:19 +00002768static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002769_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2770 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2771 __u);
2772}
2773
Michael Kupersteine45af542015-06-30 13:36:19 +00002774static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002775_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2776 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2777 (__mmask8)-1);
2778}
2779
Michael Kupersteine45af542015-06-30 13:36:19 +00002780static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002781_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2782 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2783 (__mmask8)-1);
2784}
2785
Michael Kupersteine45af542015-06-30 13:36:19 +00002786static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002787_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2788 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2789 __u);
2790}
2791
Michael Kupersteine45af542015-06-30 13:36:19 +00002792static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002793_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2794 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2795 (__mmask16)-1);
2796}
2797
Michael Kupersteine45af542015-06-30 13:36:19 +00002798static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002799_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2800 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2801 __u);
2802}
2803
Michael Kupersteine45af542015-06-30 13:36:19 +00002804static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002805_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2806 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2807 (__mmask16)-1);
2808}
2809
Michael Kupersteine45af542015-06-30 13:36:19 +00002810static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002811_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2812 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2813 __u);
2814}
2815
Michael Kupersteine45af542015-06-30 13:36:19 +00002816static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002817_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2818 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2819 (__mmask8)-1);
2820}
2821
Michael Kupersteine45af542015-06-30 13:36:19 +00002822static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002823_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2824 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2825 __u);
2826}
2827
Michael Kupersteine45af542015-06-30 13:36:19 +00002828static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002829_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2830 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2831 (__mmask8)-1);
2832}
2833
Michael Kupersteine45af542015-06-30 13:36:19 +00002834static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002835_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2836 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2837 __u);
2838}
2839
Michael Kupersteine45af542015-06-30 13:36:19 +00002840static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002841_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2842 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2843 (__mmask16)-1);
2844}
2845
Michael Kupersteine45af542015-06-30 13:36:19 +00002846static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002847_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2848 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2849 __u);
2850}
2851
Michael Kupersteine45af542015-06-30 13:36:19 +00002852static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002853_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2854 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2855 (__mmask16)-1);
2856}
2857
Michael Kupersteine45af542015-06-30 13:36:19 +00002858static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002859_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2860 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2861 __u);
2862}
2863
Michael Kupersteine45af542015-06-30 13:36:19 +00002864static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002865_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2866 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2867 __u);
2868}
2869
Michael Kupersteine45af542015-06-30 13:36:19 +00002870static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002871_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2872 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2873 (__mmask8)-1);
2874}
2875
Michael Kupersteine45af542015-06-30 13:36:19 +00002876static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002877_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2878 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2879 (__mmask8)-1);
2880}
2881
Michael Kupersteine45af542015-06-30 13:36:19 +00002882static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002883_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2884 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2885 __u);
2886}
2887
Michael Kupersteine45af542015-06-30 13:36:19 +00002888static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002889_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2890 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2891 (__mmask16)-1);
2892}
2893
Michael Kupersteine45af542015-06-30 13:36:19 +00002894static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002895_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2896 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2897 __u);
2898}
2899
Michael Kupersteine45af542015-06-30 13:36:19 +00002900static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002901_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2902 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2903 (__mmask16)-1);
2904}
2905
Michael Kupersteine45af542015-06-30 13:36:19 +00002906static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002907_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2908 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2909 __u);
2910}
2911
Michael Kupersteine45af542015-06-30 13:36:19 +00002912static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002913_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2914 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2915 (__mmask8)-1);
2916}
2917
Michael Kupersteine45af542015-06-30 13:36:19 +00002918static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002919_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2920 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2921 __u);
2922}
2923
Michael Kupersteine45af542015-06-30 13:36:19 +00002924static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002925_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2926 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2927 (__mmask8)-1);
2928}
2929
Michael Kupersteine45af542015-06-30 13:36:19 +00002930static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002931_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2932 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2933 __u);
2934}
2935
Michael Kupersteine45af542015-06-30 13:36:19 +00002936static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002937_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2938 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2939 (__mmask16)-1);
2940}
2941
Michael Kupersteine45af542015-06-30 13:36:19 +00002942static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002943_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2944 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2945 __u);
2946}
2947
Michael Kupersteine45af542015-06-30 13:36:19 +00002948static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002949_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2950 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2951 (__mmask16)-1);
2952}
2953
Michael Kupersteine45af542015-06-30 13:36:19 +00002954static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002955_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2956 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2957 __u);
2958}
2959
Michael Kupersteine45af542015-06-30 13:36:19 +00002960static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002961_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2962 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2963 (__mmask8)-1);
2964}
2965
Michael Kupersteine45af542015-06-30 13:36:19 +00002966static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002967_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2968 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2969 __u);
2970}
2971
Michael Kupersteine45af542015-06-30 13:36:19 +00002972static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002973_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2974 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2975 (__mmask8)-1);
2976}
2977
Michael Kupersteine45af542015-06-30 13:36:19 +00002978static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002979_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2980 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2981 __u);
2982}
2983
Michael Kupersteine45af542015-06-30 13:36:19 +00002984static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002985_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2986 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2987 (__mmask16)-1);
2988}
2989
Michael Kupersteine45af542015-06-30 13:36:19 +00002990static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002991_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2992 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2993 __u);
2994}
2995
Michael Kupersteine45af542015-06-30 13:36:19 +00002996static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002997_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2998 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2999 (__mmask16)-1);
3000}
3001
Michael Kupersteine45af542015-06-30 13:36:19 +00003002static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003003_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3004 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3005 __u);
3006}
3007
Michael Kupersteine45af542015-06-30 13:36:19 +00003008static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003009_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3010 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3011 (__mmask8)-1);
3012}
3013
Michael Kupersteine45af542015-06-30 13:36:19 +00003014static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003015_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3016 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3017 __u);
3018}
3019
Michael Kupersteine45af542015-06-30 13:36:19 +00003020static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003021_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3022 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3023 (__mmask8)-1);
3024}
3025
Michael Kupersteine45af542015-06-30 13:36:19 +00003026static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003027_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3028 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3029 __u);
3030}
3031
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003032static __inline__ __m512i __DEFAULT_FN_ATTRS
3033_mm512_cvtepi8_epi32 (__m128i __A)
3034{
3035 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3036 (__v16si)
3037 _mm512_setzero_si512 (),
3038 (__mmask16) -1);
3039}
3040
3041static __inline__ __m512i __DEFAULT_FN_ATTRS
3042_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3043{
3044 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3045 (__v16si) __W,
3046 (__mmask16) __U);
3047}
3048
3049static __inline__ __m512i __DEFAULT_FN_ATTRS
3050_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
3051{
3052 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3053 (__v16si)
3054 _mm512_setzero_si512 (),
3055 (__mmask16) __U);
3056}
3057
3058static __inline__ __m512i __DEFAULT_FN_ATTRS
3059_mm512_cvtepi8_epi64 (__m128i __A)
3060{
3061 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3062 (__v8di)
3063 _mm512_setzero_si512 (),
3064 (__mmask8) -1);
3065}
3066
3067static __inline__ __m512i __DEFAULT_FN_ATTRS
3068_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3069{
3070 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3071 (__v8di) __W,
3072 (__mmask8) __U);
3073}
3074
3075static __inline__ __m512i __DEFAULT_FN_ATTRS
3076_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
3077{
3078 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3079 (__v8di)
3080 _mm512_setzero_si512 (),
3081 (__mmask8) __U);
3082}
3083
3084static __inline__ __m512i __DEFAULT_FN_ATTRS
3085_mm512_cvtepi32_epi64 (__m256i __X)
3086{
3087 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3088 (__v8di)
3089 _mm512_setzero_si512 (),
3090 (__mmask8) -1);
3091}
3092
3093static __inline__ __m512i __DEFAULT_FN_ATTRS
3094_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3095{
3096 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3097 (__v8di) __W,
3098 (__mmask8) __U);
3099}
3100
3101static __inline__ __m512i __DEFAULT_FN_ATTRS
3102_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
3103{
3104 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3105 (__v8di)
3106 _mm512_setzero_si512 (),
3107 (__mmask8) __U);
3108}
3109
3110static __inline__ __m512i __DEFAULT_FN_ATTRS
3111_mm512_cvtepi16_epi32 (__m256i __A)
3112{
3113 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3114 (__v16si)
3115 _mm512_setzero_si512 (),
3116 (__mmask16) -1);
3117}
3118
3119static __inline__ __m512i __DEFAULT_FN_ATTRS
3120_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3121{
3122 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3123 (__v16si) __W,
3124 (__mmask16) __U);
3125}
3126
3127static __inline__ __m512i __DEFAULT_FN_ATTRS
3128_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
3129{
3130 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3131 (__v16si)
3132 _mm512_setzero_si512 (),
3133 (__mmask16) __U);
3134}
3135
3136static __inline__ __m512i __DEFAULT_FN_ATTRS
3137_mm512_cvtepi16_epi64 (__m128i __A)
3138{
3139 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3140 (__v8di)
3141 _mm512_setzero_si512 (),
3142 (__mmask8) -1);
3143}
3144
3145static __inline__ __m512i __DEFAULT_FN_ATTRS
3146_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3147{
3148 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3149 (__v8di) __W,
3150 (__mmask8) __U);
3151}
3152
3153static __inline__ __m512i __DEFAULT_FN_ATTRS
3154_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
3155{
3156 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3157 (__v8di)
3158 _mm512_setzero_si512 (),
3159 (__mmask8) __U);
3160}
3161
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003162static __inline__ __m512i __DEFAULT_FN_ATTRS
3163_mm512_cvtepu8_epi32 (__m128i __A)
3164{
3165 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3166 (__v16si)
3167 _mm512_setzero_si512 (),
3168 (__mmask16) -1);
3169}
3170
3171static __inline__ __m512i __DEFAULT_FN_ATTRS
3172_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3173{
3174 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3175 (__v16si) __W,
3176 (__mmask16) __U);
3177}
3178
3179static __inline__ __m512i __DEFAULT_FN_ATTRS
3180_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
3181{
3182 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3183 (__v16si)
3184 _mm512_setzero_si512 (),
3185 (__mmask16) __U);
3186}
3187
3188static __inline__ __m512i __DEFAULT_FN_ATTRS
3189_mm512_cvtepu8_epi64 (__m128i __A)
3190{
3191 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3192 (__v8di)
3193 _mm512_setzero_si512 (),
3194 (__mmask8) -1);
3195}
3196
3197static __inline__ __m512i __DEFAULT_FN_ATTRS
3198_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3199{
3200 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3201 (__v8di) __W,
3202 (__mmask8) __U);
3203}
3204
3205static __inline__ __m512i __DEFAULT_FN_ATTRS
3206_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
3207{
3208 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3209 (__v8di)
3210 _mm512_setzero_si512 (),
3211 (__mmask8) __U);
3212}
3213
3214static __inline__ __m512i __DEFAULT_FN_ATTRS
3215_mm512_cvtepu32_epi64 (__m256i __X)
3216{
3217 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3218 (__v8di)
3219 _mm512_setzero_si512 (),
3220 (__mmask8) -1);
3221}
3222
3223static __inline__ __m512i __DEFAULT_FN_ATTRS
3224_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3225{
3226 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3227 (__v8di) __W,
3228 (__mmask8) __U);
3229}
3230
3231static __inline__ __m512i __DEFAULT_FN_ATTRS
3232_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
3233{
3234 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3235 (__v8di)
3236 _mm512_setzero_si512 (),
3237 (__mmask8) __U);
3238}
3239
3240static __inline__ __m512i __DEFAULT_FN_ATTRS
3241_mm512_cvtepu16_epi32 (__m256i __A)
3242{
3243 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3244 (__v16si)
3245 _mm512_setzero_si512 (),
3246 (__mmask16) -1);
3247}
3248
3249static __inline__ __m512i __DEFAULT_FN_ATTRS
3250_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3251{
3252 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3253 (__v16si) __W,
3254 (__mmask16) __U);
3255}
3256
3257static __inline__ __m512i __DEFAULT_FN_ATTRS
3258_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
3259{
3260 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3261 (__v16si)
3262 _mm512_setzero_si512 (),
3263 (__mmask16) __U);
3264}
3265
3266static __inline__ __m512i __DEFAULT_FN_ATTRS
3267_mm512_cvtepu16_epi64 (__m128i __A)
3268{
3269 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3270 (__v8di)
3271 _mm512_setzero_si512 (),
3272 (__mmask8) -1);
3273}
3274
3275static __inline__ __m512i __DEFAULT_FN_ATTRS
3276_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3277{
3278 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3279 (__v8di) __W,
3280 (__mmask8) __U);
3281}
3282
3283static __inline__ __m512i __DEFAULT_FN_ATTRS
3284_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
3285{
3286 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3287 (__v8di)
3288 _mm512_setzero_si512 (),
3289 (__mmask8) __U);
3290}
3291
Michael Zuckermane98cc742016-02-23 15:59:47 +00003292static __inline__ __m512i __DEFAULT_FN_ATTRS
3293_mm512_rorv_epi32 (__m512i __A, __m512i __B)
3294{
3295 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3296 (__v16si) __B,
3297 (__v16si)
3298 _mm512_setzero_si512 (),
3299 (__mmask16) -1);
3300}
3301
3302static __inline__ __m512i __DEFAULT_FN_ATTRS
3303_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
3304{
3305 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3306 (__v16si) __B,
3307 (__v16si) __W,
3308 (__mmask16) __U);
3309}
3310
3311static __inline__ __m512i __DEFAULT_FN_ATTRS
3312_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
3313{
3314 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3315 (__v16si) __B,
3316 (__v16si)
3317 _mm512_setzero_si512 (),
3318 (__mmask16) __U);
3319}
3320
3321static __inline__ __m512i __DEFAULT_FN_ATTRS
3322_mm512_rorv_epi64 (__m512i __A, __m512i __B)
3323{
3324 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3325 (__v8di) __B,
3326 (__v8di)
3327 _mm512_setzero_si512 (),
3328 (__mmask8) -1);
3329}
3330
3331static __inline__ __m512i __DEFAULT_FN_ATTRS
3332_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
3333{
3334 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3335 (__v8di) __B,
3336 (__v8di) __W,
3337 (__mmask8) __U);
3338}
3339
3340static __inline__ __m512i __DEFAULT_FN_ATTRS
3341_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
3342{
3343 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3344 (__v8di) __B,
3345 (__v8di)
3346 _mm512_setzero_si512 (),
3347 (__mmask8) __U);
3348}
3349
3350
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003351
Craig Topper4cac1c22015-01-25 23:30:07 +00003352#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003353 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3354 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003355 (__mmask16)-1); })
3356
3357#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003358 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3359 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003360 (__mmask16)-1); })
3361
3362#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003363 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3364 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003365 (__mmask8)-1); })
3366
3367#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003368 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3369 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003370 (__mmask8)-1); })
3371
3372#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003373 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3374 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003375 (__mmask16)(m)); })
3376
3377#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003378 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3379 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003380 (__mmask16)(m)); })
3381
3382#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003383 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3384 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003385 (__mmask8)(m)); })
3386
3387#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003388 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3389 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003390 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00003391
Michael Zuckerman38a27272016-02-22 09:05:41 +00003392#define _mm512_rol_epi32(a, b) __extension__ ({ \
3393 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3394 (__v16si)\
3395 _mm512_setzero_si512 (),\
3396 (__mmask16) -1); })
3397
3398#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
3399 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3400 (__v16si) (W),\
3401 (__mmask16) (U)); })
3402
3403#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
3404 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3405 (__v16si)\
3406 _mm512_setzero_si512 (),\
3407 (__mmask16) (U)); })
3408
3409#define _mm512_rol_epi64(a, b) __extension__ ({ \
3410 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3411 (__v8di)\
3412 _mm512_setzero_si512 (),\
3413 (__mmask8) -1); })
3414
3415#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
3416 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3417 (__v8di) (W),\
3418 (__mmask8) (U)); })
3419
3420#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
3421 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3422 (__v8di)\
3423 _mm512_setzero_si512 (),\
3424 (__mmask8) (U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00003425static __inline__ __m512i __DEFAULT_FN_ATTRS
3426_mm512_rolv_epi32 (__m512i __A, __m512i __B)
3427{
3428 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3429 (__v16si) __B,
3430 (__v16si)
3431 _mm512_setzero_si512 (),
3432 (__mmask16) -1);
3433}
3434
3435static __inline__ __m512i __DEFAULT_FN_ATTRS
3436_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
3437{
3438 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3439 (__v16si) __B,
3440 (__v16si) __W,
3441 (__mmask16) __U);
3442}
3443
3444static __inline__ __m512i __DEFAULT_FN_ATTRS
3445_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
3446{
3447 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3448 (__v16si) __B,
3449 (__v16si)
3450 _mm512_setzero_si512 (),
3451 (__mmask16) __U);
3452}
3453
3454static __inline__ __m512i __DEFAULT_FN_ATTRS
3455_mm512_rolv_epi64 (__m512i __A, __m512i __B)
3456{
3457 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3458 (__v8di) __B,
3459 (__v8di)
3460 _mm512_setzero_si512 (),
3461 (__mmask8) -1);
3462}
3463
3464static __inline__ __m512i __DEFAULT_FN_ATTRS
3465_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
3466{
3467 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3468 (__v8di) __B,
3469 (__v8di) __W,
3470 (__mmask8) __U);
3471}
3472
3473static __inline__ __m512i __DEFAULT_FN_ATTRS
3474_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
3475{
3476 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3477 (__v8di) __B,
3478 (__v8di)
3479 _mm512_setzero_si512 (),
3480 (__mmask8) __U);
3481}
3482
3483#define _mm512_ror_epi32( __A, __B) __extension__ ({ \
3484__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3485 (__v16si)\
3486 _mm512_setzero_si512 (),\
3487 (__mmask16) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003488})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003489
3490#define _mm512_mask_ror_epi32( __W, __U, __A, __B) __extension__ ({ \
3491__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3492 (__v16si)( __W),\
3493 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003494})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003495
3496#define _mm512_maskz_ror_epi32( __U, __A, __B) __extension__ ({ \
3497__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3498 (__v16si)\
3499 _mm512_setzero_si512 (),\
3500 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003501})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003502
3503#define _mm512_ror_epi64( __A, __B) __extension__ ({ \
3504__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3505 (__v8di)\
3506 _mm512_setzero_si512 (),\
3507 (__mmask8) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003508})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003509
3510#define _mm512_mask_ror_epi64( __W, __U, __A, __B) __extension__ ({ \
3511__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3512 (__v8di)( __W),\
3513 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003514})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003515
3516#define _mm512_maskz_ror_epi64( __U, __A, __B) __extension__ ({ \
3517__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3518 (__v8di)\
3519 _mm512_setzero_si512 (),\
3520 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003521})
Michael Zuckerman38a27272016-02-22 09:05:41 +00003522
3523
Michael Kupersteine45af542015-06-30 13:36:19 +00003524#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00003525
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003526#endif // __AVX512FINTRIN_H