blob: 71cc474c0d3a6737433ec599464717cf8016b29c [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
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000546static __inline__ __m128 __DEFAULT_FN_ATTRS
547_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
548 return (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A,
549 (__v4sf) __B,
550 (__v4sf) __W,
551 (__mmask8) __U,
552 _MM_FROUND_CUR_DIRECTION);
553}
554
555static __inline__ __m128 __DEFAULT_FN_ATTRS
556_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
557 return (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A,
558 (__v4sf) __B,
559 (__v4sf) _mm_setzero_ps (),
560 (__mmask8) __U,
561 _MM_FROUND_CUR_DIRECTION);
562}
563
564#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
565 (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A, (__v4sf) __B, \
566 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
567
568#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
569 (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A, (__v4sf) __B, \
570 (__v4sf) __W, (__mmask8) __U,__R); })
571
572#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
573 (__m128) __builtin_ia32_maxss_mask ((__v4sf) __A, (__v4sf) __B, \
574 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
575
576static __inline__ __m128d __DEFAULT_FN_ATTRS
577_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
578 return (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A,
579 (__v2df) __B,
580 (__v2df) __W,
581 (__mmask8) __U,
582 _MM_FROUND_CUR_DIRECTION);
583}
584
585static __inline__ __m128d __DEFAULT_FN_ATTRS
586_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
587 return (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A,
588 (__v2df) __B,
589 (__v2df) _mm_setzero_pd (),
590 (__mmask8) __U,
591 _MM_FROUND_CUR_DIRECTION);
592}
593
594#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
595 (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A, (__v2df) __B, \
596 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
597
598#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
599 (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A, (__v2df) __B, \
600 (__v2df) __W, (__mmask8) __U,__R); })
601
602#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
603 (__m128d) __builtin_ia32_maxsd_mask ((__v2df) __A, (__v2df) __B, \
604 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
605
Adam Nemet0d5bb552014-07-28 17:14:40 +0000606static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000607__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000608_mm512_max_epi32(__m512i __A, __m512i __B)
609{
610 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
611 (__v16si) __B,
612 (__v16si)
613 _mm512_setzero_si512 (),
614 (__mmask16) -1);
615}
616
Michael Kupersteine45af542015-06-30 13:36:19 +0000617static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000618_mm512_max_epu32(__m512i __A, __m512i __B)
619{
620 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
621 (__v16si) __B,
622 (__v16si)
623 _mm512_setzero_si512 (),
624 (__mmask16) -1);
625}
626
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000628_mm512_max_epi64(__m512i __A, __m512i __B)
629{
630 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
631 (__v8di) __B,
632 (__v8di)
633 _mm512_setzero_si512 (),
634 (__mmask8) -1);
635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000638_mm512_max_epu64(__m512i __A, __m512i __B)
639{
640 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
641 (__v8di) __B,
642 (__v8di)
643 _mm512_setzero_si512 (),
644 (__mmask8) -1);
645}
646
Michael Kupersteine45af542015-06-30 13:36:19 +0000647static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000648_mm512_min_pd(__m512d __A, __m512d __B)
649{
650 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
651 (__v8df) __B,
652 (__v8df)
653 _mm512_setzero_pd (),
654 (__mmask8) -1,
655 _MM_FROUND_CUR_DIRECTION);
656}
657
Michael Kupersteine45af542015-06-30 13:36:19 +0000658static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000659_mm512_min_ps(__m512 __A, __m512 __B)
660{
661 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
662 (__v16sf) __B,
663 (__v16sf)
664 _mm512_setzero_ps (),
665 (__mmask16) -1,
666 _MM_FROUND_CUR_DIRECTION);
667}
668
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000669static __inline__ __m128 __DEFAULT_FN_ATTRS
670_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
671 return (__m128) __builtin_ia32_minss_mask ((__v4sf) __A,
672 (__v4sf) __B,
673 (__v4sf) __W,
674 (__mmask8) __U,
675 _MM_FROUND_CUR_DIRECTION);
676}
677
678static __inline__ __m128 __DEFAULT_FN_ATTRS
679_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
680 return (__m128) __builtin_ia32_minss_mask ((__v4sf) __A,
681 (__v4sf) __B,
682 (__v4sf) _mm_setzero_ps (),
683 (__mmask8) __U,
684 _MM_FROUND_CUR_DIRECTION);
685}
686
687#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
688 (__m128) __builtin_ia32_minss_mask ((__v4sf) __A, (__v4sf) __B, \
689 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
690
691#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
692 (__m128) __builtin_ia32_minss_mask ((__v4sf) __A, (__v4sf) __B, \
693 (__v4sf) __W, (__mmask8) __U,__R); })
694
695#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
696 (__m128) __builtin_ia32_minss_mask ((__v4sf) __A, (__v4sf) __B, \
697 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
698
699static __inline__ __m128d __DEFAULT_FN_ATTRS
700_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
701 return (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A,
702 (__v2df) __B,
703 (__v2df) __W,
704 (__mmask8) __U,
705 _MM_FROUND_CUR_DIRECTION);
706}
707
708static __inline__ __m128d __DEFAULT_FN_ATTRS
709_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
710 return (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A,
711 (__v2df) __B,
712 (__v2df) _mm_setzero_pd (),
713 (__mmask8) __U,
714 _MM_FROUND_CUR_DIRECTION);
715}
716
717#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
718 (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A, (__v2df) __B, \
719 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
720
721#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
722 (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A, (__v2df) __B, \
723 (__v2df) __W, (__mmask8) __U,__R); })
724
725#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
726 (__m128d) __builtin_ia32_minsd_mask ((__v2df) __A, (__v2df) __B, \
727 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
728
Adam Nemet0d5bb552014-07-28 17:14:40 +0000729static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000730__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000731_mm512_min_epi32(__m512i __A, __m512i __B)
732{
733 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
734 (__v16si) __B,
735 (__v16si)
736 _mm512_setzero_si512 (),
737 (__mmask16) -1);
738}
739
Michael Kupersteine45af542015-06-30 13:36:19 +0000740static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000741_mm512_min_epu32(__m512i __A, __m512i __B)
742{
743 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
744 (__v16si) __B,
745 (__v16si)
746 _mm512_setzero_si512 (),
747 (__mmask16) -1);
748}
749
Michael Kupersteine45af542015-06-30 13:36:19 +0000750static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000751_mm512_min_epi64(__m512i __A, __m512i __B)
752{
753 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
754 (__v8di) __B,
755 (__v8di)
756 _mm512_setzero_si512 (),
757 (__mmask8) -1);
758}
759
Michael Kupersteine45af542015-06-30 13:36:19 +0000760static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000761_mm512_min_epu64(__m512i __A, __m512i __B)
762{
763 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
764 (__v8di) __B,
765 (__v8di)
766 _mm512_setzero_si512 (),
767 (__mmask8) -1);
768}
769
Michael Kupersteine45af542015-06-30 13:36:19 +0000770static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000771_mm512_mul_epi32(__m512i __X, __m512i __Y)
772{
773 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
774 (__v16si) __Y,
775 (__v8di)
776 _mm512_setzero_si512 (),
777 (__mmask8) -1);
778}
779
Michael Kupersteine45af542015-06-30 13:36:19 +0000780static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000781_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
782{
783 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
784 (__v16si) __Y,
785 (__v8di) __W, __M);
786}
787
Michael Kupersteine45af542015-06-30 13:36:19 +0000788static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000789_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
790{
791 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
792 (__v16si) __Y,
793 (__v8di)
794 _mm512_setzero_si512 (),
795 __M);
796}
797
Michael Kupersteine45af542015-06-30 13:36:19 +0000798static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000799_mm512_mul_epu32(__m512i __X, __m512i __Y)
800{
801 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
802 (__v16si) __Y,
803 (__v8di)
804 _mm512_setzero_si512 (),
805 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000806}
807
Michael Kupersteine45af542015-06-30 13:36:19 +0000808static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000809_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
810{
811 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
812 (__v16si) __Y,
813 (__v8di) __W, __M);
814}
815
Michael Kupersteine45af542015-06-30 13:36:19 +0000816static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000817_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
818{
819 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
820 (__v16si) __Y,
821 (__v8di)
822 _mm512_setzero_si512 (),
823 __M);
824}
825
Michael Kupersteine45af542015-06-30 13:36:19 +0000826static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000827_mm512_mullo_epi32 (__m512i __A, __m512i __B)
828{
829 return (__m512i) ((__v16si) __A * (__v16si) __B);
830}
831
Michael Kupersteine45af542015-06-30 13:36:19 +0000832static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000833_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
834{
835 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
836 (__v16si) __B,
837 (__v16si)
838 _mm512_setzero_si512 (),
839 __M);
840}
841
Michael Kupersteine45af542015-06-30 13:36:19 +0000842static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000843_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
844{
845 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
846 (__v16si) __B,
847 (__v16si) __W, __M);
848}
849
Michael Kupersteine45af542015-06-30 13:36:19 +0000850static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000851_mm512_sqrt_pd(__m512d a)
852{
853 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
854 (__v8df) _mm512_setzero_pd (),
855 (__mmask8) -1,
856 _MM_FROUND_CUR_DIRECTION);
857}
858
Michael Kupersteine45af542015-06-30 13:36:19 +0000859static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000860_mm512_sqrt_ps(__m512 a)
861{
862 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
863 (__v16sf) _mm512_setzero_ps (),
864 (__mmask16) -1,
865 _MM_FROUND_CUR_DIRECTION);
866}
867
Michael Kupersteine45af542015-06-30 13:36:19 +0000868static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000869_mm512_rsqrt14_pd(__m512d __A)
870{
871 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
872 (__v8df)
873 _mm512_setzero_pd (),
874 (__mmask8) -1);}
875
Michael Kupersteine45af542015-06-30 13:36:19 +0000876static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000877_mm512_rsqrt14_ps(__m512 __A)
878{
879 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
880 (__v16sf)
881 _mm512_setzero_ps (),
882 (__mmask16) -1);
883}
884
Michael Kupersteine45af542015-06-30 13:36:19 +0000885static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000886_mm_rsqrt14_ss(__m128 __A, __m128 __B)
887{
888 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
889 (__v4sf) __B,
890 (__v4sf)
891 _mm_setzero_ps (),
892 (__mmask8) -1);
893}
894
Michael Kupersteine45af542015-06-30 13:36:19 +0000895static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000896_mm_rsqrt14_sd(__m128d __A, __m128d __B)
897{
898 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
899 (__v2df) __B,
900 (__v2df)
901 _mm_setzero_pd (),
902 (__mmask8) -1);
903}
904
Michael Kupersteine45af542015-06-30 13:36:19 +0000905static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000906_mm512_rcp14_pd(__m512d __A)
907{
908 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
909 (__v8df)
910 _mm512_setzero_pd (),
911 (__mmask8) -1);
912}
913
Michael Kupersteine45af542015-06-30 13:36:19 +0000914static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000915_mm512_rcp14_ps(__m512 __A)
916{
917 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
918 (__v16sf)
919 _mm512_setzero_ps (),
920 (__mmask16) -1);
921}
Michael Kupersteine45af542015-06-30 13:36:19 +0000922static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000923_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000924{
925 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
926 (__v4sf) __B,
927 (__v4sf)
928 _mm_setzero_ps (),
929 (__mmask8) -1);
930}
931
Michael Kupersteine45af542015-06-30 13:36:19 +0000932static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000933_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000934{
935 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
936 (__v2df) __B,
937 (__v2df)
938 _mm_setzero_pd (),
939 (__mmask8) -1);
940}
941
Michael Kupersteine45af542015-06-30 13:36:19 +0000942static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000943_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000944{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000945 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
946 _MM_FROUND_FLOOR,
947 (__v16sf) __A, -1,
948 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000949}
950
Michael Kupersteine45af542015-06-30 13:36:19 +0000951static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000952_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000953{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000954 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
955 _MM_FROUND_FLOOR,
956 (__v8df) __A, -1,
957 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000958}
959
Michael Kupersteine45af542015-06-30 13:36:19 +0000960static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000961_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000962{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000963 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
964 _MM_FROUND_CEIL,
965 (__v16sf) __A, -1,
966 _MM_FROUND_CUR_DIRECTION);
967}
968
Michael Kupersteine45af542015-06-30 13:36:19 +0000969static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000970_mm512_ceil_pd(__m512d __A)
971{
972 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
973 _MM_FROUND_CEIL,
974 (__v8df) __A, -1,
975 _MM_FROUND_CUR_DIRECTION);
976}
977
Michael Kupersteine45af542015-06-30 13:36:19 +0000978static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000979_mm512_abs_epi64(__m512i __A)
980{
981 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
982 (__v8di)
983 _mm512_setzero_si512 (),
984 (__mmask8) -1);
985}
986
Michael Kupersteine45af542015-06-30 13:36:19 +0000987static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000988_mm512_abs_epi32(__m512i __A)
989{
990 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
991 (__v16si)
992 _mm512_setzero_si512 (),
993 (__mmask16) -1);
994}
995
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000996static __inline__ __m128 __DEFAULT_FN_ATTRS
997_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
998 return (__m128) __builtin_ia32_addss_mask ((__v4sf) __A,
999 (__v4sf) __B,
1000 (__v4sf) __W,
1001 (__mmask8) __U,
1002 _MM_FROUND_CUR_DIRECTION);
1003}
1004
1005static __inline__ __m128 __DEFAULT_FN_ATTRS
1006_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1007 return (__m128) __builtin_ia32_addss_mask ((__v4sf) __A,
1008 (__v4sf) __B,
1009 (__v4sf) _mm_setzero_ps (),
1010 (__mmask8) __U,
1011 _MM_FROUND_CUR_DIRECTION);
1012}
1013
1014#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
1015 (__m128) __builtin_ia32_addss_mask ((__v4sf) __A, (__v4sf) __B, \
1016 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1017
1018#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1019 (__m128) __builtin_ia32_addss_mask ((__v4sf) __A, (__v4sf) __B, \
1020 (__v4sf) __W, (__mmask8) __U,__R); })
1021
1022#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
1023 (__m128) __builtin_ia32_addss_mask ((__v4sf) __A, (__v4sf) __B, \
1024 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1025
1026static __inline__ __m128d __DEFAULT_FN_ATTRS
1027_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1028 return (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A,
1029 (__v2df) __B,
1030 (__v2df) __W,
1031 (__mmask8) __U,
1032 _MM_FROUND_CUR_DIRECTION);
1033}
1034
1035static __inline__ __m128d __DEFAULT_FN_ATTRS
1036_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1037 return (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A,
1038 (__v2df) __B,
1039 (__v2df) _mm_setzero_pd (),
1040 (__mmask8) __U,
1041 _MM_FROUND_CUR_DIRECTION);
1042}
1043#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
1044 (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A, (__v2df) __B, \
1045 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1046
1047#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1048 (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A, (__v2df) __B, \
1049 (__v2df) __W, (__mmask8) __U,__R); })
1050
1051#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
1052 (__m128d) __builtin_ia32_addsd_mask ((__v2df) __A, (__v2df) __B, \
1053 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1054
Asaf Badouhffeb6242015-07-21 15:27:28 +00001055static __inline__ __m512d __DEFAULT_FN_ATTRS
1056_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1057 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1058 (__v8df) __B,
1059 (__v8df) __W,
1060 (__mmask8) __U,
1061 _MM_FROUND_CUR_DIRECTION);
1062}
1063
1064static __inline__ __m512d __DEFAULT_FN_ATTRS
1065_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1066 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1067 (__v8df) __B,
1068 (__v8df) _mm512_setzero_pd (),
1069 (__mmask8) __U,
1070 _MM_FROUND_CUR_DIRECTION);
1071}
1072
1073static __inline__ __m512 __DEFAULT_FN_ATTRS
1074_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1075 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1076 (__v16sf) __B,
1077 (__v16sf) __W,
1078 (__mmask16) __U,
1079 _MM_FROUND_CUR_DIRECTION);
1080}
1081
1082static __inline__ __m512 __DEFAULT_FN_ATTRS
1083_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1084 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1085 (__v16sf) __B,
1086 (__v16sf) _mm512_setzero_ps (),
1087 (__mmask16) __U,
1088 _MM_FROUND_CUR_DIRECTION);
1089}
1090
1091#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1092 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1093 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1094
1095#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1096 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1097 (__v8df) __W, (__mmask8) __U, __R); })
1098
1099#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1100 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1101 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1102
1103#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1104 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1105 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1106
1107#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1108 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1109 (__v16sf) __W, (__mmask16)__U, __R); })
1110
1111#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1112 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1113 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1114
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001115static __inline__ __m128 __DEFAULT_FN_ATTRS
1116_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1117 return (__m128) __builtin_ia32_subss_mask ((__v4sf) __A,
1118 (__v4sf) __B,
1119 (__v4sf) __W,
1120 (__mmask8) __U,
1121 _MM_FROUND_CUR_DIRECTION);
1122}
1123
1124static __inline__ __m128 __DEFAULT_FN_ATTRS
1125_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1126 return (__m128) __builtin_ia32_subss_mask ((__v4sf) __A,
1127 (__v4sf) __B,
1128 (__v4sf) _mm_setzero_ps (),
1129 (__mmask8) __U,
1130 _MM_FROUND_CUR_DIRECTION);
1131}
1132#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
1133 (__m128) __builtin_ia32_subss_mask ((__v4sf) __A, (__v4sf) __B, \
1134 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1135
1136#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1137 (__m128) __builtin_ia32_subss_mask ((__v4sf) __A, (__v4sf) __B, \
1138 (__v4sf) __W, (__mmask8) __U,__R); })
1139
1140#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
1141 (__m128) __builtin_ia32_subss_mask ((__v4sf) __A, (__v4sf) __B, \
1142 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1143
1144static __inline__ __m128d __DEFAULT_FN_ATTRS
1145_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1146 return (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A,
1147 (__v2df) __B,
1148 (__v2df) __W,
1149 (__mmask8) __U,
1150 _MM_FROUND_CUR_DIRECTION);
1151}
1152
1153static __inline__ __m128d __DEFAULT_FN_ATTRS
1154_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1155 return (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A,
1156 (__v2df) __B,
1157 (__v2df) _mm_setzero_pd (),
1158 (__mmask8) __U,
1159 _MM_FROUND_CUR_DIRECTION);
1160}
1161
1162#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
1163 (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A, (__v2df) __B, \
1164 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1165
1166#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1167 (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A, (__v2df) __B, \
1168 (__v2df) __W, (__mmask8) __U,__R); })
1169
1170#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
1171 (__m128d) __builtin_ia32_subsd_mask ((__v2df) __A, (__v2df) __B, \
1172 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1173
Asaf Badouhffeb6242015-07-21 15:27:28 +00001174static __inline__ __m512d __DEFAULT_FN_ATTRS
1175_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1176 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1177 (__v8df) __B,
1178 (__v8df) __W,
1179 (__mmask8) __U,
1180 _MM_FROUND_CUR_DIRECTION);
1181}
1182
1183static __inline__ __m512d __DEFAULT_FN_ATTRS
1184_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1185 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1186 (__v8df) __B,
1187 (__v8df)
1188 _mm512_setzero_pd (),
1189 (__mmask8) __U,
1190 _MM_FROUND_CUR_DIRECTION);
1191}
1192
1193static __inline__ __m512 __DEFAULT_FN_ATTRS
1194_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1195 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1196 (__v16sf) __B,
1197 (__v16sf) __W,
1198 (__mmask16) __U,
1199 _MM_FROUND_CUR_DIRECTION);
1200}
1201
1202static __inline__ __m512 __DEFAULT_FN_ATTRS
1203_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1204 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1205 (__v16sf) __B,
1206 (__v16sf)
1207 _mm512_setzero_ps (),
1208 (__mmask16) __U,
1209 _MM_FROUND_CUR_DIRECTION);
1210}
1211
1212#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1213 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1214 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1215
1216#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1217 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1218 (__v8df) __W, (__mmask8) __U, __R); })
1219
1220#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1221 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1222 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1223
1224#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1225 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1226 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1227
1228#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1229 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1230 (__v16sf) __W, (__mmask16) __U, __R); });
1231
1232#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1233 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1234 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1235
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001236static __inline__ __m128 __DEFAULT_FN_ATTRS
1237_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1238 return (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A,
1239 (__v4sf) __B,
1240 (__v4sf) __W,
1241 (__mmask8) __U,
1242 _MM_FROUND_CUR_DIRECTION);
1243}
1244
1245static __inline__ __m128 __DEFAULT_FN_ATTRS
1246_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1247 return (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A,
1248 (__v4sf) __B,
1249 (__v4sf) _mm_setzero_ps (),
1250 (__mmask8) __U,
1251 _MM_FROUND_CUR_DIRECTION);
1252}
1253#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
1254 (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A, (__v4sf) __B, \
1255 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1256
1257#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1258 (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A, (__v4sf) __B, \
1259 (__v4sf) __W, (__mmask8) __U,__R); })
1260
1261#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
1262 (__m128) __builtin_ia32_mulss_mask ((__v4sf) __A, (__v4sf) __B, \
1263 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1264
1265static __inline__ __m128d __DEFAULT_FN_ATTRS
1266_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1267 return (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A,
1268 (__v2df) __B,
1269 (__v2df) __W,
1270 (__mmask8) __U,
1271 _MM_FROUND_CUR_DIRECTION);
1272}
1273
1274static __inline__ __m128d __DEFAULT_FN_ATTRS
1275_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1276 return (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A,
1277 (__v2df) __B,
1278 (__v2df) _mm_setzero_pd (),
1279 (__mmask8) __U,
1280 _MM_FROUND_CUR_DIRECTION);
1281}
1282
1283#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
1284 (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A, (__v2df) __B, \
1285 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1286
1287#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1288 (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A, (__v2df) __B, \
1289 (__v2df) __W, (__mmask8) __U,__R); })
1290
1291#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
1292 (__m128d) __builtin_ia32_mulsd_mask ((__v2df) __A, (__v2df) __B, \
1293 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1294
Asaf Badouhffeb6242015-07-21 15:27:28 +00001295static __inline__ __m512d __DEFAULT_FN_ATTRS
1296_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1297 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1298 (__v8df) __B,
1299 (__v8df) __W,
1300 (__mmask8) __U,
1301 _MM_FROUND_CUR_DIRECTION);
1302}
1303
1304static __inline__ __m512d __DEFAULT_FN_ATTRS
1305_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1306 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1307 (__v8df) __B,
1308 (__v8df)
1309 _mm512_setzero_pd (),
1310 (__mmask8) __U,
1311 _MM_FROUND_CUR_DIRECTION);
1312}
1313
1314static __inline__ __m512 __DEFAULT_FN_ATTRS
1315_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1316 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1317 (__v16sf) __B,
1318 (__v16sf) __W,
1319 (__mmask16) __U,
1320 _MM_FROUND_CUR_DIRECTION);
1321}
1322
1323static __inline__ __m512 __DEFAULT_FN_ATTRS
1324_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1325 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1326 (__v16sf) __B,
1327 (__v16sf)
1328 _mm512_setzero_ps (),
1329 (__mmask16) __U,
1330 _MM_FROUND_CUR_DIRECTION);
1331}
1332
1333#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1334 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1335 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1336
1337#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1338 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1339 (__v8df) __W, (__mmask8) __U, __R); })
1340
1341#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1342 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1343 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1344
1345#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1346 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1347 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1348
1349#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1350 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1351 (__v16sf) __W, (__mmask16) __U, __R); });
1352
1353#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1354 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1355 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1356
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001357static __inline__ __m128 __DEFAULT_FN_ATTRS
1358_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1359 return (__m128) __builtin_ia32_divss_mask ((__v4sf) __A,
1360 (__v4sf) __B,
1361 (__v4sf) __W,
1362 (__mmask8) __U,
1363 _MM_FROUND_CUR_DIRECTION);
1364}
1365
1366static __inline__ __m128 __DEFAULT_FN_ATTRS
1367_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1368 return (__m128) __builtin_ia32_divss_mask ((__v4sf) __A,
1369 (__v4sf) __B,
1370 (__v4sf) _mm_setzero_ps (),
1371 (__mmask8) __U,
1372 _MM_FROUND_CUR_DIRECTION);
1373}
1374
1375#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
1376 (__m128) __builtin_ia32_divss_mask ((__v4sf) __A, (__v4sf) __B, \
1377 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1378
1379#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1380 (__m128) __builtin_ia32_divss_mask ((__v4sf) __A, (__v4sf) __B, \
1381 (__v4sf) __W, (__mmask8) __U,__R); })
1382
1383#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
1384 (__m128) __builtin_ia32_divss_mask ((__v4sf) __A, (__v4sf) __B, \
1385 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1386
1387static __inline__ __m128d __DEFAULT_FN_ATTRS
1388_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1389 return (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A,
1390 (__v2df) __B,
1391 (__v2df) __W,
1392 (__mmask8) __U,
1393 _MM_FROUND_CUR_DIRECTION);
1394}
1395
1396static __inline__ __m128d __DEFAULT_FN_ATTRS
1397_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1398 return (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A,
1399 (__v2df) __B,
1400 (__v2df) _mm_setzero_pd (),
1401 (__mmask8) __U,
1402 _MM_FROUND_CUR_DIRECTION);
1403}
1404
1405#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
1406 (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A, (__v2df) __B, \
1407 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1408
1409#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1410 (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A, (__v2df) __B, \
1411 (__v2df) __W, (__mmask8) __U,__R); })
1412
1413#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
1414 (__m128d) __builtin_ia32_divsd_mask ((__v2df) __A, (__v2df) __B, \
1415 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1416
Asaf Badouhffeb6242015-07-21 15:27:28 +00001417static __inline__ __m512d __DEFAULT_FN_ATTRS
1418_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1419 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1420 (__v8df) __B,
1421 (__v8df) __W,
1422 (__mmask8) __U,
1423 _MM_FROUND_CUR_DIRECTION);
1424}
1425
1426static __inline__ __m512d __DEFAULT_FN_ATTRS
1427_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1428 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1429 (__v8df) __B,
1430 (__v8df)
1431 _mm512_setzero_pd (),
1432 (__mmask8) __U,
1433 _MM_FROUND_CUR_DIRECTION);
1434}
1435
1436static __inline__ __m512 __DEFAULT_FN_ATTRS
1437_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1438 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1439 (__v16sf) __B,
1440 (__v16sf) __W,
1441 (__mmask16) __U,
1442 _MM_FROUND_CUR_DIRECTION);
1443}
1444
1445static __inline__ __m512 __DEFAULT_FN_ATTRS
1446_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1447 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1448 (__v16sf) __B,
1449 (__v16sf)
1450 _mm512_setzero_ps (),
1451 (__mmask16) __U,
1452 _MM_FROUND_CUR_DIRECTION);
1453}
1454
1455#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1456 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1457 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1458
1459#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1460 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1461 (__v8df) __W, (__mmask8) __U, __R); })
1462
1463#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1464 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1465 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1466
1467#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1468 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1469 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1470
1471#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1472 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1473 (__v16sf) __W, (__mmask16) __U, __R); });
1474
1475#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
1476 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1477 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1478
Craig Topper72c7d512015-02-01 07:35:35 +00001479#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1480 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1481 -1, _MM_FROUND_CUR_DIRECTION); })
1482
1483#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1484 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1485 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001486
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001487#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1488 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1489 (__v8df) (B), (__v8df) (C), \
1490 (__mmask8) -1, (R)); })
1491
1492
1493#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1494 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1495 (__v8df) (B), (__v8df) (C), \
1496 (__mmask8) (U), (R)); })
1497
1498
1499#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1500 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1501 (__v8df) (B), (__v8df) (C), \
1502 (__mmask8) (U), (R)); })
1503
1504
1505#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1506 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1507 (__v8df) (B), (__v8df) (C), \
1508 (__mmask8) (U), (R)); })
1509
1510
1511#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1512 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1513 (__v8df) (B), -(__v8df) (C), \
1514 (__mmask8) -1, (R)); })
1515
1516
1517#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1518 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1519 (__v8df) (B), -(__v8df) (C), \
1520 (__mmask8) (U), (R)); })
1521
1522
1523#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1524 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1525 (__v8df) (B), -(__v8df) (C), \
1526 (__mmask8) (U), (R)); })
1527
1528
1529#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1530 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1531 (__v8df) (B), (__v8df) (C), \
1532 (__mmask8) -1, (R)); })
1533
1534
1535#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1536 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1537 (__v8df) (B), (__v8df) (C), \
1538 (__mmask8) (U), (R)); })
1539
1540
1541#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1542 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1543 (__v8df) (B), (__v8df) (C), \
1544 (__mmask8) (U), (R)); })
1545
1546
1547#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1548 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1549 (__v8df) (B), -(__v8df) (C), \
1550 (__mmask8) -1, (R)); })
1551
1552
1553#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1554 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1555 (__v8df) (B), -(__v8df) (C), \
1556 (__mmask8) (U), (R)); })
1557
1558
Michael Kupersteine45af542015-06-30 13:36:19 +00001559static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001560_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1561{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001562 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1563 (__v8df) __B,
1564 (__v8df) __C,
1565 (__mmask8) -1,
1566 _MM_FROUND_CUR_DIRECTION);
1567}
1568
Michael Kupersteine45af542015-06-30 13:36:19 +00001569static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001570_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1571{
1572 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1573 (__v8df) __B,
1574 (__v8df) __C,
1575 (__mmask8) __U,
1576 _MM_FROUND_CUR_DIRECTION);
1577}
1578
Michael Kupersteine45af542015-06-30 13:36:19 +00001579static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001580_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1581{
1582 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
1583 (__v8df) __B,
1584 (__v8df) __C,
1585 (__mmask8) __U,
1586 _MM_FROUND_CUR_DIRECTION);
1587}
1588
Michael Kupersteine45af542015-06-30 13:36:19 +00001589static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001590_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1591{
1592 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1593 (__v8df) __B,
1594 (__v8df) __C,
1595 (__mmask8) __U,
1596 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001597}
1598
Michael Kupersteine45af542015-06-30 13:36:19 +00001599static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001600_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1601{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001602 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1603 (__v8df) __B,
1604 -(__v8df) __C,
1605 (__mmask8) -1,
1606 _MM_FROUND_CUR_DIRECTION);
1607}
1608
Michael Kupersteine45af542015-06-30 13:36:19 +00001609static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001610_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1611{
1612 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1613 (__v8df) __B,
1614 -(__v8df) __C,
1615 (__mmask8) __U,
1616 _MM_FROUND_CUR_DIRECTION);
1617}
1618
Michael Kupersteine45af542015-06-30 13:36:19 +00001619static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001620_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1621{
1622 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1623 (__v8df) __B,
1624 -(__v8df) __C,
1625 (__mmask8) __U,
1626 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001627}
1628
Michael Kupersteine45af542015-06-30 13:36:19 +00001629static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001630_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1631{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001632 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1633 (__v8df) __B,
1634 (__v8df) __C,
1635 (__mmask8) -1,
1636 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001637}
1638
Michael Kupersteine45af542015-06-30 13:36:19 +00001639static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001640_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1641{
1642 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1643 (__v8df) __B,
1644 (__v8df) __C,
1645 (__mmask8) __U,
1646 _MM_FROUND_CUR_DIRECTION);
1647}
1648
Michael Kupersteine45af542015-06-30 13:36:19 +00001649static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001650_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1651{
1652 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1653 (__v8df) __B,
1654 (__v8df) __C,
1655 (__mmask8) __U,
1656 _MM_FROUND_CUR_DIRECTION);
1657}
1658
Michael Kupersteine45af542015-06-30 13:36:19 +00001659static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001660_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1661{
1662 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1663 (__v8df) __B,
1664 -(__v8df) __C,
1665 (__mmask8) -1,
1666 _MM_FROUND_CUR_DIRECTION);
1667}
1668
Michael Kupersteine45af542015-06-30 13:36:19 +00001669static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001670_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1671{
1672 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1673 (__v8df) __B,
1674 -(__v8df) __C,
1675 (__mmask8) __U,
1676 _MM_FROUND_CUR_DIRECTION);
1677}
1678
1679#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1680 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1681 (__v16sf) (B), (__v16sf) (C), \
1682 (__mmask16) -1, (R)); })
1683
1684
1685#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1686 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1687 (__v16sf) (B), (__v16sf) (C), \
1688 (__mmask16) (U), (R)); })
1689
1690
1691#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1692 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1693 (__v16sf) (B), (__v16sf) (C), \
1694 (__mmask16) (U), (R)); })
1695
1696
1697#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1698 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1699 (__v16sf) (B), (__v16sf) (C), \
1700 (__mmask16) (U), (R)); })
1701
1702
1703#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1704 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1705 (__v16sf) (B), -(__v16sf) (C), \
1706 (__mmask16) -1, (R)); })
1707
1708
1709#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1710 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1711 (__v16sf) (B), -(__v16sf) (C), \
1712 (__mmask16) (U), (R)); })
1713
1714
1715#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1716 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1717 (__v16sf) (B), -(__v16sf) (C), \
1718 (__mmask16) (U), (R)); })
1719
1720
1721#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1722 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1723 (__v16sf) (B), (__v16sf) (C), \
1724 (__mmask16) -1, (R)); })
1725
1726
1727#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1728 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1729 (__v16sf) (B), (__v16sf) (C), \
1730 (__mmask16) (U), (R)); })
1731
1732
1733#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1734 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1735 (__v16sf) (B), (__v16sf) (C), \
1736 (__mmask16) (U), (R)); })
1737
1738
1739#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1740 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1741 (__v16sf) (B), -(__v16sf) (C), \
1742 (__mmask16) -1, (R)); })
1743
1744
1745#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1746 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1747 (__v16sf) (B), -(__v16sf) (C), \
1748 (__mmask16) (U), (R)); })
1749
1750
Michael Kupersteine45af542015-06-30 13:36:19 +00001751static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001752_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1753{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001754 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1755 (__v16sf) __B,
1756 (__v16sf) __C,
1757 (__mmask16) -1,
1758 _MM_FROUND_CUR_DIRECTION);
1759}
1760
Michael Kupersteine45af542015-06-30 13:36:19 +00001761static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001762_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1763{
1764 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1765 (__v16sf) __B,
1766 (__v16sf) __C,
1767 (__mmask16) __U,
1768 _MM_FROUND_CUR_DIRECTION);
1769}
1770
Michael Kupersteine45af542015-06-30 13:36:19 +00001771static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001772_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1773{
1774 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1775 (__v16sf) __B,
1776 (__v16sf) __C,
1777 (__mmask16) __U,
1778 _MM_FROUND_CUR_DIRECTION);
1779}
1780
Michael Kupersteine45af542015-06-30 13:36:19 +00001781static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001782_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1783{
1784 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1785 (__v16sf) __B,
1786 (__v16sf) __C,
1787 (__mmask16) __U,
1788 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001789}
1790
Michael Kupersteine45af542015-06-30 13:36:19 +00001791static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001792_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1793{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001794 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1795 (__v16sf) __B,
1796 -(__v16sf) __C,
1797 (__mmask16) -1,
1798 _MM_FROUND_CUR_DIRECTION);
1799}
1800
Michael Kupersteine45af542015-06-30 13:36:19 +00001801static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001802_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1803{
1804 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1805 (__v16sf) __B,
1806 -(__v16sf) __C,
1807 (__mmask16) __U,
1808 _MM_FROUND_CUR_DIRECTION);
1809}
1810
Michael Kupersteine45af542015-06-30 13:36:19 +00001811static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001812_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1813{
1814 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1815 (__v16sf) __B,
1816 -(__v16sf) __C,
1817 (__mmask16) __U,
1818 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001819}
1820
Michael Kupersteine45af542015-06-30 13:36:19 +00001821static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001822_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1823{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001824 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1825 (__v16sf) __B,
1826 (__v16sf) __C,
1827 (__mmask16) -1,
1828 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001829}
1830
Michael Kupersteine45af542015-06-30 13:36:19 +00001831static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001832_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1833{
1834 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
1835 (__v16sf) __B,
1836 (__v16sf) __C,
1837 (__mmask16) __U,
1838 _MM_FROUND_CUR_DIRECTION);
1839}
1840
Michael Kupersteine45af542015-06-30 13:36:19 +00001841static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001842_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1843{
1844 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1845 (__v16sf) __B,
1846 (__v16sf) __C,
1847 (__mmask16) __U,
1848 _MM_FROUND_CUR_DIRECTION);
1849}
1850
Michael Kupersteine45af542015-06-30 13:36:19 +00001851static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001852_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1853{
1854 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1855 (__v16sf) __B,
1856 -(__v16sf) __C,
1857 (__mmask16) -1,
1858 _MM_FROUND_CUR_DIRECTION);
1859}
1860
Michael Kupersteine45af542015-06-30 13:36:19 +00001861static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001862_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1863{
1864 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1865 (__v16sf) __B,
1866 -(__v16sf) __C,
1867 (__mmask16) __U,
1868 _MM_FROUND_CUR_DIRECTION);
1869}
1870
1871#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
1872 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1873 (__v8df) (B), (__v8df) (C), \
1874 (__mmask8) -1, (R)); })
1875
1876
1877#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
1878 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1879 (__v8df) (B), (__v8df) (C), \
1880 (__mmask8) (U), (R)); })
1881
1882
1883#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
1884 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
1885 (__v8df) (B), (__v8df) (C), \
1886 (__mmask8) (U), (R)); })
1887
1888
1889#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
1890 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1891 (__v8df) (B), (__v8df) (C), \
1892 (__mmask8) (U), (R)); })
1893
1894
1895#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
1896 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1897 (__v8df) (B), -(__v8df) (C), \
1898 (__mmask8) -1, (R)); })
1899
1900
1901#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
1902 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1903 (__v8df) (B), -(__v8df) (C), \
1904 (__mmask8) (U), (R)); })
1905
1906
1907#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
1908 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1909 (__v8df) (B), -(__v8df) (C), \
1910 (__mmask8) (U), (R)); })
1911
1912
Michael Kupersteine45af542015-06-30 13:36:19 +00001913static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001914_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
1915{
1916 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1917 (__v8df) __B,
1918 (__v8df) __C,
1919 (__mmask8) -1,
1920 _MM_FROUND_CUR_DIRECTION);
1921}
1922
Michael Kupersteine45af542015-06-30 13:36:19 +00001923static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001924_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1925{
1926 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1927 (__v8df) __B,
1928 (__v8df) __C,
1929 (__mmask8) __U,
1930 _MM_FROUND_CUR_DIRECTION);
1931}
1932
Michael Kupersteine45af542015-06-30 13:36:19 +00001933static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001934_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1935{
1936 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
1937 (__v8df) __B,
1938 (__v8df) __C,
1939 (__mmask8) __U,
1940 _MM_FROUND_CUR_DIRECTION);
1941}
1942
Michael Kupersteine45af542015-06-30 13:36:19 +00001943static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001944_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1945{
1946 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1947 (__v8df) __B,
1948 (__v8df) __C,
1949 (__mmask8) __U,
1950 _MM_FROUND_CUR_DIRECTION);
1951}
1952
Michael Kupersteine45af542015-06-30 13:36:19 +00001953static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001954_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
1955{
1956 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1957 (__v8df) __B,
1958 -(__v8df) __C,
1959 (__mmask8) -1,
1960 _MM_FROUND_CUR_DIRECTION);
1961}
1962
Michael Kupersteine45af542015-06-30 13:36:19 +00001963static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001964_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1965{
1966 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1967 (__v8df) __B,
1968 -(__v8df) __C,
1969 (__mmask8) __U,
1970 _MM_FROUND_CUR_DIRECTION);
1971}
1972
Michael Kupersteine45af542015-06-30 13:36:19 +00001973static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001974_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1975{
1976 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1977 (__v8df) __B,
1978 -(__v8df) __C,
1979 (__mmask8) __U,
1980 _MM_FROUND_CUR_DIRECTION);
1981}
1982
1983#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
1984 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1985 (__v16sf) (B), (__v16sf) (C), \
1986 (__mmask16) -1, (R)); })
1987
1988
1989#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
1990 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1991 (__v16sf) (B), (__v16sf) (C), \
1992 (__mmask16) (U), (R)); })
1993
1994
1995#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
1996 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
1997 (__v16sf) (B), (__v16sf) (C), \
1998 (__mmask16) (U), (R)); })
1999
2000
2001#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2002 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2003 (__v16sf) (B), (__v16sf) (C), \
2004 (__mmask16) (U), (R)); })
2005
2006
2007#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2008 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2009 (__v16sf) (B), -(__v16sf) (C), \
2010 (__mmask16) -1, (R)); })
2011
2012
2013#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2014 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2015 (__v16sf) (B), -(__v16sf) (C), \
2016 (__mmask16) (U), (R)); })
2017
2018
2019#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2020 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2021 (__v16sf) (B), -(__v16sf) (C), \
2022 (__mmask16) (U), (R)); })
2023
2024
Michael Kupersteine45af542015-06-30 13:36:19 +00002025static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002026_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2027{
2028 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2029 (__v16sf) __B,
2030 (__v16sf) __C,
2031 (__mmask16) -1,
2032 _MM_FROUND_CUR_DIRECTION);
2033}
2034
Michael Kupersteine45af542015-06-30 13:36:19 +00002035static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002036_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2037{
2038 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2039 (__v16sf) __B,
2040 (__v16sf) __C,
2041 (__mmask16) __U,
2042 _MM_FROUND_CUR_DIRECTION);
2043}
2044
Michael Kupersteine45af542015-06-30 13:36:19 +00002045static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002046_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2047{
2048 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2049 (__v16sf) __B,
2050 (__v16sf) __C,
2051 (__mmask16) __U,
2052 _MM_FROUND_CUR_DIRECTION);
2053}
2054
Michael Kupersteine45af542015-06-30 13:36:19 +00002055static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002056_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2057{
2058 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2059 (__v16sf) __B,
2060 (__v16sf) __C,
2061 (__mmask16) __U,
2062 _MM_FROUND_CUR_DIRECTION);
2063}
2064
Michael Kupersteine45af542015-06-30 13:36:19 +00002065static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002066_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2067{
2068 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2069 (__v16sf) __B,
2070 -(__v16sf) __C,
2071 (__mmask16) -1,
2072 _MM_FROUND_CUR_DIRECTION);
2073}
2074
Michael Kupersteine45af542015-06-30 13:36:19 +00002075static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002076_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2077{
2078 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2079 (__v16sf) __B,
2080 -(__v16sf) __C,
2081 (__mmask16) __U,
2082 _MM_FROUND_CUR_DIRECTION);
2083}
2084
Michael Kupersteine45af542015-06-30 13:36:19 +00002085static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002086_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2087{
2088 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2089 (__v16sf) __B,
2090 -(__v16sf) __C,
2091 (__mmask16) __U,
2092 _MM_FROUND_CUR_DIRECTION);
2093}
2094
2095#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2096 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2097 (__v8df) (B), (__v8df) (C), \
2098 (__mmask8) (U), (R)); })
2099
2100
Michael Kupersteine45af542015-06-30 13:36:19 +00002101static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002102_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2103{
2104 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2105 (__v8df) __B,
2106 (__v8df) __C,
2107 (__mmask8) __U,
2108 _MM_FROUND_CUR_DIRECTION);
2109}
2110
2111#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2112 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2113 (__v16sf) (B), (__v16sf) (C), \
2114 (__mmask16) (U), (R)); })
2115
2116
Michael Kupersteine45af542015-06-30 13:36:19 +00002117static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002118_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2119{
2120 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2121 (__v16sf) __B,
2122 (__v16sf) __C,
2123 (__mmask16) __U,
2124 _MM_FROUND_CUR_DIRECTION);
2125}
2126
2127#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2128 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2129 (__v8df) (B), (__v8df) (C), \
2130 (__mmask8) (U), (R)); })
2131
2132
Michael Kupersteine45af542015-06-30 13:36:19 +00002133static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002134_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2135{
2136 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2137 (__v8df) __B,
2138 (__v8df) __C,
2139 (__mmask8) __U,
2140 _MM_FROUND_CUR_DIRECTION);
2141}
2142
2143#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2144 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2145 (__v16sf) (B), (__v16sf) (C), \
2146 (__mmask16) (U), (R)); })
2147
2148
Michael Kupersteine45af542015-06-30 13:36:19 +00002149static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002150_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2151{
2152 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2153 (__v16sf) __B,
2154 (__v16sf) __C,
2155 (__mmask16) __U,
2156 _MM_FROUND_CUR_DIRECTION);
2157}
2158
2159#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2160 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2161 (__v8df) (B), (__v8df) (C), \
2162 (__mmask8) (U), (R)); })
2163
2164
Michael Kupersteine45af542015-06-30 13:36:19 +00002165static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002166_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2167{
2168 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2169 (__v8df) __B,
2170 (__v8df) __C,
2171 (__mmask8) __U,
2172 _MM_FROUND_CUR_DIRECTION);
2173}
2174
2175#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2176 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2177 (__v16sf) (B), (__v16sf) (C), \
2178 (__mmask16) (U), (R)); })
2179
2180
Michael Kupersteine45af542015-06-30 13:36:19 +00002181static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002182_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2183{
2184 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2185 (__v16sf) __B,
2186 (__v16sf) __C,
2187 (__mmask16) __U,
2188 _MM_FROUND_CUR_DIRECTION);
2189}
2190
2191#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2192 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2193 (__v8df) (B), (__v8df) (C), \
2194 (__mmask8) (U), (R)); })
2195
2196
2197#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2198 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2199 (__v8df) (B), (__v8df) (C), \
2200 (__mmask8) (U), (R)); })
2201
2202
Michael Kupersteine45af542015-06-30 13:36:19 +00002203static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002204_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2205{
2206 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2207 (__v8df) __B,
2208 (__v8df) __C,
2209 (__mmask8) __U,
2210 _MM_FROUND_CUR_DIRECTION);
2211}
2212
Michael Kupersteine45af542015-06-30 13:36:19 +00002213static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002214_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2215{
2216 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2217 (__v8df) __B,
2218 (__v8df) __C,
2219 (__mmask8) __U,
2220 _MM_FROUND_CUR_DIRECTION);
2221}
2222
2223#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2224 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2225 (__v16sf) (B), (__v16sf) (C), \
2226 (__mmask16) (U), (R)); })
2227
2228
2229#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2230 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2231 (__v16sf) (B), (__v16sf) (C), \
2232 (__mmask16) (U), (R)); })
2233
2234
Michael Kupersteine45af542015-06-30 13:36:19 +00002235static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002236_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2237{
2238 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2239 (__v16sf) __B,
2240 (__v16sf) __C,
2241 (__mmask16) __U,
2242 _MM_FROUND_CUR_DIRECTION);
2243}
2244
Michael Kupersteine45af542015-06-30 13:36:19 +00002245static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002246_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2247{
2248 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2249 (__v16sf) __B,
2250 (__v16sf) __C,
2251 (__mmask16) __U,
2252 _MM_FROUND_CUR_DIRECTION);
2253}
2254
2255
2256
Adam Nemet0d5bb552014-07-28 17:14:40 +00002257/* Vector permutations */
2258
Michael Kupersteine45af542015-06-30 13:36:19 +00002259static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002260_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2261{
2262 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2263 /* idx */ ,
2264 (__v16si) __A,
2265 (__v16si) __B,
2266 (__mmask16) -1);
2267}
Michael Kupersteine45af542015-06-30 13:36:19 +00002268static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002269_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2270{
2271 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2272 /* idx */ ,
2273 (__v8di) __A,
2274 (__v8di) __B,
2275 (__mmask8) -1);
2276}
2277
Michael Kupersteine45af542015-06-30 13:36:19 +00002278static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002279_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2280{
2281 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2282 /* idx */ ,
2283 (__v8df) __A,
2284 (__v8df) __B,
2285 (__mmask8) -1);
2286}
Michael Kupersteine45af542015-06-30 13:36:19 +00002287static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002288_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2289{
2290 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2291 /* idx */ ,
2292 (__v16sf) __A,
2293 (__v16sf) __B,
2294 (__mmask16) -1);
2295}
2296
Craig Topper67826a52015-02-01 07:35:40 +00002297#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2298 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2299 (__v8di)(__m512i)(B), \
2300 (I), (__v8di)_mm512_setzero_si512(), \
2301 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002302
Craig Topper67826a52015-02-01 07:35:40 +00002303#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
2304 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
2305 (__v16si)(__m512i)(B), \
2306 (I), (__v16si)_mm512_setzero_si512(), \
2307 (__mmask16)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002308
Adam Nemetf893ede2015-01-19 20:12:05 +00002309/* Vector Extract */
2310
2311#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
2312 __m512d __A = (A); \
2313 (__m256d) \
2314 __builtin_ia32_extractf64x4_mask((__v8df)__A, \
2315 (I), \
2316 (__v4df)_mm256_setzero_si256(), \
2317 (__mmask8) -1); })
2318
2319#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
2320 __m512 __A = (A); \
2321 (__m128) \
2322 __builtin_ia32_extractf32x4_mask((__v16sf)__A, \
2323 (I), \
2324 (__v4sf)_mm_setzero_ps(), \
2325 (__mmask8) -1); })
2326
Adam Nemet0d5bb552014-07-28 17:14:40 +00002327/* Vector Blend */
2328
Michael Kupersteine45af542015-06-30 13:36:19 +00002329static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002330_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2331{
2332 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2333 (__v8df) __W,
2334 (__mmask8) __U);
2335}
2336
Michael Kupersteine45af542015-06-30 13:36:19 +00002337static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002338_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2339{
2340 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2341 (__v16sf) __W,
2342 (__mmask16) __U);
2343}
2344
Michael Kupersteine45af542015-06-30 13:36:19 +00002345static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002346_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2347{
2348 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2349 (__v8di) __W,
2350 (__mmask8) __U);
2351}
2352
Michael Kupersteine45af542015-06-30 13:36:19 +00002353static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002354_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2355{
2356 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2357 (__v16si) __W,
2358 (__mmask16) __U);
2359}
2360
2361/* Compare */
2362
Craig Topper53565c62015-02-01 22:27:40 +00002363#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2364 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2365 (__v16sf)(__m512)(B), \
2366 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002367
Craig Topper53565c62015-02-01 22:27:40 +00002368#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2369 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2370 (__v16sf)(__m512)(B), \
2371 (P), (__mmask16)(U), (R)); })
2372
2373#define _mm512_cmp_ps_mask(A, B, P) \
2374 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2375
2376#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2377 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2378
2379#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2380 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2381 (__v8df)(__m512d)(B), \
2382 (P), (__mmask8)-1, (R)); })
2383
2384#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2385 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2386 (__v8df)(__m512d)(B), \
2387 (P), (__mmask8)(U), (R)); })
2388
2389#define _mm512_cmp_pd_mask(A, B, P) \
2390 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2391
2392#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2393 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002394
2395/* Conversion */
2396
Michael Kupersteine45af542015-06-30 13:36:19 +00002397static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002398_mm512_cvttps_epu32(__m512 __A)
2399{
2400 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2401 (__v16si)
2402 _mm512_setzero_si512 (),
2403 (__mmask16) -1,
2404 _MM_FROUND_CUR_DIRECTION);
2405}
2406
Craig Topper72c7d512015-02-01 07:35:35 +00002407#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2408 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2409 (__v16sf)_mm512_setzero_ps(), \
2410 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002411
Craig Topper72c7d512015-02-01 07:35:35 +00002412#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2413 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2414 (__v16sf)_mm512_setzero_ps(), \
2415 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002416
Michael Kupersteine45af542015-06-30 13:36:19 +00002417static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002418_mm512_cvtepi32_pd(__m256i __A)
2419{
2420 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2421 (__v8df)
2422 _mm512_setzero_pd (),
2423 (__mmask8) -1);
2424}
2425
Michael Kupersteine45af542015-06-30 13:36:19 +00002426static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002427_mm512_cvtepu32_pd(__m256i __A)
2428{
2429 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2430 (__v8df)
2431 _mm512_setzero_pd (),
2432 (__mmask8) -1);
2433}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002434
Craig Topper72c7d512015-02-01 07:35:35 +00002435#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2436 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2437 (__v8sf)_mm256_setzero_ps(), \
2438 (__mmask8)-1, (R)); })
2439
2440#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2441 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2442 (__v16hi)_mm256_setzero_si256(), \
2443 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002444
Michael Kupersteine45af542015-06-30 13:36:19 +00002445static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002446_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002447{
2448 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2449 (__v16sf)
2450 _mm512_setzero_ps (),
2451 (__mmask16) -1,
2452 _MM_FROUND_CUR_DIRECTION);
2453}
2454
Michael Kupersteine45af542015-06-30 13:36:19 +00002455static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002456_mm512_cvttps_epi32(__m512 a)
2457{
2458 return (__m512i)
2459 __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
2460 (__v16si) _mm512_setzero_si512 (),
2461 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2462}
2463
Michael Kupersteine45af542015-06-30 13:36:19 +00002464static __inline __m256i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002465_mm512_cvttpd_epi32(__m512d a)
2466{
2467 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
2468 (__v8si)_mm256_setzero_si256(),
2469 (__mmask8) -1,
2470 _MM_FROUND_CUR_DIRECTION);
2471}
2472
Craig Topper72c7d512015-02-01 07:35:35 +00002473#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2474 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2475 (__v8si)_mm256_setzero_si256(), \
2476 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002477
Craig Topper72c7d512015-02-01 07:35:35 +00002478#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2479 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2480 (__v16si)_mm512_setzero_si512(), \
2481 (__mmask16)-1, (R)); })
2482
2483#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2484 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2485 (__v16si)_mm512_setzero_si512(), \
2486 (__mmask16)-1, (R)); })
2487
2488#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2489 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2490 (__v8si)_mm256_setzero_si256(), \
2491 (__mmask8)-1, (R)); })
2492
2493#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2494 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2495 (__v16si)_mm512_setzero_si512(), \
2496 (__mmask16)-1, (R)); })
2497
2498#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2499 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2500 (__v8si)_mm256_setzero_si256(), \
2501 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002502
Adam Nemet63a951e2015-01-14 01:31:17 +00002503/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00002504static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002505_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2506{
2507 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2508}
2509
Michael Kupersteine45af542015-06-30 13:36:19 +00002510static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002511_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2512{
2513 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2514}
2515
Michael Kupersteine45af542015-06-30 13:36:19 +00002516static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002517_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2518{
2519 return __builtin_shufflevector(__a, __b,
2520 2, 18, 3, 19,
2521 2+4, 18+4, 3+4, 19+4,
2522 2+8, 18+8, 3+8, 19+8,
2523 2+12, 18+12, 3+12, 19+12);
2524}
2525
Michael Kupersteine45af542015-06-30 13:36:19 +00002526static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002527_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2528{
2529 return __builtin_shufflevector(__a, __b,
2530 0, 16, 1, 17,
2531 0+4, 16+4, 1+4, 17+4,
2532 0+8, 16+8, 1+8, 17+8,
2533 0+12, 16+12, 1+12, 17+12);
2534}
2535
Adam Nemet0d5bb552014-07-28 17:14:40 +00002536/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002537
Michael Kupersteine45af542015-06-30 13:36:19 +00002538static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002539_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002540{
2541 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2542 (__v16si) __B,
2543 (__mmask16) -1);
2544}
2545
Michael Kupersteine45af542015-06-30 13:36:19 +00002546static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002547_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002548{
2549 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2550 (__v8di) __B,
2551 (__mmask8) -1);
2552}
2553
Adam Nemet0d5bb552014-07-28 17:14:40 +00002554/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002555
Michael Kupersteine45af542015-06-30 13:36:19 +00002556static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002557_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002558{
2559 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2560 (__v16si)
2561 _mm512_setzero_si512 (),
2562 (__mmask16) __U);
2563}
2564
Michael Kupersteine45af542015-06-30 13:36:19 +00002565static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002566_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002567{
2568 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2569 (__v8di)
2570 _mm512_setzero_si512 (),
2571 (__mmask8) __U);
2572}
2573
Michael Kupersteine45af542015-06-30 13:36:19 +00002574static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002575_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002576{
2577 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2578 (__v16sf)
2579 _mm512_setzero_ps (),
2580 (__mmask16) __U);
2581}
2582
Michael Kupersteine45af542015-06-30 13:36:19 +00002583static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002584_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002585{
2586 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2587 (__v8df)
2588 _mm512_setzero_pd (),
2589 (__mmask8) __U);
2590}
2591
Michael Kupersteine45af542015-06-30 13:36:19 +00002592static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002593_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2594{
2595 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2596 (__v16sf)
2597 _mm512_setzero_ps (),
2598 (__mmask16) __U);
2599}
2600
Michael Kupersteine45af542015-06-30 13:36:19 +00002601static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002602_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2603{
2604 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2605 (__v8df)
2606 _mm512_setzero_pd (),
2607 (__mmask8) __U);
2608}
2609
Michael Kupersteine45af542015-06-30 13:36:19 +00002610static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002611_mm512_loadu_pd(double const *__p)
2612{
2613 struct __loadu_pd {
2614 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002615 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002616 return ((struct __loadu_pd*)__p)->__v;
2617}
2618
Michael Kupersteine45af542015-06-30 13:36:19 +00002619static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002620_mm512_loadu_ps(float const *__p)
2621{
2622 struct __loadu_ps {
2623 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002624 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002625 return ((struct __loadu_ps*)__p)->__v;
2626}
2627
Michael Kupersteine45af542015-06-30 13:36:19 +00002628static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002629_mm512_load_ps(double const *__p)
2630{
2631 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2632 (__v16sf)
2633 _mm512_setzero_ps (),
2634 (__mmask16) -1);
2635}
2636
Michael Kupersteine45af542015-06-30 13:36:19 +00002637static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002638_mm512_load_pd(float const *__p)
2639{
2640 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2641 (__v8df)
2642 _mm512_setzero_pd (),
2643 (__mmask8) -1);
2644}
2645
Adam Nemet0d5bb552014-07-28 17:14:40 +00002646/* SIMD store ops */
2647
Michael Kupersteine45af542015-06-30 13:36:19 +00002648static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002649_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002650{
2651 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2652 (__mmask8) __U);
2653}
2654
Michael Kupersteine45af542015-06-30 13:36:19 +00002655static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002656_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002657{
2658 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2659 (__mmask16) __U);
2660}
2661
Michael Kupersteine45af542015-06-30 13:36:19 +00002662static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002663_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002664{
2665 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2666}
2667
Michael Kupersteine45af542015-06-30 13:36:19 +00002668static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002669_mm512_storeu_pd(void *__P, __m512d __A)
2670{
2671 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2672}
2673
Michael Kupersteine45af542015-06-30 13:36:19 +00002674static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002675_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002676{
2677 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2678 (__mmask16) __U);
2679}
2680
Michael Kupersteine45af542015-06-30 13:36:19 +00002681static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002682_mm512_storeu_ps(void *__P, __m512 __A)
2683{
2684 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2685}
2686
Michael Kupersteine45af542015-06-30 13:36:19 +00002687static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002688_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002689{
Adam Nemetc0cff242015-01-16 18:51:50 +00002690 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002691}
2692
Michael Kupersteine45af542015-06-30 13:36:19 +00002693static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002694_mm512_store_pd(void *__P, __m512d __A)
2695{
2696 *(__m512d*)__P = __A;
2697}
2698
Michael Kupersteine45af542015-06-30 13:36:19 +00002699static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002700_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2701{
2702 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2703 (__mmask16) __U);
2704}
2705
Michael Kupersteine45af542015-06-30 13:36:19 +00002706static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002707_mm512_store_ps(void *__P, __m512 __A)
2708{
2709 *(__m512*)__P = __A;
2710}
2711
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002712/* Mask ops */
2713
Michael Kupersteine45af542015-06-30 13:36:19 +00002714static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002715_mm512_knot(__mmask16 __M)
2716{
2717 return __builtin_ia32_knothi(__M);
2718}
2719
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002720/* Integer compare */
2721
Michael Kupersteine45af542015-06-30 13:36:19 +00002722static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002723_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2724 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2725 (__mmask16)-1);
2726}
2727
Michael Kupersteine45af542015-06-30 13:36:19 +00002728static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002729_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2730 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2731 __u);
2732}
2733
Michael Kupersteine45af542015-06-30 13:36:19 +00002734static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002735_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2736 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2737 (__mmask16)-1);
2738}
2739
Michael Kupersteine45af542015-06-30 13:36:19 +00002740static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002741_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2742 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2743 __u);
2744}
2745
Michael Kupersteine45af542015-06-30 13:36:19 +00002746static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002747_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2748 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2749 __u);
2750}
2751
Michael Kupersteine45af542015-06-30 13:36:19 +00002752static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002753_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2754 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2755 (__mmask8)-1);
2756}
2757
Michael Kupersteine45af542015-06-30 13:36:19 +00002758static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002759_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2760 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2761 (__mmask8)-1);
2762}
2763
Michael Kupersteine45af542015-06-30 13:36:19 +00002764static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002765_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2766 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2767 __u);
2768}
2769
Michael Kupersteine45af542015-06-30 13:36:19 +00002770static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002771_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2772 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2773 (__mmask16)-1);
2774}
2775
Michael Kupersteine45af542015-06-30 13:36:19 +00002776static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002777_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2778 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2779 __u);
2780}
2781
Michael Kupersteine45af542015-06-30 13:36:19 +00002782static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002783_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2784 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2785 (__mmask16)-1);
2786}
2787
Michael Kupersteine45af542015-06-30 13:36:19 +00002788static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002789_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2790 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2791 __u);
2792}
2793
Michael Kupersteine45af542015-06-30 13:36:19 +00002794static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002795_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2796 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2797 (__mmask8)-1);
2798}
2799
Michael Kupersteine45af542015-06-30 13:36:19 +00002800static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002801_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2802 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2803 __u);
2804}
2805
Michael Kupersteine45af542015-06-30 13:36:19 +00002806static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002807_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2808 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2809 (__mmask8)-1);
2810}
2811
Michael Kupersteine45af542015-06-30 13:36:19 +00002812static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002813_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2814 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2815 __u);
2816}
2817
Michael Kupersteine45af542015-06-30 13:36:19 +00002818static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002819_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2820 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2821 (__mmask16)-1);
2822}
2823
Michael Kupersteine45af542015-06-30 13:36:19 +00002824static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002825_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2826 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2827 __u);
2828}
2829
Michael Kupersteine45af542015-06-30 13:36:19 +00002830static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002831_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2832 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2833 (__mmask16)-1);
2834}
2835
Michael Kupersteine45af542015-06-30 13:36:19 +00002836static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002837_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2838 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2839 __u);
2840}
2841
Michael Kupersteine45af542015-06-30 13:36:19 +00002842static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002843_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2844 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2845 __u);
2846}
2847
Michael Kupersteine45af542015-06-30 13:36:19 +00002848static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002849_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2850 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2851 (__mmask8)-1);
2852}
2853
Michael Kupersteine45af542015-06-30 13:36:19 +00002854static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002855_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2856 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2857 (__mmask8)-1);
2858}
2859
Michael Kupersteine45af542015-06-30 13:36:19 +00002860static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002861_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2862 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2863 __u);
2864}
2865
Michael Kupersteine45af542015-06-30 13:36:19 +00002866static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002867_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2868 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2869 (__mmask16)-1);
2870}
2871
Michael Kupersteine45af542015-06-30 13:36:19 +00002872static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002873_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2874 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2875 __u);
2876}
2877
Michael Kupersteine45af542015-06-30 13:36:19 +00002878static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002879_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2880 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2881 (__mmask16)-1);
2882}
2883
Michael Kupersteine45af542015-06-30 13:36:19 +00002884static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002885_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2886 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2887 __u);
2888}
2889
Michael Kupersteine45af542015-06-30 13:36:19 +00002890static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002891_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2892 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2893 (__mmask8)-1);
2894}
2895
Michael Kupersteine45af542015-06-30 13:36:19 +00002896static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002897_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2898 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2899 __u);
2900}
2901
Michael Kupersteine45af542015-06-30 13:36:19 +00002902static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002903_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2904 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2905 (__mmask8)-1);
2906}
2907
Michael Kupersteine45af542015-06-30 13:36:19 +00002908static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002909_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2910 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2911 __u);
2912}
2913
Michael Kupersteine45af542015-06-30 13:36:19 +00002914static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002915_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2916 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2917 (__mmask16)-1);
2918}
2919
Michael Kupersteine45af542015-06-30 13:36:19 +00002920static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002921_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2922 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2923 __u);
2924}
2925
Michael Kupersteine45af542015-06-30 13:36:19 +00002926static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002927_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2928 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2929 (__mmask16)-1);
2930}
2931
Michael Kupersteine45af542015-06-30 13:36:19 +00002932static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002933_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2934 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2935 __u);
2936}
2937
Michael Kupersteine45af542015-06-30 13:36:19 +00002938static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002939_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2940 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2941 (__mmask8)-1);
2942}
2943
Michael Kupersteine45af542015-06-30 13:36:19 +00002944static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002945_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2946 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2947 __u);
2948}
2949
Michael Kupersteine45af542015-06-30 13:36:19 +00002950static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002951_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2952 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2953 (__mmask8)-1);
2954}
2955
Michael Kupersteine45af542015-06-30 13:36:19 +00002956static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002957_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2958 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2959 __u);
2960}
2961
Michael Kupersteine45af542015-06-30 13:36:19 +00002962static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002963_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2964 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2965 (__mmask16)-1);
2966}
2967
Michael Kupersteine45af542015-06-30 13:36:19 +00002968static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002969_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2970 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2971 __u);
2972}
2973
Michael Kupersteine45af542015-06-30 13:36:19 +00002974static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002975_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2976 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2977 (__mmask16)-1);
2978}
2979
Michael Kupersteine45af542015-06-30 13:36:19 +00002980static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002981_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2982 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2983 __u);
2984}
2985
Michael Kupersteine45af542015-06-30 13:36:19 +00002986static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002987_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2988 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2989 (__mmask8)-1);
2990}
2991
Michael Kupersteine45af542015-06-30 13:36:19 +00002992static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002993_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2994 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2995 __u);
2996}
2997
Michael Kupersteine45af542015-06-30 13:36:19 +00002998static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002999_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3000 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3001 (__mmask8)-1);
3002}
3003
Michael Kupersteine45af542015-06-30 13:36:19 +00003004static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003005_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3006 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3007 __u);
3008}
3009
3010#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
3011 __m512i __a = (a); \
3012 __m512i __b = (b); \
3013 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3014 (__mmask16)-1); })
3015
3016#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
3017 __m512i __a = (a); \
3018 __m512i __b = (b); \
3019 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3020 (__mmask16)-1); })
3021
3022#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
3023 __m512i __a = (a); \
3024 __m512i __b = (b); \
3025 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3026 (__mmask8)-1); })
3027
3028#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
3029 __m512i __a = (a); \
3030 __m512i __b = (b); \
3031 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3032 (__mmask8)-1); })
3033
3034#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
3035 __m512i __a = (a); \
3036 __m512i __b = (b); \
3037 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3038 (__mmask16)(m)); })
3039
3040#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
3041 __m512i __a = (a); \
3042 __m512i __b = (b); \
3043 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
3044 (__mmask16)(m)); })
3045
3046#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
3047 __m512i __a = (a); \
3048 __m512i __b = (b); \
3049 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3050 (__mmask8)(m)); })
3051
3052#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
3053 __m512i __a = (a); \
3054 __m512i __b = (b); \
3055 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
3056 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00003057
Michael Kupersteine45af542015-06-30 13:36:19 +00003058#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00003059
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003060#endif // __AVX512FINTRIN_H