blob: 4b3932d1470e009ec5579b1dbfe6a4d8313c561b [file] [log] [blame]
Adam Nemet9a3ea602014-07-28 17:14:38 +00001/*===---- avx512fintrin.h - AVX2 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) {
572 return (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A,
573 (__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) {
581 return (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A,
582 (__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__ ({ \
589 (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A, (__v4sf) __B, \
590 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
591
592#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
593 (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A, (__v4sf) __B, \
594 (__v4sf) __W, (__mmask8) __U,__R); })
595
596#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
597 (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A, (__v4sf) __B, \
598 (__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) {
602 return (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A,
603 (__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) {
611 return (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A,
612 (__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__ ({ \
619 (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A, (__v2df) __B, \
620 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
621
622#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
623 (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A, (__v2df) __B, \
624 (__v2df) __W, (__mmask8) __U,__R); })
625
626#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
627 (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A, (__v2df) __B, \
628 (__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) {
695 return (__m128) __builtin_ia32_minss_mask ((__v4sf) __A,
696 (__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) {
704 return (__m128) __builtin_ia32_minss_mask ((__v4sf) __A,
705 (__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__ ({ \
712 (__m128) __builtin_ia32_minss_mask ((__v4sf) __A, (__v4sf) __B, \
713 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
714
715#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
716 (__m128) __builtin_ia32_minss_mask ((__v4sf) __A, (__v4sf) __B, \
717 (__v4sf) __W, (__mmask8) __U,__R); })
718
719#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
720 (__m128) __builtin_ia32_minss_mask ((__v4sf) __A, (__v4sf) __B, \
721 (__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) {
725 return (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A,
726 (__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) {
734 return (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A,
735 (__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__ ({ \
742 (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A, (__v2df) __B, \
743 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
744
745#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
746 (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A, (__v2df) __B, \
747 (__v2df) __W, (__mmask8) __U,__R); })
748
749#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
750 (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A, (__v2df) __B, \
751 (__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
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000875_mm512_sqrt_pd(__m512d a)
876{
877 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
878 (__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
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000884_mm512_sqrt_ps(__m512 a)
885{
886 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
887 (__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{
912 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
913 (__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{
922 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
923 (__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{
949 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
950 (__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{
959 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
960 (__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) {
1022 return (__m128) __builtin_ia32_addss_mask ((__v4sf) __A,
1023 (__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) {
1031 return (__m128) __builtin_ia32_addss_mask ((__v4sf) __A,
1032 (__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__ ({ \
1039 (__m128) __builtin_ia32_addss_mask ((__v4sf) __A, (__v4sf) __B, \
1040 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1041
1042#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1043 (__m128) __builtin_ia32_addss_mask ((__v4sf) __A, (__v4sf) __B, \
1044 (__v4sf) __W, (__mmask8) __U,__R); })
1045
1046#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
1047 (__m128) __builtin_ia32_addss_mask ((__v4sf) __A, (__v4sf) __B, \
1048 (__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) {
1052 return (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A,
1053 (__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) {
1061 return (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A,
1062 (__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__ ({ \
1068 (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A, (__v2df) __B, \
1069 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1070
1071#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1072 (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A, (__v2df) __B, \
1073 (__v2df) __W, (__mmask8) __U,__R); })
1074
1075#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
1076 (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A, (__v2df) __B, \
1077 (__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) {
1141 return (__m128) __builtin_ia32_subss_mask ((__v4sf) __A,
1142 (__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) {
1150 return (__m128) __builtin_ia32_subss_mask ((__v4sf) __A,
1151 (__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__ ({ \
1157 (__m128) __builtin_ia32_subss_mask ((__v4sf) __A, (__v4sf) __B, \
1158 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1159
1160#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1161 (__m128) __builtin_ia32_subss_mask ((__v4sf) __A, (__v4sf) __B, \
1162 (__v4sf) __W, (__mmask8) __U,__R); })
1163
1164#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
1165 (__m128) __builtin_ia32_subss_mask ((__v4sf) __A, (__v4sf) __B, \
1166 (__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) {
1170 return (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A,
1171 (__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) {
1179 return (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A,
1180 (__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__ ({ \
1187 (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A, (__v2df) __B, \
1188 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1189
1190#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1191 (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A, (__v2df) __B, \
1192 (__v2df) __W, (__mmask8) __U,__R); })
1193
1194#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
1195 (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A, (__v2df) __B, \
1196 (__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) {
1262 return (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A,
1263 (__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) {
1271 return (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A,
1272 (__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__ ({ \
1278 (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A, (__v4sf) __B, \
1279 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1280
1281#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1282 (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A, (__v4sf) __B, \
1283 (__v4sf) __W, (__mmask8) __U,__R); })
1284
1285#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
1286 (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A, (__v4sf) __B, \
1287 (__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) {
1291 return (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A,
1292 (__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) {
1300 return (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A,
1301 (__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__ ({ \
1308 (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A, (__v2df) __B, \
1309 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1310
1311#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1312 (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A, (__v2df) __B, \
1313 (__v2df) __W, (__mmask8) __U,__R); })
1314
1315#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
1316 (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A, (__v2df) __B, \
1317 (__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) {
1383 return (__m128) __builtin_ia32_divss_mask ((__v4sf) __A,
1384 (__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) {
1392 return (__m128) __builtin_ia32_divss_mask ((__v4sf) __A,
1393 (__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__ ({ \
1400 (__m128) __builtin_ia32_divss_mask ((__v4sf) __A, (__v4sf) __B, \
1401 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1402
1403#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1404 (__m128) __builtin_ia32_divss_mask ((__v4sf) __A, (__v4sf) __B, \
1405 (__v4sf) __W, (__mmask8) __U,__R); })
1406
1407#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
1408 (__m128) __builtin_ia32_divss_mask ((__v4sf) __A, (__v4sf) __B, \
1409 (__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) {
1413 return (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A,
1414 (__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) {
1422 return (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A,
1423 (__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__ ({ \
1430 (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A, (__v2df) __B, \
1431 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1432
1433#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1434 (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A, (__v2df) __B, \
1435 (__v2df) __W, (__mmask8) __U,__R); })
1436
1437#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
1438 (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A, (__v2df) __B, \
1439 (__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__ ({ \
2336 __m512d __A = (A); \
2337 (__m256d) \
2338 __builtin_ia32_extractf64x4_mask((__v8df)__A, \
2339 (I), \
2340 (__v4df)_mm256_setzero_si256(), \
2341 (__mmask8) -1); })
2342
2343#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
2344 __m512 __A = (A); \
2345 (__m128) \
2346 __builtin_ia32_extractf32x4_mask((__v16sf)__A, \
2347 (I), \
2348 (__v4sf)_mm_setzero_ps(), \
2349 (__mmask8) -1); })
2350
Adam Nemet0d5bb552014-07-28 17:14:40 +00002351/* Vector Blend */
2352
Michael Kupersteine45af542015-06-30 13:36:19 +00002353static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002354_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2355{
2356 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2357 (__v8df) __W,
2358 (__mmask8) __U);
2359}
2360
Michael Kupersteine45af542015-06-30 13:36:19 +00002361static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002362_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2363{
2364 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2365 (__v16sf) __W,
2366 (__mmask16) __U);
2367}
2368
Michael Kupersteine45af542015-06-30 13:36:19 +00002369static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002370_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2371{
2372 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2373 (__v8di) __W,
2374 (__mmask8) __U);
2375}
2376
Michael Kupersteine45af542015-06-30 13:36:19 +00002377static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002378_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2379{
2380 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2381 (__v16si) __W,
2382 (__mmask16) __U);
2383}
2384
2385/* Compare */
2386
Craig Topper53565c62015-02-01 22:27:40 +00002387#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2388 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2389 (__v16sf)(__m512)(B), \
2390 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002391
Craig Topper53565c62015-02-01 22:27:40 +00002392#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2393 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2394 (__v16sf)(__m512)(B), \
2395 (P), (__mmask16)(U), (R)); })
2396
2397#define _mm512_cmp_ps_mask(A, B, P) \
2398 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2399
2400#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2401 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2402
2403#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2404 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2405 (__v8df)(__m512d)(B), \
2406 (P), (__mmask8)-1, (R)); })
2407
2408#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2409 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2410 (__v8df)(__m512d)(B), \
2411 (P), (__mmask8)(U), (R)); })
2412
2413#define _mm512_cmp_pd_mask(A, B, P) \
2414 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2415
2416#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2417 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002418
2419/* Conversion */
2420
Michael Kupersteine45af542015-06-30 13:36:19 +00002421static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002422_mm512_cvttps_epu32(__m512 __A)
2423{
2424 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2425 (__v16si)
2426 _mm512_setzero_si512 (),
2427 (__mmask16) -1,
2428 _MM_FROUND_CUR_DIRECTION);
2429}
2430
Craig Topper72c7d512015-02-01 07:35:35 +00002431#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2432 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2433 (__v16sf)_mm512_setzero_ps(), \
2434 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002435
Craig Topper72c7d512015-02-01 07:35:35 +00002436#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2437 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2438 (__v16sf)_mm512_setzero_ps(), \
2439 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002440
Michael Kupersteine45af542015-06-30 13:36:19 +00002441static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002442_mm512_cvtepi32_pd(__m256i __A)
2443{
2444 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2445 (__v8df)
2446 _mm512_setzero_pd (),
2447 (__mmask8) -1);
2448}
2449
Michael Kupersteine45af542015-06-30 13:36:19 +00002450static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002451_mm512_cvtepu32_pd(__m256i __A)
2452{
2453 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2454 (__v8df)
2455 _mm512_setzero_pd (),
2456 (__mmask8) -1);
2457}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002458
Craig Topper72c7d512015-02-01 07:35:35 +00002459#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2460 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2461 (__v8sf)_mm256_setzero_ps(), \
2462 (__mmask8)-1, (R)); })
2463
2464#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2465 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2466 (__v16hi)_mm256_setzero_si256(), \
2467 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002468
Michael Kupersteine45af542015-06-30 13:36:19 +00002469static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002470_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002471{
2472 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2473 (__v16sf)
2474 _mm512_setzero_ps (),
2475 (__mmask16) -1,
2476 _MM_FROUND_CUR_DIRECTION);
2477}
2478
Michael Kupersteine45af542015-06-30 13:36:19 +00002479static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002480_mm512_cvttps_epi32(__m512 a)
2481{
2482 return (__m512i)
2483 __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
2484 (__v16si) _mm512_setzero_si512 (),
2485 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2486}
2487
Michael Kupersteine45af542015-06-30 13:36:19 +00002488static __inline __m256i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002489_mm512_cvttpd_epi32(__m512d a)
2490{
2491 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
2492 (__v8si)_mm256_setzero_si256(),
2493 (__mmask8) -1,
2494 _MM_FROUND_CUR_DIRECTION);
2495}
2496
Craig Topper72c7d512015-02-01 07:35:35 +00002497#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2498 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2499 (__v8si)_mm256_setzero_si256(), \
2500 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002501
Craig Topper72c7d512015-02-01 07:35:35 +00002502#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2503 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2504 (__v16si)_mm512_setzero_si512(), \
2505 (__mmask16)-1, (R)); })
2506
2507#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2508 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2509 (__v16si)_mm512_setzero_si512(), \
2510 (__mmask16)-1, (R)); })
2511
2512#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2513 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2514 (__v8si)_mm256_setzero_si256(), \
2515 (__mmask8)-1, (R)); })
2516
2517#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2518 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2519 (__v16si)_mm512_setzero_si512(), \
2520 (__mmask16)-1, (R)); })
2521
2522#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2523 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2524 (__v8si)_mm256_setzero_si256(), \
2525 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002526
Adam Nemet63a951e2015-01-14 01:31:17 +00002527/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00002528static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002529_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2530{
2531 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2532}
2533
Michael Kupersteine45af542015-06-30 13:36:19 +00002534static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002535_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2536{
2537 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2538}
2539
Michael Kupersteine45af542015-06-30 13:36:19 +00002540static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002541_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2542{
2543 return __builtin_shufflevector(__a, __b,
2544 2, 18, 3, 19,
2545 2+4, 18+4, 3+4, 19+4,
2546 2+8, 18+8, 3+8, 19+8,
2547 2+12, 18+12, 3+12, 19+12);
2548}
2549
Michael Kupersteine45af542015-06-30 13:36:19 +00002550static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002551_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2552{
2553 return __builtin_shufflevector(__a, __b,
2554 0, 16, 1, 17,
2555 0+4, 16+4, 1+4, 17+4,
2556 0+8, 16+8, 1+8, 17+8,
2557 0+12, 16+12, 1+12, 17+12);
2558}
2559
Adam Nemet0d5bb552014-07-28 17:14:40 +00002560/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002561
Michael Kupersteine45af542015-06-30 13:36:19 +00002562static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002563_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002564{
2565 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2566 (__v16si) __B,
2567 (__mmask16) -1);
2568}
2569
Michael Kupersteine45af542015-06-30 13:36:19 +00002570static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002571_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002572{
2573 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2574 (__v8di) __B,
2575 (__mmask8) -1);
2576}
2577
Adam Nemet0d5bb552014-07-28 17:14:40 +00002578/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002579
Michael Kupersteine45af542015-06-30 13:36:19 +00002580static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002581_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002582{
2583 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2584 (__v16si)
2585 _mm512_setzero_si512 (),
2586 (__mmask16) __U);
2587}
2588
Michael Kupersteine45af542015-06-30 13:36:19 +00002589static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002590_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002591{
2592 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2593 (__v8di)
2594 _mm512_setzero_si512 (),
2595 (__mmask8) __U);
2596}
2597
Michael Kupersteine45af542015-06-30 13:36:19 +00002598static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002599_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002600{
2601 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2602 (__v16sf)
2603 _mm512_setzero_ps (),
2604 (__mmask16) __U);
2605}
2606
Michael Kupersteine45af542015-06-30 13:36:19 +00002607static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002608_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002609{
2610 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2611 (__v8df)
2612 _mm512_setzero_pd (),
2613 (__mmask8) __U);
2614}
2615
Michael Kupersteine45af542015-06-30 13:36:19 +00002616static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002617_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2618{
2619 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2620 (__v16sf)
2621 _mm512_setzero_ps (),
2622 (__mmask16) __U);
2623}
2624
Michael Kupersteine45af542015-06-30 13:36:19 +00002625static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002626_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2627{
2628 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2629 (__v8df)
2630 _mm512_setzero_pd (),
2631 (__mmask8) __U);
2632}
2633
Michael Kupersteine45af542015-06-30 13:36:19 +00002634static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002635_mm512_loadu_pd(double const *__p)
2636{
2637 struct __loadu_pd {
2638 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002639 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002640 return ((struct __loadu_pd*)__p)->__v;
2641}
2642
Michael Kupersteine45af542015-06-30 13:36:19 +00002643static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002644_mm512_loadu_ps(float const *__p)
2645{
2646 struct __loadu_ps {
2647 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002648 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002649 return ((struct __loadu_ps*)__p)->__v;
2650}
2651
Michael Kupersteine45af542015-06-30 13:36:19 +00002652static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002653_mm512_load_ps(double const *__p)
2654{
2655 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2656 (__v16sf)
2657 _mm512_setzero_ps (),
2658 (__mmask16) -1);
2659}
2660
Michael Kupersteine45af542015-06-30 13:36:19 +00002661static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002662_mm512_load_pd(float const *__p)
2663{
2664 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2665 (__v8df)
2666 _mm512_setzero_pd (),
2667 (__mmask8) -1);
2668}
2669
Adam Nemet0d5bb552014-07-28 17:14:40 +00002670/* SIMD store ops */
2671
Michael Kupersteine45af542015-06-30 13:36:19 +00002672static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002673_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002674{
2675 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2676 (__mmask8) __U);
2677}
2678
Michael Kupersteine45af542015-06-30 13:36:19 +00002679static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002680_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002681{
2682 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2683 (__mmask16) __U);
2684}
2685
Michael Kupersteine45af542015-06-30 13:36:19 +00002686static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002687_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002688{
2689 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2690}
2691
Michael Kupersteine45af542015-06-30 13:36:19 +00002692static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002693_mm512_storeu_pd(void *__P, __m512d __A)
2694{
2695 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2696}
2697
Michael Kupersteine45af542015-06-30 13:36:19 +00002698static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002699_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002700{
2701 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2702 (__mmask16) __U);
2703}
2704
Michael Kupersteine45af542015-06-30 13:36:19 +00002705static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002706_mm512_storeu_ps(void *__P, __m512 __A)
2707{
2708 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2709}
2710
Michael Kupersteine45af542015-06-30 13:36:19 +00002711static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002712_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002713{
Adam Nemetc0cff242015-01-16 18:51:50 +00002714 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002715}
2716
Michael Kupersteine45af542015-06-30 13:36:19 +00002717static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002718_mm512_store_pd(void *__P, __m512d __A)
2719{
2720 *(__m512d*)__P = __A;
2721}
2722
Michael Kupersteine45af542015-06-30 13:36:19 +00002723static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002724_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2725{
2726 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2727 (__mmask16) __U);
2728}
2729
Michael Kupersteine45af542015-06-30 13:36:19 +00002730static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002731_mm512_store_ps(void *__P, __m512 __A)
2732{
2733 *(__m512*)__P = __A;
2734}
2735
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002736/* Mask ops */
2737
Michael Kupersteine45af542015-06-30 13:36:19 +00002738static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002739_mm512_knot(__mmask16 __M)
2740{
2741 return __builtin_ia32_knothi(__M);
2742}
2743
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002744/* Integer compare */
2745
Michael Kupersteine45af542015-06-30 13:36:19 +00002746static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002747_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2748 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2749 (__mmask16)-1);
2750}
2751
Michael Kupersteine45af542015-06-30 13:36:19 +00002752static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002753_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2754 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2755 __u);
2756}
2757
Michael Kupersteine45af542015-06-30 13:36:19 +00002758static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002759_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2760 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2761 (__mmask16)-1);
2762}
2763
Michael Kupersteine45af542015-06-30 13:36:19 +00002764static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002765_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2766 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2767 __u);
2768}
2769
Michael Kupersteine45af542015-06-30 13:36:19 +00002770static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002771_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2772 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2773 __u);
2774}
2775
Michael Kupersteine45af542015-06-30 13:36:19 +00002776static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002777_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2778 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2779 (__mmask8)-1);
2780}
2781
Michael Kupersteine45af542015-06-30 13:36:19 +00002782static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002783_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2784 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2785 (__mmask8)-1);
2786}
2787
Michael Kupersteine45af542015-06-30 13:36:19 +00002788static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002789_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2790 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2791 __u);
2792}
2793
Michael Kupersteine45af542015-06-30 13:36:19 +00002794static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002795_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2796 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2797 (__mmask16)-1);
2798}
2799
Michael Kupersteine45af542015-06-30 13:36:19 +00002800static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002801_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2802 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2803 __u);
2804}
2805
Michael Kupersteine45af542015-06-30 13:36:19 +00002806static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002807_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2808 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2809 (__mmask16)-1);
2810}
2811
Michael Kupersteine45af542015-06-30 13:36:19 +00002812static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002813_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2814 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2815 __u);
2816}
2817
Michael Kupersteine45af542015-06-30 13:36:19 +00002818static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002819_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2820 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2821 (__mmask8)-1);
2822}
2823
Michael Kupersteine45af542015-06-30 13:36:19 +00002824static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002825_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2826 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2827 __u);
2828}
2829
Michael Kupersteine45af542015-06-30 13:36:19 +00002830static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002831_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2832 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2833 (__mmask8)-1);
2834}
2835
Michael Kupersteine45af542015-06-30 13:36:19 +00002836static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002837_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2838 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2839 __u);
2840}
2841
Michael Kupersteine45af542015-06-30 13:36:19 +00002842static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002843_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2844 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2845 (__mmask16)-1);
2846}
2847
Michael Kupersteine45af542015-06-30 13:36:19 +00002848static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002849_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2850 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2851 __u);
2852}
2853
Michael Kupersteine45af542015-06-30 13:36:19 +00002854static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002855_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2856 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2857 (__mmask16)-1);
2858}
2859
Michael Kupersteine45af542015-06-30 13:36:19 +00002860static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002861_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2862 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2863 __u);
2864}
2865
Michael Kupersteine45af542015-06-30 13:36:19 +00002866static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002867_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2868 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2869 __u);
2870}
2871
Michael Kupersteine45af542015-06-30 13:36:19 +00002872static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002873_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2874 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2875 (__mmask8)-1);
2876}
2877
Michael Kupersteine45af542015-06-30 13:36:19 +00002878static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002879_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2880 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2881 (__mmask8)-1);
2882}
2883
Michael Kupersteine45af542015-06-30 13:36:19 +00002884static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002885_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2886 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2887 __u);
2888}
2889
Michael Kupersteine45af542015-06-30 13:36:19 +00002890static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002891_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2892 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2893 (__mmask16)-1);
2894}
2895
Michael Kupersteine45af542015-06-30 13:36:19 +00002896static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002897_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2898 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2899 __u);
2900}
2901
Michael Kupersteine45af542015-06-30 13:36:19 +00002902static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002903_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2904 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2905 (__mmask16)-1);
2906}
2907
Michael Kupersteine45af542015-06-30 13:36:19 +00002908static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002909_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2910 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2911 __u);
2912}
2913
Michael Kupersteine45af542015-06-30 13:36:19 +00002914static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002915_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2916 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2917 (__mmask8)-1);
2918}
2919
Michael Kupersteine45af542015-06-30 13:36:19 +00002920static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002921_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2922 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2923 __u);
2924}
2925
Michael Kupersteine45af542015-06-30 13:36:19 +00002926static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002927_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2928 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2929 (__mmask8)-1);
2930}
2931
Michael Kupersteine45af542015-06-30 13:36:19 +00002932static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002933_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2934 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2935 __u);
2936}
2937
Michael Kupersteine45af542015-06-30 13:36:19 +00002938static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002939_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2940 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2941 (__mmask16)-1);
2942}
2943
Michael Kupersteine45af542015-06-30 13:36:19 +00002944static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002945_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2946 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2947 __u);
2948}
2949
Michael Kupersteine45af542015-06-30 13:36:19 +00002950static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002951_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2952 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2953 (__mmask16)-1);
2954}
2955
Michael Kupersteine45af542015-06-30 13:36:19 +00002956static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002957_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2958 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2959 __u);
2960}
2961
Michael Kupersteine45af542015-06-30 13:36:19 +00002962static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002963_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2964 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2965 (__mmask8)-1);
2966}
2967
Michael Kupersteine45af542015-06-30 13:36:19 +00002968static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002969_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2970 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2971 __u);
2972}
2973
Michael Kupersteine45af542015-06-30 13:36:19 +00002974static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002975_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2976 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2977 (__mmask8)-1);
2978}
2979
Michael Kupersteine45af542015-06-30 13:36:19 +00002980static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002981_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2982 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2983 __u);
2984}
2985
Michael Kupersteine45af542015-06-30 13:36:19 +00002986static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002987_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2988 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2989 (__mmask16)-1);
2990}
2991
Michael Kupersteine45af542015-06-30 13:36:19 +00002992static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002993_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2994 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2995 __u);
2996}
2997
Michael Kupersteine45af542015-06-30 13:36:19 +00002998static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002999_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
3000 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3001 (__mmask16)-1);
3002}
3003
Michael Kupersteine45af542015-06-30 13:36:19 +00003004static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003005_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3006 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3007 __u);
3008}
3009
Michael Kupersteine45af542015-06-30 13:36:19 +00003010static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003011_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3012 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3013 (__mmask8)-1);
3014}
3015
Michael Kupersteine45af542015-06-30 13:36:19 +00003016static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003017_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3018 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3019 __u);
3020}
3021
Michael Kupersteine45af542015-06-30 13:36:19 +00003022static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003023_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3024 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3025 (__mmask8)-1);
3026}
3027
Michael Kupersteine45af542015-06-30 13:36:19 +00003028static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003029_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3030 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3031 __u);
3032}
3033
3034#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
3035 __m512i __a = (a); \
3036 __m512i __b = (b); \
3037 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3038 (__mmask16)-1); })
3039
3040#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
3041 __m512i __a = (a); \
3042 __m512i __b = (b); \
3043 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3044 (__mmask16)-1); })
3045
3046#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
3047 __m512i __a = (a); \
3048 __m512i __b = (b); \
3049 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3050 (__mmask8)-1); })
3051
3052#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
3053 __m512i __a = (a); \
3054 __m512i __b = (b); \
3055 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3056 (__mmask8)-1); })
3057
3058#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
3059 __m512i __a = (a); \
3060 __m512i __b = (b); \
3061 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3062 (__mmask16)(m)); })
3063
3064#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
3065 __m512i __a = (a); \
3066 __m512i __b = (b); \
3067 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3068 (__mmask16)(m)); })
3069
3070#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
3071 __m512i __a = (a); \
3072 __m512i __b = (b); \
3073 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3074 (__mmask8)(m)); })
3075
3076#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
3077 __m512i __a = (a); \
3078 __m512i __b = (b); \
3079 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3080 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00003081
Michael Kupersteine45af542015-06-30 13:36:19 +00003082#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00003083
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003084#endif // __AVX512FINTRIN_H