blob: 69179c95da681d790462b626f87dcaceb21c5782 [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
Michael Kupersteine45af542015-06-30 13:36:19 +000060static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000061_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
62{
63 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
64 (__v16si)
65 _mm512_setzero_si512 (),
66 __M);
67}
68
Michael Kupersteine45af542015-06-30 13:36:19 +000069static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000070_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
71{
72#ifdef __x86_64__
73 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
74 (__v8di)
75 _mm512_setzero_si512 (),
76 __M);
77#else
78 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
79 (__v8di)
80 _mm512_setzero_si512 (),
81 __M);
82#endif
83}
84
Michael Kupersteine45af542015-06-30 13:36:19 +000085static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +000086_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000087{
88 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
89 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
90}
Michael Kupersteine45af542015-06-30 13:36:19 +000091static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +000092_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000093{
94 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
95}
Adam Nemet0d5bb552014-07-28 17:14:40 +000096
Michael Kupersteine45af542015-06-30 13:36:19 +000097static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +000098_mm512_set1_ps(float __w)
99{
100 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
101 __w, __w, __w, __w, __w, __w, __w, __w };
102}
103
Michael Kupersteine45af542015-06-30 13:36:19 +0000104static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000105_mm512_set1_pd(double __w)
106{
107 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
108}
109
Michael Kupersteine45af542015-06-30 13:36:19 +0000110static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000111_mm512_set1_epi32(int __s)
112{
113 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
114 __s, __s, __s, __s, __s, __s, __s, __s };
115}
116
Michael Kupersteine45af542015-06-30 13:36:19 +0000117static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000118_mm512_set1_epi64(long long __d)
119{
120 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
121}
122
Michael Kupersteine45af542015-06-30 13:36:19 +0000123static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000124_mm512_broadcastss_ps(__m128 __X)
125{
126 float __f = __X[0];
127 return (__v16sf){ __f, __f, __f, __f,
128 __f, __f, __f, __f,
129 __f, __f, __f, __f,
130 __f, __f, __f, __f };
131}
132
Michael Kupersteine45af542015-06-30 13:36:19 +0000133static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000134_mm512_broadcastsd_pd(__m128d __X)
135{
136 double __d = __X[0];
137 return (__v8df){ __d, __d, __d, __d,
138 __d, __d, __d, __d };
139}
140
Adam Nemetc871ff92014-07-30 16:51:24 +0000141/* Cast between vector types */
142
Michael Kupersteine45af542015-06-30 13:36:19 +0000143static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000144_mm512_castpd256_pd512(__m256d __a)
145{
146 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
147}
148
Michael Kupersteine45af542015-06-30 13:36:19 +0000149static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000150_mm512_castps256_ps512(__m256 __a)
151{
152 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
153 -1, -1, -1, -1, -1, -1, -1, -1);
154}
155
Michael Kupersteine45af542015-06-30 13:36:19 +0000156static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000157_mm512_castpd512_pd128(__m512d __a)
158{
159 return __builtin_shufflevector(__a, __a, 0, 1);
160}
161
Michael Kupersteine45af542015-06-30 13:36:19 +0000162static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000163_mm512_castps512_ps128(__m512 __a)
164{
165 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
166}
167
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000168/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000169static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000170_mm512_and_epi32(__m512i __a, __m512i __b)
171{
172 return __a & __b;
173}
174
Michael Kupersteine45af542015-06-30 13:36:19 +0000175static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000176_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
177{
178 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
179 (__v16si) __b,
180 (__v16si) __src,
181 (__mmask16) __k);
182}
Michael Kupersteine45af542015-06-30 13:36:19 +0000183static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000184_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
185{
186 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
187 (__v16si) __b,
188 (__v16si)
189 _mm512_setzero_si512 (),
190 (__mmask16) __k);
191}
192
Michael Kupersteine45af542015-06-30 13:36:19 +0000193static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000194_mm512_and_epi64(__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_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
201{
202 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
203 (__v8di) __b,
204 (__v8di) __src,
205 (__mmask8) __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_epi64(__mmask8 __k, __m512i __a, __m512i __b)
209{
210 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
211 (__v8di) __b,
212 (__v8di)
213 _mm512_setzero_si512 (),
214 (__mmask8) __k);
215}
216
Michael Kupersteine45af542015-06-30 13:36:19 +0000217static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000218_mm512_andnot_epi32 (__m512i __A, __m512i __B)
219{
220 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
221 (__v16si) __B,
222 (__v16si)
223 _mm512_setzero_si512 (),
224 (__mmask16) -1);
225}
226
Michael Kupersteine45af542015-06-30 13:36:19 +0000227static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000228_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
229{
230 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
231 (__v16si) __B,
232 (__v16si) __W,
233 (__mmask16) __U);
234}
235
Michael Kupersteine45af542015-06-30 13:36:19 +0000236static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000237_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
238{
239 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
240 (__v16si) __B,
241 (__v16si)
242 _mm512_setzero_si512 (),
243 (__mmask16) __U);
244}
245
Michael Kupersteine45af542015-06-30 13:36:19 +0000246static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000247_mm512_andnot_epi64 (__m512i __A, __m512i __B)
248{
249 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
250 (__v8di) __B,
251 (__v8di)
252 _mm512_setzero_si512 (),
253 (__mmask8) -1);
254}
255
Michael Kupersteine45af542015-06-30 13:36:19 +0000256static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000257_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
258{
259 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
260 (__v8di) __B,
261 (__v8di) __W, __U);
262}
263
Michael Kupersteine45af542015-06-30 13:36:19 +0000264static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000265_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
266{
267 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
268 (__v8di) __B,
269 (__v8di)
270 _mm512_setzero_pd (),
271 __U);
272}
Michael Kupersteine45af542015-06-30 13:36:19 +0000273static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000274_mm512_or_epi32(__m512i __a, __m512i __b)
275{
276 return __a | __b;
277}
278
Michael Kupersteine45af542015-06-30 13:36:19 +0000279static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000280_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
281{
282 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
283 (__v16si) __b,
284 (__v16si) __src,
285 (__mmask16) __k);
286}
Michael Kupersteine45af542015-06-30 13:36:19 +0000287static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000288_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
289{
290 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
291 (__v16si) __b,
292 (__v16si)
293 _mm512_setzero_si512 (),
294 (__mmask16) __k);
295}
296
Michael Kupersteine45af542015-06-30 13:36:19 +0000297static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000298_mm512_or_epi64(__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_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
305{
306 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
307 (__v8di) __b,
308 (__v8di) __src,
309 (__mmask8) __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_epi64(__mmask8 __k, __m512i __a, __m512i __b)
313{
314 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
315 (__v8di) __b,
316 (__v8di)
317 _mm512_setzero_si512 (),
318 (__mmask8) __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_xor_epi32(__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_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
329{
330 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
331 (__v16si) __b,
332 (__v16si) __src,
333 (__mmask16) __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_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
337{
338 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
339 (__v16si) __b,
340 (__v16si)
341 _mm512_setzero_si512 (),
342 (__mmask16) __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_epi64(__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_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
353{
354 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
355 (__v8di) __b,
356 (__v8di) __src,
357 (__mmask8) __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_epi64(__mmask8 __k, __m512i __a, __m512i __b)
361{
362 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
363 (__v8di) __b,
364 (__v8di)
365 _mm512_setzero_si512 (),
366 (__mmask8) __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_and_si512(__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_or_si512(__m512i __a, __m512i __b)
377{
378 return __a | __b;
379}
380
Michael Kupersteine45af542015-06-30 13:36:19 +0000381static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000382_mm512_xor_si512(__m512i __a, __m512i __b)
383{
384 return __a ^ __b;
385}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000386/* Arithmetic */
387
Michael Kupersteine45af542015-06-30 13:36:19 +0000388static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000389_mm512_add_pd(__m512d __a, __m512d __b)
390{
391 return __a + __b;
392}
393
Michael Kupersteine45af542015-06-30 13:36:19 +0000394static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000395_mm512_add_ps(__m512 __a, __m512 __b)
396{
397 return __a + __b;
398}
399
Michael Kupersteine45af542015-06-30 13:36:19 +0000400static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000401_mm512_mul_pd(__m512d __a, __m512d __b)
402{
403 return __a * __b;
404}
405
Michael Kupersteine45af542015-06-30 13:36:19 +0000406static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000407_mm512_mul_ps(__m512 __a, __m512 __b)
408{
409 return __a * __b;
410}
411
Michael Kupersteine45af542015-06-30 13:36:19 +0000412static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000413_mm512_sub_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_sub_ps(__m512 __a, __m512 __b)
420{
421 return __a - __b;
422}
423
Michael Kupersteine45af542015-06-30 13:36:19 +0000424static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000425_mm512_add_epi64 (__m512i __A, __m512i __B)
426{
427 return (__m512i) ((__v8di) __A + (__v8di) __B);
428}
429
Michael Kupersteine45af542015-06-30 13:36:19 +0000430static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000431_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
432{
433 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
434 (__v8di) __B,
435 (__v8di) __W,
436 (__mmask8) __U);
437}
438
Michael Kupersteine45af542015-06-30 13:36:19 +0000439static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000440_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
441{
442 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
443 (__v8di) __B,
444 (__v8di)
445 _mm512_setzero_si512 (),
446 (__mmask8) __U);
447}
448
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000450_mm512_sub_epi64 (__m512i __A, __m512i __B)
451{
452 return (__m512i) ((__v8di) __A - (__v8di) __B);
453}
454
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000456_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
457{
458 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
459 (__v8di) __B,
460 (__v8di) __W,
461 (__mmask8) __U);
462}
463
Michael Kupersteine45af542015-06-30 13:36:19 +0000464static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000465_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
466{
467 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
468 (__v8di) __B,
469 (__v8di)
470 _mm512_setzero_si512 (),
471 (__mmask8) __U);
472}
473
Michael Kupersteine45af542015-06-30 13:36:19 +0000474static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000475_mm512_add_epi32 (__m512i __A, __m512i __B)
476{
477 return (__m512i) ((__v16si) __A + (__v16si) __B);
478}
479
Michael Kupersteine45af542015-06-30 13:36:19 +0000480static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000481_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
482{
483 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
484 (__v16si) __B,
485 (__v16si) __W,
486 (__mmask16) __U);
487}
488
Michael Kupersteine45af542015-06-30 13:36:19 +0000489static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000490_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
491{
492 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
493 (__v16si) __B,
494 (__v16si)
495 _mm512_setzero_si512 (),
496 (__mmask16) __U);
497}
498
Michael Kupersteine45af542015-06-30 13:36:19 +0000499static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000500_mm512_sub_epi32 (__m512i __A, __m512i __B)
501{
502 return (__m512i) ((__v16si) __A - (__v16si) __B);
503}
504
Michael Kupersteine45af542015-06-30 13:36:19 +0000505static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000506_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
507{
508 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
509 (__v16si) __B,
510 (__v16si) __W,
511 (__mmask16) __U);
512}
513
Michael Kupersteine45af542015-06-30 13:36:19 +0000514static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000515_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
516{
517 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
518 (__v16si) __B,
519 (__v16si)
520 _mm512_setzero_si512 (),
521 (__mmask16) __U);
522}
523
Michael Kupersteine45af542015-06-30 13:36:19 +0000524static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000525_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000526{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000527 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
528 (__v8df) __B,
529 (__v8df)
530 _mm512_setzero_pd (),
531 (__mmask8) -1,
532 _MM_FROUND_CUR_DIRECTION);
533}
534
Michael Kupersteine45af542015-06-30 13:36:19 +0000535static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000536_mm512_max_ps(__m512 __A, __m512 __B)
537{
538 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
539 (__v16sf) __B,
540 (__v16sf)
541 _mm512_setzero_ps (),
542 (__mmask16) -1,
543 _MM_FROUND_CUR_DIRECTION);
544}
545
546static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000547__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000548_mm512_max_epi32(__m512i __A, __m512i __B)
549{
550 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
551 (__v16si) __B,
552 (__v16si)
553 _mm512_setzero_si512 (),
554 (__mmask16) -1);
555}
556
Michael Kupersteine45af542015-06-30 13:36:19 +0000557static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000558_mm512_max_epu32(__m512i __A, __m512i __B)
559{
560 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
561 (__v16si) __B,
562 (__v16si)
563 _mm512_setzero_si512 (),
564 (__mmask16) -1);
565}
566
Michael Kupersteine45af542015-06-30 13:36:19 +0000567static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000568_mm512_max_epi64(__m512i __A, __m512i __B)
569{
570 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
571 (__v8di) __B,
572 (__v8di)
573 _mm512_setzero_si512 (),
574 (__mmask8) -1);
575}
576
Michael Kupersteine45af542015-06-30 13:36:19 +0000577static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000578_mm512_max_epu64(__m512i __A, __m512i __B)
579{
580 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
581 (__v8di) __B,
582 (__v8di)
583 _mm512_setzero_si512 (),
584 (__mmask8) -1);
585}
586
Michael Kupersteine45af542015-06-30 13:36:19 +0000587static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000588_mm512_min_pd(__m512d __A, __m512d __B)
589{
590 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
591 (__v8df) __B,
592 (__v8df)
593 _mm512_setzero_pd (),
594 (__mmask8) -1,
595 _MM_FROUND_CUR_DIRECTION);
596}
597
Michael Kupersteine45af542015-06-30 13:36:19 +0000598static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000599_mm512_min_ps(__m512 __A, __m512 __B)
600{
601 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
602 (__v16sf) __B,
603 (__v16sf)
604 _mm512_setzero_ps (),
605 (__mmask16) -1,
606 _MM_FROUND_CUR_DIRECTION);
607}
608
609static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000610__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000611_mm512_min_epi32(__m512i __A, __m512i __B)
612{
613 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
614 (__v16si) __B,
615 (__v16si)
616 _mm512_setzero_si512 (),
617 (__mmask16) -1);
618}
619
Michael Kupersteine45af542015-06-30 13:36:19 +0000620static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000621_mm512_min_epu32(__m512i __A, __m512i __B)
622{
623 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
624 (__v16si) __B,
625 (__v16si)
626 _mm512_setzero_si512 (),
627 (__mmask16) -1);
628}
629
Michael Kupersteine45af542015-06-30 13:36:19 +0000630static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000631_mm512_min_epi64(__m512i __A, __m512i __B)
632{
633 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
634 (__v8di) __B,
635 (__v8di)
636 _mm512_setzero_si512 (),
637 (__mmask8) -1);
638}
639
Michael Kupersteine45af542015-06-30 13:36:19 +0000640static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000641_mm512_min_epu64(__m512i __A, __m512i __B)
642{
643 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
644 (__v8di) __B,
645 (__v8di)
646 _mm512_setzero_si512 (),
647 (__mmask8) -1);
648}
649
Michael Kupersteine45af542015-06-30 13:36:19 +0000650static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000651_mm512_mul_epi32(__m512i __X, __m512i __Y)
652{
653 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
654 (__v16si) __Y,
655 (__v8di)
656 _mm512_setzero_si512 (),
657 (__mmask8) -1);
658}
659
Michael Kupersteine45af542015-06-30 13:36:19 +0000660static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000661_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
662{
663 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
664 (__v16si) __Y,
665 (__v8di) __W, __M);
666}
667
Michael Kupersteine45af542015-06-30 13:36:19 +0000668static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000669_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
670{
671 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
672 (__v16si) __Y,
673 (__v8di)
674 _mm512_setzero_si512 (),
675 __M);
676}
677
Michael Kupersteine45af542015-06-30 13:36:19 +0000678static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000679_mm512_mul_epu32(__m512i __X, __m512i __Y)
680{
681 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
682 (__v16si) __Y,
683 (__v8di)
684 _mm512_setzero_si512 (),
685 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000686}
687
Michael Kupersteine45af542015-06-30 13:36:19 +0000688static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000689_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
690{
691 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
692 (__v16si) __Y,
693 (__v8di) __W, __M);
694}
695
Michael Kupersteine45af542015-06-30 13:36:19 +0000696static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000697_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
698{
699 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
700 (__v16si) __Y,
701 (__v8di)
702 _mm512_setzero_si512 (),
703 __M);
704}
705
Michael Kupersteine45af542015-06-30 13:36:19 +0000706static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000707_mm512_mullo_epi32 (__m512i __A, __m512i __B)
708{
709 return (__m512i) ((__v16si) __A * (__v16si) __B);
710}
711
Michael Kupersteine45af542015-06-30 13:36:19 +0000712static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000713_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
714{
715 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
716 (__v16si) __B,
717 (__v16si)
718 _mm512_setzero_si512 (),
719 __M);
720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000723_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
724{
725 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
726 (__v16si) __B,
727 (__v16si) __W, __M);
728}
729
Michael Kupersteine45af542015-06-30 13:36:19 +0000730static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000731_mm512_sqrt_pd(__m512d a)
732{
733 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
734 (__v8df) _mm512_setzero_pd (),
735 (__mmask8) -1,
736 _MM_FROUND_CUR_DIRECTION);
737}
738
Michael Kupersteine45af542015-06-30 13:36:19 +0000739static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000740_mm512_sqrt_ps(__m512 a)
741{
742 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
743 (__v16sf) _mm512_setzero_ps (),
744 (__mmask16) -1,
745 _MM_FROUND_CUR_DIRECTION);
746}
747
Michael Kupersteine45af542015-06-30 13:36:19 +0000748static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000749_mm512_rsqrt14_pd(__m512d __A)
750{
751 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
752 (__v8df)
753 _mm512_setzero_pd (),
754 (__mmask8) -1);}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000757_mm512_rsqrt14_ps(__m512 __A)
758{
759 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
760 (__v16sf)
761 _mm512_setzero_ps (),
762 (__mmask16) -1);
763}
764
Michael Kupersteine45af542015-06-30 13:36:19 +0000765static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000766_mm_rsqrt14_ss(__m128 __A, __m128 __B)
767{
768 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
769 (__v4sf) __B,
770 (__v4sf)
771 _mm_setzero_ps (),
772 (__mmask8) -1);
773}
774
Michael Kupersteine45af542015-06-30 13:36:19 +0000775static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000776_mm_rsqrt14_sd(__m128d __A, __m128d __B)
777{
778 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
779 (__v2df) __B,
780 (__v2df)
781 _mm_setzero_pd (),
782 (__mmask8) -1);
783}
784
Michael Kupersteine45af542015-06-30 13:36:19 +0000785static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000786_mm512_rcp14_pd(__m512d __A)
787{
788 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
789 (__v8df)
790 _mm512_setzero_pd (),
791 (__mmask8) -1);
792}
793
Michael Kupersteine45af542015-06-30 13:36:19 +0000794static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000795_mm512_rcp14_ps(__m512 __A)
796{
797 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
798 (__v16sf)
799 _mm512_setzero_ps (),
800 (__mmask16) -1);
801}
Michael Kupersteine45af542015-06-30 13:36:19 +0000802static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000803_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000804{
805 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
806 (__v4sf) __B,
807 (__v4sf)
808 _mm_setzero_ps (),
809 (__mmask8) -1);
810}
811
Michael Kupersteine45af542015-06-30 13:36:19 +0000812static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000813_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000814{
815 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
816 (__v2df) __B,
817 (__v2df)
818 _mm_setzero_pd (),
819 (__mmask8) -1);
820}
821
Michael Kupersteine45af542015-06-30 13:36:19 +0000822static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000823_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000824{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000825 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
826 _MM_FROUND_FLOOR,
827 (__v16sf) __A, -1,
828 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000829}
830
Michael Kupersteine45af542015-06-30 13:36:19 +0000831static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000832_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000833{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000834 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
835 _MM_FROUND_FLOOR,
836 (__v8df) __A, -1,
837 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000838}
839
Michael Kupersteine45af542015-06-30 13:36:19 +0000840static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000841_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000842{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000843 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
844 _MM_FROUND_CEIL,
845 (__v16sf) __A, -1,
846 _MM_FROUND_CUR_DIRECTION);
847}
848
Michael Kupersteine45af542015-06-30 13:36:19 +0000849static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000850_mm512_ceil_pd(__m512d __A)
851{
852 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
853 _MM_FROUND_CEIL,
854 (__v8df) __A, -1,
855 _MM_FROUND_CUR_DIRECTION);
856}
857
Michael Kupersteine45af542015-06-30 13:36:19 +0000858static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000859_mm512_abs_epi64(__m512i __A)
860{
861 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
862 (__v8di)
863 _mm512_setzero_si512 (),
864 (__mmask8) -1);
865}
866
Michael Kupersteine45af542015-06-30 13:36:19 +0000867static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000868_mm512_abs_epi32(__m512i __A)
869{
870 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
871 (__v16si)
872 _mm512_setzero_si512 (),
873 (__mmask16) -1);
874}
875
Asaf Badouhffeb6242015-07-21 15:27:28 +0000876static __inline__ __m512d __DEFAULT_FN_ATTRS
877_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
878 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
879 (__v8df) __B,
880 (__v8df) __W,
881 (__mmask8) __U,
882 _MM_FROUND_CUR_DIRECTION);
883}
884
885static __inline__ __m512d __DEFAULT_FN_ATTRS
886_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
887 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
888 (__v8df) __B,
889 (__v8df) _mm512_setzero_pd (),
890 (__mmask8) __U,
891 _MM_FROUND_CUR_DIRECTION);
892}
893
894static __inline__ __m512 __DEFAULT_FN_ATTRS
895_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
896 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
897 (__v16sf) __B,
898 (__v16sf) __W,
899 (__mmask16) __U,
900 _MM_FROUND_CUR_DIRECTION);
901}
902
903static __inline__ __m512 __DEFAULT_FN_ATTRS
904_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
905 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
906 (__v16sf) __B,
907 (__v16sf) _mm512_setzero_ps (),
908 (__mmask16) __U,
909 _MM_FROUND_CUR_DIRECTION);
910}
911
912#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
913 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
914 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
915
916#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
917 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
918 (__v8df) __W, (__mmask8) __U, __R); })
919
920#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
921 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
922 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
923
924#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
925 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
926 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
927
928#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
929 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
930 (__v16sf) __W, (__mmask16)__U, __R); })
931
932#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
933 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
934 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
935
936static __inline__ __m512d __DEFAULT_FN_ATTRS
937_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
938 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
939 (__v8df) __B,
940 (__v8df) __W,
941 (__mmask8) __U,
942 _MM_FROUND_CUR_DIRECTION);
943}
944
945static __inline__ __m512d __DEFAULT_FN_ATTRS
946_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
947 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
948 (__v8df) __B,
949 (__v8df)
950 _mm512_setzero_pd (),
951 (__mmask8) __U,
952 _MM_FROUND_CUR_DIRECTION);
953}
954
955static __inline__ __m512 __DEFAULT_FN_ATTRS
956_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
957 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
958 (__v16sf) __B,
959 (__v16sf) __W,
960 (__mmask16) __U,
961 _MM_FROUND_CUR_DIRECTION);
962}
963
964static __inline__ __m512 __DEFAULT_FN_ATTRS
965_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
966 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
967 (__v16sf) __B,
968 (__v16sf)
969 _mm512_setzero_ps (),
970 (__mmask16) __U,
971 _MM_FROUND_CUR_DIRECTION);
972}
973
974#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
975 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
976 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
977
978#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
979 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
980 (__v8df) __W, (__mmask8) __U, __R); })
981
982#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
983 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
984 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
985
986#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
987 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
988 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
989
990#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
991 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
992 (__v16sf) __W, (__mmask16) __U, __R); });
993
994#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
995 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
996 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
997
998static __inline__ __m512d __DEFAULT_FN_ATTRS
999_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1000 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1001 (__v8df) __B,
1002 (__v8df) __W,
1003 (__mmask8) __U,
1004 _MM_FROUND_CUR_DIRECTION);
1005}
1006
1007static __inline__ __m512d __DEFAULT_FN_ATTRS
1008_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1009 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1010 (__v8df) __B,
1011 (__v8df)
1012 _mm512_setzero_pd (),
1013 (__mmask8) __U,
1014 _MM_FROUND_CUR_DIRECTION);
1015}
1016
1017static __inline__ __m512 __DEFAULT_FN_ATTRS
1018_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1019 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1020 (__v16sf) __B,
1021 (__v16sf) __W,
1022 (__mmask16) __U,
1023 _MM_FROUND_CUR_DIRECTION);
1024}
1025
1026static __inline__ __m512 __DEFAULT_FN_ATTRS
1027_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1028 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1029 (__v16sf) __B,
1030 (__v16sf)
1031 _mm512_setzero_ps (),
1032 (__mmask16) __U,
1033 _MM_FROUND_CUR_DIRECTION);
1034}
1035
1036#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1037 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1038 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1039
1040#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1041 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1042 (__v8df) __W, (__mmask8) __U, __R); })
1043
1044#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1045 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1046 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1047
1048#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1049 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1050 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1051
1052#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1053 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1054 (__v16sf) __W, (__mmask16) __U, __R); });
1055
1056#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1057 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1058 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1059
1060static __inline__ __m512d __DEFAULT_FN_ATTRS
1061_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1062 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1063 (__v8df) __B,
1064 (__v8df) __W,
1065 (__mmask8) __U,
1066 _MM_FROUND_CUR_DIRECTION);
1067}
1068
1069static __inline__ __m512d __DEFAULT_FN_ATTRS
1070_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1071 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1072 (__v8df) __B,
1073 (__v8df)
1074 _mm512_setzero_pd (),
1075 (__mmask8) __U,
1076 _MM_FROUND_CUR_DIRECTION);
1077}
1078
1079static __inline__ __m512 __DEFAULT_FN_ATTRS
1080_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1081 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1082 (__v16sf) __B,
1083 (__v16sf) __W,
1084 (__mmask16) __U,
1085 _MM_FROUND_CUR_DIRECTION);
1086}
1087
1088static __inline__ __m512 __DEFAULT_FN_ATTRS
1089_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1090 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1091 (__v16sf) __B,
1092 (__v16sf)
1093 _mm512_setzero_ps (),
1094 (__mmask16) __U,
1095 _MM_FROUND_CUR_DIRECTION);
1096}
1097
1098#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1099 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1100 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1101
1102#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1103 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1104 (__v8df) __W, (__mmask8) __U, __R); })
1105
1106#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1107 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1108 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1109
1110#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1111 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1112 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1113
1114#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1115 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1116 (__v16sf) __W, (__mmask16) __U, __R); });
1117
1118#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
1119 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1120 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1121
Craig Topper72c7d512015-02-01 07:35:35 +00001122#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1123 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1124 -1, _MM_FROUND_CUR_DIRECTION); })
1125
1126#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1127 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1128 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001129
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001130#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1131 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1132 (__v8df) (B), (__v8df) (C), \
1133 (__mmask8) -1, (R)); })
1134
1135
1136#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1137 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1138 (__v8df) (B), (__v8df) (C), \
1139 (__mmask8) (U), (R)); })
1140
1141
1142#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1143 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1144 (__v8df) (B), (__v8df) (C), \
1145 (__mmask8) (U), (R)); })
1146
1147
1148#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1149 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1150 (__v8df) (B), (__v8df) (C), \
1151 (__mmask8) (U), (R)); })
1152
1153
1154#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1155 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1156 (__v8df) (B), -(__v8df) (C), \
1157 (__mmask8) -1, (R)); })
1158
1159
1160#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1161 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1162 (__v8df) (B), -(__v8df) (C), \
1163 (__mmask8) (U), (R)); })
1164
1165
1166#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1167 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1168 (__v8df) (B), -(__v8df) (C), \
1169 (__mmask8) (U), (R)); })
1170
1171
1172#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1173 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1174 (__v8df) (B), (__v8df) (C), \
1175 (__mmask8) -1, (R)); })
1176
1177
1178#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1179 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1180 (__v8df) (B), (__v8df) (C), \
1181 (__mmask8) (U), (R)); })
1182
1183
1184#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1185 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1186 (__v8df) (B), (__v8df) (C), \
1187 (__mmask8) (U), (R)); })
1188
1189
1190#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1191 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1192 (__v8df) (B), -(__v8df) (C), \
1193 (__mmask8) -1, (R)); })
1194
1195
1196#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1197 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1198 (__v8df) (B), -(__v8df) (C), \
1199 (__mmask8) (U), (R)); })
1200
1201
Michael Kupersteine45af542015-06-30 13:36:19 +00001202static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001203_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1204{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001205 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1206 (__v8df) __B,
1207 (__v8df) __C,
1208 (__mmask8) -1,
1209 _MM_FROUND_CUR_DIRECTION);
1210}
1211
Michael Kupersteine45af542015-06-30 13:36:19 +00001212static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001213_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1214{
1215 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1216 (__v8df) __B,
1217 (__v8df) __C,
1218 (__mmask8) __U,
1219 _MM_FROUND_CUR_DIRECTION);
1220}
1221
Michael Kupersteine45af542015-06-30 13:36:19 +00001222static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001223_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1224{
1225 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
1226 (__v8df) __B,
1227 (__v8df) __C,
1228 (__mmask8) __U,
1229 _MM_FROUND_CUR_DIRECTION);
1230}
1231
Michael Kupersteine45af542015-06-30 13:36:19 +00001232static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001233_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1234{
1235 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1236 (__v8df) __B,
1237 (__v8df) __C,
1238 (__mmask8) __U,
1239 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001240}
1241
Michael Kupersteine45af542015-06-30 13:36:19 +00001242static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001243_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1244{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001245 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1246 (__v8df) __B,
1247 -(__v8df) __C,
1248 (__mmask8) -1,
1249 _MM_FROUND_CUR_DIRECTION);
1250}
1251
Michael Kupersteine45af542015-06-30 13:36:19 +00001252static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001253_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1254{
1255 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1256 (__v8df) __B,
1257 -(__v8df) __C,
1258 (__mmask8) __U,
1259 _MM_FROUND_CUR_DIRECTION);
1260}
1261
Michael Kupersteine45af542015-06-30 13:36:19 +00001262static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001263_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1264{
1265 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1266 (__v8df) __B,
1267 -(__v8df) __C,
1268 (__mmask8) __U,
1269 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001270}
1271
Michael Kupersteine45af542015-06-30 13:36:19 +00001272static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001273_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1274{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001275 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1276 (__v8df) __B,
1277 (__v8df) __C,
1278 (__mmask8) -1,
1279 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001280}
1281
Michael Kupersteine45af542015-06-30 13:36:19 +00001282static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001283_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1284{
1285 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1286 (__v8df) __B,
1287 (__v8df) __C,
1288 (__mmask8) __U,
1289 _MM_FROUND_CUR_DIRECTION);
1290}
1291
Michael Kupersteine45af542015-06-30 13:36:19 +00001292static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001293_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1294{
1295 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1296 (__v8df) __B,
1297 (__v8df) __C,
1298 (__mmask8) __U,
1299 _MM_FROUND_CUR_DIRECTION);
1300}
1301
Michael Kupersteine45af542015-06-30 13:36:19 +00001302static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001303_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1304{
1305 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1306 (__v8df) __B,
1307 -(__v8df) __C,
1308 (__mmask8) -1,
1309 _MM_FROUND_CUR_DIRECTION);
1310}
1311
Michael Kupersteine45af542015-06-30 13:36:19 +00001312static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001313_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1314{
1315 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1316 (__v8df) __B,
1317 -(__v8df) __C,
1318 (__mmask8) __U,
1319 _MM_FROUND_CUR_DIRECTION);
1320}
1321
1322#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1323 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1324 (__v16sf) (B), (__v16sf) (C), \
1325 (__mmask16) -1, (R)); })
1326
1327
1328#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1329 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1330 (__v16sf) (B), (__v16sf) (C), \
1331 (__mmask16) (U), (R)); })
1332
1333
1334#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1335 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1336 (__v16sf) (B), (__v16sf) (C), \
1337 (__mmask16) (U), (R)); })
1338
1339
1340#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1341 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1342 (__v16sf) (B), (__v16sf) (C), \
1343 (__mmask16) (U), (R)); })
1344
1345
1346#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1347 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1348 (__v16sf) (B), -(__v16sf) (C), \
1349 (__mmask16) -1, (R)); })
1350
1351
1352#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1353 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1354 (__v16sf) (B), -(__v16sf) (C), \
1355 (__mmask16) (U), (R)); })
1356
1357
1358#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1359 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1360 (__v16sf) (B), -(__v16sf) (C), \
1361 (__mmask16) (U), (R)); })
1362
1363
1364#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1365 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1366 (__v16sf) (B), (__v16sf) (C), \
1367 (__mmask16) -1, (R)); })
1368
1369
1370#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1371 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1372 (__v16sf) (B), (__v16sf) (C), \
1373 (__mmask16) (U), (R)); })
1374
1375
1376#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1377 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1378 (__v16sf) (B), (__v16sf) (C), \
1379 (__mmask16) (U), (R)); })
1380
1381
1382#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1383 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1384 (__v16sf) (B), -(__v16sf) (C), \
1385 (__mmask16) -1, (R)); })
1386
1387
1388#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1389 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1390 (__v16sf) (B), -(__v16sf) (C), \
1391 (__mmask16) (U), (R)); })
1392
1393
Michael Kupersteine45af542015-06-30 13:36:19 +00001394static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001395_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1396{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001397 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1398 (__v16sf) __B,
1399 (__v16sf) __C,
1400 (__mmask16) -1,
1401 _MM_FROUND_CUR_DIRECTION);
1402}
1403
Michael Kupersteine45af542015-06-30 13:36:19 +00001404static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001405_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1406{
1407 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1408 (__v16sf) __B,
1409 (__v16sf) __C,
1410 (__mmask16) __U,
1411 _MM_FROUND_CUR_DIRECTION);
1412}
1413
Michael Kupersteine45af542015-06-30 13:36:19 +00001414static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001415_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1416{
1417 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1418 (__v16sf) __B,
1419 (__v16sf) __C,
1420 (__mmask16) __U,
1421 _MM_FROUND_CUR_DIRECTION);
1422}
1423
Michael Kupersteine45af542015-06-30 13:36:19 +00001424static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001425_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1426{
1427 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1428 (__v16sf) __B,
1429 (__v16sf) __C,
1430 (__mmask16) __U,
1431 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001432}
1433
Michael Kupersteine45af542015-06-30 13:36:19 +00001434static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001435_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1436{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001437 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1438 (__v16sf) __B,
1439 -(__v16sf) __C,
1440 (__mmask16) -1,
1441 _MM_FROUND_CUR_DIRECTION);
1442}
1443
Michael Kupersteine45af542015-06-30 13:36:19 +00001444static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001445_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1446{
1447 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1448 (__v16sf) __B,
1449 -(__v16sf) __C,
1450 (__mmask16) __U,
1451 _MM_FROUND_CUR_DIRECTION);
1452}
1453
Michael Kupersteine45af542015-06-30 13:36:19 +00001454static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001455_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1456{
1457 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1458 (__v16sf) __B,
1459 -(__v16sf) __C,
1460 (__mmask16) __U,
1461 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001462}
1463
Michael Kupersteine45af542015-06-30 13:36:19 +00001464static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001465_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1466{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001467 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1468 (__v16sf) __B,
1469 (__v16sf) __C,
1470 (__mmask16) -1,
1471 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001472}
1473
Michael Kupersteine45af542015-06-30 13:36:19 +00001474static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001475_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1476{
1477 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
1478 (__v16sf) __B,
1479 (__v16sf) __C,
1480 (__mmask16) __U,
1481 _MM_FROUND_CUR_DIRECTION);
1482}
1483
Michael Kupersteine45af542015-06-30 13:36:19 +00001484static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001485_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1486{
1487 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1488 (__v16sf) __B,
1489 (__v16sf) __C,
1490 (__mmask16) __U,
1491 _MM_FROUND_CUR_DIRECTION);
1492}
1493
Michael Kupersteine45af542015-06-30 13:36:19 +00001494static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001495_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1496{
1497 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1498 (__v16sf) __B,
1499 -(__v16sf) __C,
1500 (__mmask16) -1,
1501 _MM_FROUND_CUR_DIRECTION);
1502}
1503
Michael Kupersteine45af542015-06-30 13:36:19 +00001504static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001505_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1506{
1507 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1508 (__v16sf) __B,
1509 -(__v16sf) __C,
1510 (__mmask16) __U,
1511 _MM_FROUND_CUR_DIRECTION);
1512}
1513
1514#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
1515 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1516 (__v8df) (B), (__v8df) (C), \
1517 (__mmask8) -1, (R)); })
1518
1519
1520#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
1521 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1522 (__v8df) (B), (__v8df) (C), \
1523 (__mmask8) (U), (R)); })
1524
1525
1526#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
1527 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
1528 (__v8df) (B), (__v8df) (C), \
1529 (__mmask8) (U), (R)); })
1530
1531
1532#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
1533 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1534 (__v8df) (B), (__v8df) (C), \
1535 (__mmask8) (U), (R)); })
1536
1537
1538#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
1539 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1540 (__v8df) (B), -(__v8df) (C), \
1541 (__mmask8) -1, (R)); })
1542
1543
1544#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
1545 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1546 (__v8df) (B), -(__v8df) (C), \
1547 (__mmask8) (U), (R)); })
1548
1549
1550#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
1551 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1552 (__v8df) (B), -(__v8df) (C), \
1553 (__mmask8) (U), (R)); })
1554
1555
Michael Kupersteine45af542015-06-30 13:36:19 +00001556static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001557_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
1558{
1559 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1560 (__v8df) __B,
1561 (__v8df) __C,
1562 (__mmask8) -1,
1563 _MM_FROUND_CUR_DIRECTION);
1564}
1565
Michael Kupersteine45af542015-06-30 13:36:19 +00001566static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001567_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1568{
1569 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1570 (__v8df) __B,
1571 (__v8df) __C,
1572 (__mmask8) __U,
1573 _MM_FROUND_CUR_DIRECTION);
1574}
1575
Michael Kupersteine45af542015-06-30 13:36:19 +00001576static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001577_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1578{
1579 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
1580 (__v8df) __B,
1581 (__v8df) __C,
1582 (__mmask8) __U,
1583 _MM_FROUND_CUR_DIRECTION);
1584}
1585
Michael Kupersteine45af542015-06-30 13:36:19 +00001586static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001587_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1588{
1589 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1590 (__v8df) __B,
1591 (__v8df) __C,
1592 (__mmask8) __U,
1593 _MM_FROUND_CUR_DIRECTION);
1594}
1595
Michael Kupersteine45af542015-06-30 13:36:19 +00001596static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001597_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
1598{
1599 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1600 (__v8df) __B,
1601 -(__v8df) __C,
1602 (__mmask8) -1,
1603 _MM_FROUND_CUR_DIRECTION);
1604}
1605
Michael Kupersteine45af542015-06-30 13:36:19 +00001606static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001607_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1608{
1609 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1610 (__v8df) __B,
1611 -(__v8df) __C,
1612 (__mmask8) __U,
1613 _MM_FROUND_CUR_DIRECTION);
1614}
1615
Michael Kupersteine45af542015-06-30 13:36:19 +00001616static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001617_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1618{
1619 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1620 (__v8df) __B,
1621 -(__v8df) __C,
1622 (__mmask8) __U,
1623 _MM_FROUND_CUR_DIRECTION);
1624}
1625
1626#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
1627 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1628 (__v16sf) (B), (__v16sf) (C), \
1629 (__mmask16) -1, (R)); })
1630
1631
1632#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
1633 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1634 (__v16sf) (B), (__v16sf) (C), \
1635 (__mmask16) (U), (R)); })
1636
1637
1638#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
1639 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
1640 (__v16sf) (B), (__v16sf) (C), \
1641 (__mmask16) (U), (R)); })
1642
1643
1644#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
1645 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
1646 (__v16sf) (B), (__v16sf) (C), \
1647 (__mmask16) (U), (R)); })
1648
1649
1650#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
1651 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1652 (__v16sf) (B), -(__v16sf) (C), \
1653 (__mmask16) -1, (R)); })
1654
1655
1656#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
1657 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1658 (__v16sf) (B), -(__v16sf) (C), \
1659 (__mmask16) (U), (R)); })
1660
1661
1662#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
1663 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
1664 (__v16sf) (B), -(__v16sf) (C), \
1665 (__mmask16) (U), (R)); })
1666
1667
Michael Kupersteine45af542015-06-30 13:36:19 +00001668static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001669_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
1670{
1671 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1672 (__v16sf) __B,
1673 (__v16sf) __C,
1674 (__mmask16) -1,
1675 _MM_FROUND_CUR_DIRECTION);
1676}
1677
Michael Kupersteine45af542015-06-30 13:36:19 +00001678static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001679_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1680{
1681 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1682 (__v16sf) __B,
1683 (__v16sf) __C,
1684 (__mmask16) __U,
1685 _MM_FROUND_CUR_DIRECTION);
1686}
1687
Michael Kupersteine45af542015-06-30 13:36:19 +00001688static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001689_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1690{
1691 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
1692 (__v16sf) __B,
1693 (__v16sf) __C,
1694 (__mmask16) __U,
1695 _MM_FROUND_CUR_DIRECTION);
1696}
1697
Michael Kupersteine45af542015-06-30 13:36:19 +00001698static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001699_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1700{
1701 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
1702 (__v16sf) __B,
1703 (__v16sf) __C,
1704 (__mmask16) __U,
1705 _MM_FROUND_CUR_DIRECTION);
1706}
1707
Michael Kupersteine45af542015-06-30 13:36:19 +00001708static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001709_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
1710{
1711 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1712 (__v16sf) __B,
1713 -(__v16sf) __C,
1714 (__mmask16) -1,
1715 _MM_FROUND_CUR_DIRECTION);
1716}
1717
Michael Kupersteine45af542015-06-30 13:36:19 +00001718static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001719_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1720{
1721 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1722 (__v16sf) __B,
1723 -(__v16sf) __C,
1724 (__mmask16) __U,
1725 _MM_FROUND_CUR_DIRECTION);
1726}
1727
Michael Kupersteine45af542015-06-30 13:36:19 +00001728static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001729_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1730{
1731 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
1732 (__v16sf) __B,
1733 -(__v16sf) __C,
1734 (__mmask16) __U,
1735 _MM_FROUND_CUR_DIRECTION);
1736}
1737
1738#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
1739 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
1740 (__v8df) (B), (__v8df) (C), \
1741 (__mmask8) (U), (R)); })
1742
1743
Michael Kupersteine45af542015-06-30 13:36:19 +00001744static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001745_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1746{
1747 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
1748 (__v8df) __B,
1749 (__v8df) __C,
1750 (__mmask8) __U,
1751 _MM_FROUND_CUR_DIRECTION);
1752}
1753
1754#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
1755 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
1756 (__v16sf) (B), (__v16sf) (C), \
1757 (__mmask16) (U), (R)); })
1758
1759
Michael Kupersteine45af542015-06-30 13:36:19 +00001760static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001761_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1762{
1763 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
1764 (__v16sf) __B,
1765 (__v16sf) __C,
1766 (__mmask16) __U,
1767 _MM_FROUND_CUR_DIRECTION);
1768}
1769
1770#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
1771 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
1772 (__v8df) (B), (__v8df) (C), \
1773 (__mmask8) (U), (R)); })
1774
1775
Michael Kupersteine45af542015-06-30 13:36:19 +00001776static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001777_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1778{
1779 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
1780 (__v8df) __B,
1781 (__v8df) __C,
1782 (__mmask8) __U,
1783 _MM_FROUND_CUR_DIRECTION);
1784}
1785
1786#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
1787 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
1788 (__v16sf) (B), (__v16sf) (C), \
1789 (__mmask16) (U), (R)); })
1790
1791
Michael Kupersteine45af542015-06-30 13:36:19 +00001792static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001793_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1794{
1795 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
1796 (__v16sf) __B,
1797 (__v16sf) __C,
1798 (__mmask16) __U,
1799 _MM_FROUND_CUR_DIRECTION);
1800}
1801
1802#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1803 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
1804 (__v8df) (B), (__v8df) (C), \
1805 (__mmask8) (U), (R)); })
1806
1807
Michael Kupersteine45af542015-06-30 13:36:19 +00001808static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001809_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1810{
1811 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
1812 (__v8df) __B,
1813 (__v8df) __C,
1814 (__mmask8) __U,
1815 _MM_FROUND_CUR_DIRECTION);
1816}
1817
1818#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1819 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
1820 (__v16sf) (B), (__v16sf) (C), \
1821 (__mmask16) (U), (R)); })
1822
1823
Michael Kupersteine45af542015-06-30 13:36:19 +00001824static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001825_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1826{
1827 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
1828 (__v16sf) __B,
1829 (__v16sf) __C,
1830 (__mmask16) __U,
1831 _MM_FROUND_CUR_DIRECTION);
1832}
1833
1834#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1835 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
1836 (__v8df) (B), (__v8df) (C), \
1837 (__mmask8) (U), (R)); })
1838
1839
1840#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
1841 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
1842 (__v8df) (B), (__v8df) (C), \
1843 (__mmask8) (U), (R)); })
1844
1845
Michael Kupersteine45af542015-06-30 13:36:19 +00001846static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001847_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1848{
1849 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
1850 (__v8df) __B,
1851 (__v8df) __C,
1852 (__mmask8) __U,
1853 _MM_FROUND_CUR_DIRECTION);
1854}
1855
Michael Kupersteine45af542015-06-30 13:36:19 +00001856static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001857_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1858{
1859 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
1860 (__v8df) __B,
1861 (__v8df) __C,
1862 (__mmask8) __U,
1863 _MM_FROUND_CUR_DIRECTION);
1864}
1865
1866#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1867 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
1868 (__v16sf) (B), (__v16sf) (C), \
1869 (__mmask16) (U), (R)); })
1870
1871
1872#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
1873 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
1874 (__v16sf) (B), (__v16sf) (C), \
1875 (__mmask16) (U), (R)); })
1876
1877
Michael Kupersteine45af542015-06-30 13:36:19 +00001878static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001879_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1880{
1881 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
1882 (__v16sf) __B,
1883 (__v16sf) __C,
1884 (__mmask16) __U,
1885 _MM_FROUND_CUR_DIRECTION);
1886}
1887
Michael Kupersteine45af542015-06-30 13:36:19 +00001888static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001889_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1890{
1891 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
1892 (__v16sf) __B,
1893 (__v16sf) __C,
1894 (__mmask16) __U,
1895 _MM_FROUND_CUR_DIRECTION);
1896}
1897
1898
1899
Adam Nemet0d5bb552014-07-28 17:14:40 +00001900/* Vector permutations */
1901
Michael Kupersteine45af542015-06-30 13:36:19 +00001902static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001903_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
1904{
1905 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
1906 /* idx */ ,
1907 (__v16si) __A,
1908 (__v16si) __B,
1909 (__mmask16) -1);
1910}
Michael Kupersteine45af542015-06-30 13:36:19 +00001911static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001912_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
1913{
1914 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
1915 /* idx */ ,
1916 (__v8di) __A,
1917 (__v8di) __B,
1918 (__mmask8) -1);
1919}
1920
Michael Kupersteine45af542015-06-30 13:36:19 +00001921static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001922_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
1923{
1924 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
1925 /* idx */ ,
1926 (__v8df) __A,
1927 (__v8df) __B,
1928 (__mmask8) -1);
1929}
Michael Kupersteine45af542015-06-30 13:36:19 +00001930static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001931_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
1932{
1933 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
1934 /* idx */ ,
1935 (__v16sf) __A,
1936 (__v16sf) __B,
1937 (__mmask16) -1);
1938}
1939
Craig Topper67826a52015-02-01 07:35:40 +00001940#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
1941 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
1942 (__v8di)(__m512i)(B), \
1943 (I), (__v8di)_mm512_setzero_si512(), \
1944 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00001945
Craig Topper67826a52015-02-01 07:35:40 +00001946#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
1947 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
1948 (__v16si)(__m512i)(B), \
1949 (I), (__v16si)_mm512_setzero_si512(), \
1950 (__mmask16)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00001951
Adam Nemetf893ede2015-01-19 20:12:05 +00001952/* Vector Extract */
1953
1954#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
1955 __m512d __A = (A); \
1956 (__m256d) \
1957 __builtin_ia32_extractf64x4_mask((__v8df)__A, \
1958 (I), \
1959 (__v4df)_mm256_setzero_si256(), \
1960 (__mmask8) -1); })
1961
1962#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
1963 __m512 __A = (A); \
1964 (__m128) \
1965 __builtin_ia32_extractf32x4_mask((__v16sf)__A, \
1966 (I), \
1967 (__v4sf)_mm_setzero_ps(), \
1968 (__mmask8) -1); })
1969
Adam Nemet0d5bb552014-07-28 17:14:40 +00001970/* Vector Blend */
1971
Michael Kupersteine45af542015-06-30 13:36:19 +00001972static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001973_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
1974{
1975 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
1976 (__v8df) __W,
1977 (__mmask8) __U);
1978}
1979
Michael Kupersteine45af542015-06-30 13:36:19 +00001980static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001981_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
1982{
1983 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
1984 (__v16sf) __W,
1985 (__mmask16) __U);
1986}
1987
Michael Kupersteine45af542015-06-30 13:36:19 +00001988static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001989_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
1990{
1991 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
1992 (__v8di) __W,
1993 (__mmask8) __U);
1994}
1995
Michael Kupersteine45af542015-06-30 13:36:19 +00001996static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001997_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
1998{
1999 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2000 (__v16si) __W,
2001 (__mmask16) __U);
2002}
2003
2004/* Compare */
2005
Craig Topper53565c62015-02-01 22:27:40 +00002006#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2007 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2008 (__v16sf)(__m512)(B), \
2009 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002010
Craig Topper53565c62015-02-01 22:27:40 +00002011#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2012 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2013 (__v16sf)(__m512)(B), \
2014 (P), (__mmask16)(U), (R)); })
2015
2016#define _mm512_cmp_ps_mask(A, B, P) \
2017 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2018
2019#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2020 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2021
2022#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2023 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2024 (__v8df)(__m512d)(B), \
2025 (P), (__mmask8)-1, (R)); })
2026
2027#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2028 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2029 (__v8df)(__m512d)(B), \
2030 (P), (__mmask8)(U), (R)); })
2031
2032#define _mm512_cmp_pd_mask(A, B, P) \
2033 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2034
2035#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2036 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002037
2038/* Conversion */
2039
Michael Kupersteine45af542015-06-30 13:36:19 +00002040static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002041_mm512_cvttps_epu32(__m512 __A)
2042{
2043 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2044 (__v16si)
2045 _mm512_setzero_si512 (),
2046 (__mmask16) -1,
2047 _MM_FROUND_CUR_DIRECTION);
2048}
2049
Craig Topper72c7d512015-02-01 07:35:35 +00002050#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2051 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2052 (__v16sf)_mm512_setzero_ps(), \
2053 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002054
Craig Topper72c7d512015-02-01 07:35:35 +00002055#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2056 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2057 (__v16sf)_mm512_setzero_ps(), \
2058 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002059
Michael Kupersteine45af542015-06-30 13:36:19 +00002060static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002061_mm512_cvtepi32_pd(__m256i __A)
2062{
2063 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2064 (__v8df)
2065 _mm512_setzero_pd (),
2066 (__mmask8) -1);
2067}
2068
Michael Kupersteine45af542015-06-30 13:36:19 +00002069static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002070_mm512_cvtepu32_pd(__m256i __A)
2071{
2072 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2073 (__v8df)
2074 _mm512_setzero_pd (),
2075 (__mmask8) -1);
2076}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002077
Craig Topper72c7d512015-02-01 07:35:35 +00002078#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2079 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2080 (__v8sf)_mm256_setzero_ps(), \
2081 (__mmask8)-1, (R)); })
2082
2083#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2084 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2085 (__v16hi)_mm256_setzero_si256(), \
2086 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002087
Michael Kupersteine45af542015-06-30 13:36:19 +00002088static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002089_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002090{
2091 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2092 (__v16sf)
2093 _mm512_setzero_ps (),
2094 (__mmask16) -1,
2095 _MM_FROUND_CUR_DIRECTION);
2096}
2097
Michael Kupersteine45af542015-06-30 13:36:19 +00002098static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002099_mm512_cvttps_epi32(__m512 a)
2100{
2101 return (__m512i)
2102 __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
2103 (__v16si) _mm512_setzero_si512 (),
2104 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2105}
2106
Michael Kupersteine45af542015-06-30 13:36:19 +00002107static __inline __m256i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002108_mm512_cvttpd_epi32(__m512d a)
2109{
2110 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
2111 (__v8si)_mm256_setzero_si256(),
2112 (__mmask8) -1,
2113 _MM_FROUND_CUR_DIRECTION);
2114}
2115
Craig Topper72c7d512015-02-01 07:35:35 +00002116#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2117 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2118 (__v8si)_mm256_setzero_si256(), \
2119 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002120
Craig Topper72c7d512015-02-01 07:35:35 +00002121#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2122 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2123 (__v16si)_mm512_setzero_si512(), \
2124 (__mmask16)-1, (R)); })
2125
2126#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2127 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2128 (__v16si)_mm512_setzero_si512(), \
2129 (__mmask16)-1, (R)); })
2130
2131#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2132 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2133 (__v8si)_mm256_setzero_si256(), \
2134 (__mmask8)-1, (R)); })
2135
2136#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2137 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2138 (__v16si)_mm512_setzero_si512(), \
2139 (__mmask16)-1, (R)); })
2140
2141#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2142 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2143 (__v8si)_mm256_setzero_si256(), \
2144 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002145
Adam Nemet63a951e2015-01-14 01:31:17 +00002146/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00002147static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002148_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2149{
2150 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2151}
2152
Michael Kupersteine45af542015-06-30 13:36:19 +00002153static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002154_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2155{
2156 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2157}
2158
Michael Kupersteine45af542015-06-30 13:36:19 +00002159static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002160_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2161{
2162 return __builtin_shufflevector(__a, __b,
2163 2, 18, 3, 19,
2164 2+4, 18+4, 3+4, 19+4,
2165 2+8, 18+8, 3+8, 19+8,
2166 2+12, 18+12, 3+12, 19+12);
2167}
2168
Michael Kupersteine45af542015-06-30 13:36:19 +00002169static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002170_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2171{
2172 return __builtin_shufflevector(__a, __b,
2173 0, 16, 1, 17,
2174 0+4, 16+4, 1+4, 17+4,
2175 0+8, 16+8, 1+8, 17+8,
2176 0+12, 16+12, 1+12, 17+12);
2177}
2178
Adam Nemet0d5bb552014-07-28 17:14:40 +00002179/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002180
Michael Kupersteine45af542015-06-30 13:36:19 +00002181static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002182_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002183{
2184 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2185 (__v16si) __B,
2186 (__mmask16) -1);
2187}
2188
Michael Kupersteine45af542015-06-30 13:36:19 +00002189static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002190_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002191{
2192 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2193 (__v8di) __B,
2194 (__mmask8) -1);
2195}
2196
Adam Nemet0d5bb552014-07-28 17:14:40 +00002197/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002198
Michael Kupersteine45af542015-06-30 13:36:19 +00002199static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002200_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002201{
2202 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2203 (__v16si)
2204 _mm512_setzero_si512 (),
2205 (__mmask16) __U);
2206}
2207
Michael Kupersteine45af542015-06-30 13:36:19 +00002208static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002209_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002210{
2211 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2212 (__v8di)
2213 _mm512_setzero_si512 (),
2214 (__mmask8) __U);
2215}
2216
Michael Kupersteine45af542015-06-30 13:36:19 +00002217static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002218_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002219{
2220 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2221 (__v16sf)
2222 _mm512_setzero_ps (),
2223 (__mmask16) __U);
2224}
2225
Michael Kupersteine45af542015-06-30 13:36:19 +00002226static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002227_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002228{
2229 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2230 (__v8df)
2231 _mm512_setzero_pd (),
2232 (__mmask8) __U);
2233}
2234
Michael Kupersteine45af542015-06-30 13:36:19 +00002235static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002236_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2237{
2238 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2239 (__v16sf)
2240 _mm512_setzero_ps (),
2241 (__mmask16) __U);
2242}
2243
Michael Kupersteine45af542015-06-30 13:36:19 +00002244static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002245_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2246{
2247 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2248 (__v8df)
2249 _mm512_setzero_pd (),
2250 (__mmask8) __U);
2251}
2252
Michael Kupersteine45af542015-06-30 13:36:19 +00002253static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002254_mm512_loadu_pd(double const *__p)
2255{
2256 struct __loadu_pd {
2257 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002258 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002259 return ((struct __loadu_pd*)__p)->__v;
2260}
2261
Michael Kupersteine45af542015-06-30 13:36:19 +00002262static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002263_mm512_loadu_ps(float const *__p)
2264{
2265 struct __loadu_ps {
2266 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002267 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002268 return ((struct __loadu_ps*)__p)->__v;
2269}
2270
Michael Kupersteine45af542015-06-30 13:36:19 +00002271static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002272_mm512_load_ps(double const *__p)
2273{
2274 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2275 (__v16sf)
2276 _mm512_setzero_ps (),
2277 (__mmask16) -1);
2278}
2279
Michael Kupersteine45af542015-06-30 13:36:19 +00002280static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002281_mm512_load_pd(float const *__p)
2282{
2283 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2284 (__v8df)
2285 _mm512_setzero_pd (),
2286 (__mmask8) -1);
2287}
2288
Adam Nemet0d5bb552014-07-28 17:14:40 +00002289/* SIMD store ops */
2290
Michael Kupersteine45af542015-06-30 13:36:19 +00002291static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002292_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002293{
2294 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2295 (__mmask8) __U);
2296}
2297
Michael Kupersteine45af542015-06-30 13:36:19 +00002298static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002299_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002300{
2301 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2302 (__mmask16) __U);
2303}
2304
Michael Kupersteine45af542015-06-30 13:36:19 +00002305static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002306_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002307{
2308 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2309}
2310
Michael Kupersteine45af542015-06-30 13:36:19 +00002311static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002312_mm512_storeu_pd(void *__P, __m512d __A)
2313{
2314 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2315}
2316
Michael Kupersteine45af542015-06-30 13:36:19 +00002317static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002318_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002319{
2320 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2321 (__mmask16) __U);
2322}
2323
Michael Kupersteine45af542015-06-30 13:36:19 +00002324static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002325_mm512_storeu_ps(void *__P, __m512 __A)
2326{
2327 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2328}
2329
Michael Kupersteine45af542015-06-30 13:36:19 +00002330static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002331_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002332{
Adam Nemetc0cff242015-01-16 18:51:50 +00002333 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002334}
2335
Michael Kupersteine45af542015-06-30 13:36:19 +00002336static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002337_mm512_store_pd(void *__P, __m512d __A)
2338{
2339 *(__m512d*)__P = __A;
2340}
2341
Michael Kupersteine45af542015-06-30 13:36:19 +00002342static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002343_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2344{
2345 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2346 (__mmask16) __U);
2347}
2348
Michael Kupersteine45af542015-06-30 13:36:19 +00002349static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002350_mm512_store_ps(void *__P, __m512 __A)
2351{
2352 *(__m512*)__P = __A;
2353}
2354
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002355/* Mask ops */
2356
Michael Kupersteine45af542015-06-30 13:36:19 +00002357static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002358_mm512_knot(__mmask16 __M)
2359{
2360 return __builtin_ia32_knothi(__M);
2361}
2362
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002363/* Integer compare */
2364
Michael Kupersteine45af542015-06-30 13:36:19 +00002365static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002366_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2367 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2368 (__mmask16)-1);
2369}
2370
Michael Kupersteine45af542015-06-30 13:36:19 +00002371static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002372_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2373 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2374 __u);
2375}
2376
Michael Kupersteine45af542015-06-30 13:36:19 +00002377static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002378_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2379 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2380 (__mmask16)-1);
2381}
2382
Michael Kupersteine45af542015-06-30 13:36:19 +00002383static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002384_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2385 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2386 __u);
2387}
2388
Michael Kupersteine45af542015-06-30 13:36:19 +00002389static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002390_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2391 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2392 __u);
2393}
2394
Michael Kupersteine45af542015-06-30 13:36:19 +00002395static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002396_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2397 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2398 (__mmask8)-1);
2399}
2400
Michael Kupersteine45af542015-06-30 13:36:19 +00002401static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002402_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2403 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2404 (__mmask8)-1);
2405}
2406
Michael Kupersteine45af542015-06-30 13:36:19 +00002407static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002408_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2409 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2410 __u);
2411}
2412
Michael Kupersteine45af542015-06-30 13:36:19 +00002413static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002414_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2415 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2416 (__mmask16)-1);
2417}
2418
Michael Kupersteine45af542015-06-30 13:36:19 +00002419static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002420_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2421 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2422 __u);
2423}
2424
Michael Kupersteine45af542015-06-30 13:36:19 +00002425static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002426_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2427 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2428 (__mmask16)-1);
2429}
2430
Michael Kupersteine45af542015-06-30 13:36:19 +00002431static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002432_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2433 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2434 __u);
2435}
2436
Michael Kupersteine45af542015-06-30 13:36:19 +00002437static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002438_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2439 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2440 (__mmask8)-1);
2441}
2442
Michael Kupersteine45af542015-06-30 13:36:19 +00002443static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002444_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2445 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2446 __u);
2447}
2448
Michael Kupersteine45af542015-06-30 13:36:19 +00002449static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002450_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2451 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2452 (__mmask8)-1);
2453}
2454
Michael Kupersteine45af542015-06-30 13:36:19 +00002455static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002456_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2457 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2458 __u);
2459}
2460
Michael Kupersteine45af542015-06-30 13:36:19 +00002461static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002462_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2463 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2464 (__mmask16)-1);
2465}
2466
Michael Kupersteine45af542015-06-30 13:36:19 +00002467static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002468_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2469 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2470 __u);
2471}
2472
Michael Kupersteine45af542015-06-30 13:36:19 +00002473static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002474_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2475 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2476 (__mmask16)-1);
2477}
2478
Michael Kupersteine45af542015-06-30 13:36:19 +00002479static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002480_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2481 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2482 __u);
2483}
2484
Michael Kupersteine45af542015-06-30 13:36:19 +00002485static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002486_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2487 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2488 __u);
2489}
2490
Michael Kupersteine45af542015-06-30 13:36:19 +00002491static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002492_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2493 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2494 (__mmask8)-1);
2495}
2496
Michael Kupersteine45af542015-06-30 13:36:19 +00002497static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002498_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2499 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2500 (__mmask8)-1);
2501}
2502
Michael Kupersteine45af542015-06-30 13:36:19 +00002503static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002504_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2505 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2506 __u);
2507}
2508
Michael Kupersteine45af542015-06-30 13:36:19 +00002509static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002510_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2511 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2512 (__mmask16)-1);
2513}
2514
Michael Kupersteine45af542015-06-30 13:36:19 +00002515static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002516_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2517 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2518 __u);
2519}
2520
Michael Kupersteine45af542015-06-30 13:36:19 +00002521static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002522_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2523 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2524 (__mmask16)-1);
2525}
2526
Michael Kupersteine45af542015-06-30 13:36:19 +00002527static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002528_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2529 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2530 __u);
2531}
2532
Michael Kupersteine45af542015-06-30 13:36:19 +00002533static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002534_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2535 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2536 (__mmask8)-1);
2537}
2538
Michael Kupersteine45af542015-06-30 13:36:19 +00002539static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002540_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2541 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2542 __u);
2543}
2544
Michael Kupersteine45af542015-06-30 13:36:19 +00002545static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002546_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2547 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2548 (__mmask8)-1);
2549}
2550
Michael Kupersteine45af542015-06-30 13:36:19 +00002551static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002552_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2553 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2554 __u);
2555}
2556
Michael Kupersteine45af542015-06-30 13:36:19 +00002557static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002558_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2559 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2560 (__mmask16)-1);
2561}
2562
Michael Kupersteine45af542015-06-30 13:36:19 +00002563static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002564_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2565 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2566 __u);
2567}
2568
Michael Kupersteine45af542015-06-30 13:36:19 +00002569static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002570_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2571 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2572 (__mmask16)-1);
2573}
2574
Michael Kupersteine45af542015-06-30 13:36:19 +00002575static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002576_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2577 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2578 __u);
2579}
2580
Michael Kupersteine45af542015-06-30 13:36:19 +00002581static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002582_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2583 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2584 (__mmask8)-1);
2585}
2586
Michael Kupersteine45af542015-06-30 13:36:19 +00002587static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002588_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2589 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2590 __u);
2591}
2592
Michael Kupersteine45af542015-06-30 13:36:19 +00002593static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002594_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2595 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2596 (__mmask8)-1);
2597}
2598
Michael Kupersteine45af542015-06-30 13:36:19 +00002599static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002600_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2601 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2602 __u);
2603}
2604
Michael Kupersteine45af542015-06-30 13:36:19 +00002605static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002606_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2607 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2608 (__mmask16)-1);
2609}
2610
Michael Kupersteine45af542015-06-30 13:36:19 +00002611static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002612_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2613 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2614 __u);
2615}
2616
Michael Kupersteine45af542015-06-30 13:36:19 +00002617static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002618_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2619 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2620 (__mmask16)-1);
2621}
2622
Michael Kupersteine45af542015-06-30 13:36:19 +00002623static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002624_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2625 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2626 __u);
2627}
2628
Michael Kupersteine45af542015-06-30 13:36:19 +00002629static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002630_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2631 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2632 (__mmask8)-1);
2633}
2634
Michael Kupersteine45af542015-06-30 13:36:19 +00002635static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002636_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2637 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2638 __u);
2639}
2640
Michael Kupersteine45af542015-06-30 13:36:19 +00002641static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002642_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2643 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2644 (__mmask8)-1);
2645}
2646
Michael Kupersteine45af542015-06-30 13:36:19 +00002647static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002648_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2649 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2650 __u);
2651}
2652
2653#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
2654 __m512i __a = (a); \
2655 __m512i __b = (b); \
2656 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2657 (__mmask16)-1); })
2658
2659#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
2660 __m512i __a = (a); \
2661 __m512i __b = (b); \
2662 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2663 (__mmask16)-1); })
2664
2665#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
2666 __m512i __a = (a); \
2667 __m512i __b = (b); \
2668 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2669 (__mmask8)-1); })
2670
2671#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
2672 __m512i __a = (a); \
2673 __m512i __b = (b); \
2674 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2675 (__mmask8)-1); })
2676
2677#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
2678 __m512i __a = (a); \
2679 __m512i __b = (b); \
2680 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2681 (__mmask16)(m)); })
2682
2683#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
2684 __m512i __a = (a); \
2685 __m512i __b = (b); \
2686 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2687 (__mmask16)(m)); })
2688
2689#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
2690 __m512i __a = (a); \
2691 __m512i __b = (b); \
2692 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2693 (__mmask8)(m)); })
2694
2695#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
2696 __m512i __a = (a); \
2697 __m512i __b = (b); \
2698 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2699 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00002700
Michael Kupersteine45af542015-06-30 13:36:19 +00002701#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00002702
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002703#endif // __AVX512FINTRIN_H