blob: 0991144536466b6e3895c0f4bd07391023cae06f [file] [log] [blame]
Adam Nemet9a3ea602014-07-28 17:14:38 +00001/*===---- avx512fintrin.h - AVX2 intrinsics --------------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
30typedef double __v8df __attribute__((__vector_size__(64)));
31typedef float __v16sf __attribute__((__vector_size__(64)));
32typedef long long __v8di __attribute__((__vector_size__(64)));
33typedef int __v16si __attribute__((__vector_size__(64)));
34
35typedef float __m512 __attribute__((__vector_size__(64)));
36typedef double __m512d __attribute__((__vector_size__(64)));
37typedef long long __m512i __attribute__((__vector_size__(64)));
38
39typedef unsigned char __mmask8;
40typedef unsigned short __mmask16;
41
42/* Rounding mode macros. */
43#define _MM_FROUND_TO_NEAREST_INT 0x00
44#define _MM_FROUND_TO_NEG_INF 0x01
45#define _MM_FROUND_TO_POS_INF 0x02
46#define _MM_FROUND_TO_ZERO 0x03
47#define _MM_FROUND_CUR_DIRECTION 0x04
48
Eric Christopher4d1851682015-06-17 07:09:20 +000049/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +000050#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +000051
Adam Nemet0d5bb552014-07-28 17:14:40 +000052/* Create vectors with repeated elements */
53
Michael Kupersteine45af542015-06-30 13:36:19 +000054static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000055_mm512_setzero_si512(void)
56{
57 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
58}
59
Michael Kupersteine45af542015-06-30 13:36:19 +000060static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000061_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
62{
63 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
64 (__v16si)
65 _mm512_setzero_si512 (),
66 __M);
67}
68
Michael Kupersteine45af542015-06-30 13:36:19 +000069static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +000070_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
71{
72#ifdef __x86_64__
73 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
74 (__v8di)
75 _mm512_setzero_si512 (),
76 __M);
77#else
78 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
79 (__v8di)
80 _mm512_setzero_si512 (),
81 __M);
82#endif
83}
84
Michael Kupersteine45af542015-06-30 13:36:19 +000085static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +000086_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000087{
88 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
89 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
90}
Michael Kupersteine45af542015-06-30 13:36:19 +000091static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +000092_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000093{
94 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
95}
Adam Nemet0d5bb552014-07-28 17:14:40 +000096
Michael Kupersteine45af542015-06-30 13:36:19 +000097static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +000098_mm512_set1_ps(float __w)
99{
100 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
101 __w, __w, __w, __w, __w, __w, __w, __w };
102}
103
Michael Kupersteine45af542015-06-30 13:36:19 +0000104static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000105_mm512_set1_pd(double __w)
106{
107 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
108}
109
Michael Kupersteine45af542015-06-30 13:36:19 +0000110static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000111_mm512_set1_epi32(int __s)
112{
113 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
114 __s, __s, __s, __s, __s, __s, __s, __s };
115}
116
Michael Kupersteine45af542015-06-30 13:36:19 +0000117static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000118_mm512_set1_epi64(long long __d)
119{
120 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
121}
122
Michael Kupersteine45af542015-06-30 13:36:19 +0000123static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000124_mm512_broadcastss_ps(__m128 __X)
125{
126 float __f = __X[0];
127 return (__v16sf){ __f, __f, __f, __f,
128 __f, __f, __f, __f,
129 __f, __f, __f, __f,
130 __f, __f, __f, __f };
131}
132
Michael Kupersteine45af542015-06-30 13:36:19 +0000133static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000134_mm512_broadcastsd_pd(__m128d __X)
135{
136 double __d = __X[0];
137 return (__v8df){ __d, __d, __d, __d,
138 __d, __d, __d, __d };
139}
140
Adam Nemetc871ff92014-07-30 16:51:24 +0000141/* Cast between vector types */
142
Michael Kupersteine45af542015-06-30 13:36:19 +0000143static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000144_mm512_castpd256_pd512(__m256d __a)
145{
146 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
147}
148
Michael Kupersteine45af542015-06-30 13:36:19 +0000149static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000150_mm512_castps256_ps512(__m256 __a)
151{
152 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
153 -1, -1, -1, -1, -1, -1, -1, -1);
154}
155
Michael Kupersteine45af542015-06-30 13:36:19 +0000156static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000157_mm512_castpd512_pd128(__m512d __a)
158{
159 return __builtin_shufflevector(__a, __a, 0, 1);
160}
161
Michael Kupersteine45af542015-06-30 13:36:19 +0000162static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000163_mm512_castps512_ps128(__m512 __a)
164{
165 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
166}
167
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000168/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000169static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000170_mm512_and_epi32(__m512i __a, __m512i __b)
171{
172 return __a & __b;
173}
174
Michael Kupersteine45af542015-06-30 13:36:19 +0000175static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000176_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
177{
178 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
179 (__v16si) __b,
180 (__v16si) __src,
181 (__mmask16) __k);
182}
Michael Kupersteine45af542015-06-30 13:36:19 +0000183static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000184_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
185{
186 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
187 (__v16si) __b,
188 (__v16si)
189 _mm512_setzero_si512 (),
190 (__mmask16) __k);
191}
192
Michael Kupersteine45af542015-06-30 13:36:19 +0000193static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000194_mm512_and_epi64(__m512i __a, __m512i __b)
195{
196 return __a & __b;
197}
198
Michael Kupersteine45af542015-06-30 13:36:19 +0000199static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000200_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
201{
202 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
203 (__v8di) __b,
204 (__v8di) __src,
205 (__mmask8) __k);
206}
Michael Kupersteine45af542015-06-30 13:36:19 +0000207static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000208_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
209{
210 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
211 (__v8di) __b,
212 (__v8di)
213 _mm512_setzero_si512 (),
214 (__mmask8) __k);
215}
216
Michael Kupersteine45af542015-06-30 13:36:19 +0000217static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000218_mm512_andnot_epi32 (__m512i __A, __m512i __B)
219{
220 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
221 (__v16si) __B,
222 (__v16si)
223 _mm512_setzero_si512 (),
224 (__mmask16) -1);
225}
226
Michael Kupersteine45af542015-06-30 13:36:19 +0000227static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000228_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
229{
230 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
231 (__v16si) __B,
232 (__v16si) __W,
233 (__mmask16) __U);
234}
235
Michael Kupersteine45af542015-06-30 13:36:19 +0000236static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000237_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
238{
239 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
240 (__v16si) __B,
241 (__v16si)
242 _mm512_setzero_si512 (),
243 (__mmask16) __U);
244}
245
Michael Kupersteine45af542015-06-30 13:36:19 +0000246static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000247_mm512_andnot_epi64 (__m512i __A, __m512i __B)
248{
249 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
250 (__v8di) __B,
251 (__v8di)
252 _mm512_setzero_si512 (),
253 (__mmask8) -1);
254}
255
Michael Kupersteine45af542015-06-30 13:36:19 +0000256static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000257_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
258{
259 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
260 (__v8di) __B,
261 (__v8di) __W, __U);
262}
263
Michael Kupersteine45af542015-06-30 13:36:19 +0000264static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000265_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
266{
267 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
268 (__v8di) __B,
269 (__v8di)
270 _mm512_setzero_pd (),
271 __U);
272}
Michael Kupersteine45af542015-06-30 13:36:19 +0000273static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000274_mm512_or_epi32(__m512i __a, __m512i __b)
275{
276 return __a | __b;
277}
278
Michael Kupersteine45af542015-06-30 13:36:19 +0000279static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000280_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
281{
282 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
283 (__v16si) __b,
284 (__v16si) __src,
285 (__mmask16) __k);
286}
Michael Kupersteine45af542015-06-30 13:36:19 +0000287static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000288_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
289{
290 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
291 (__v16si) __b,
292 (__v16si)
293 _mm512_setzero_si512 (),
294 (__mmask16) __k);
295}
296
Michael Kupersteine45af542015-06-30 13:36:19 +0000297static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000298_mm512_or_epi64(__m512i __a, __m512i __b)
299{
300 return __a | __b;
301}
302
Michael Kupersteine45af542015-06-30 13:36:19 +0000303static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000304_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
305{
306 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
307 (__v8di) __b,
308 (__v8di) __src,
309 (__mmask8) __k);
310}
Michael Kupersteine45af542015-06-30 13:36:19 +0000311static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000312_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
313{
314 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
315 (__v8di) __b,
316 (__v8di)
317 _mm512_setzero_si512 (),
318 (__mmask8) __k);
319}
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000322_mm512_xor_epi32(__m512i __a, __m512i __b)
323{
324 return __a ^ __b;
325}
326
Michael Kupersteine45af542015-06-30 13:36:19 +0000327static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000328_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
329{
330 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
331 (__v16si) __b,
332 (__v16si) __src,
333 (__mmask16) __k);
334}
Michael Kupersteine45af542015-06-30 13:36:19 +0000335static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000336_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
337{
338 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
339 (__v16si) __b,
340 (__v16si)
341 _mm512_setzero_si512 (),
342 (__mmask16) __k);
343}
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000346_mm512_xor_epi64(__m512i __a, __m512i __b)
347{
348 return __a ^ __b;
349}
350
Michael Kupersteine45af542015-06-30 13:36:19 +0000351static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000352_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
353{
354 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
355 (__v8di) __b,
356 (__v8di) __src,
357 (__mmask8) __k);
358}
Michael Kupersteine45af542015-06-30 13:36:19 +0000359static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000360_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
361{
362 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
363 (__v8di) __b,
364 (__v8di)
365 _mm512_setzero_si512 (),
366 (__mmask8) __k);
367}
368
Michael Kupersteine45af542015-06-30 13:36:19 +0000369static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000370_mm512_and_si512(__m512i __a, __m512i __b)
371{
372 return __a & __b;
373}
374
Michael Kupersteine45af542015-06-30 13:36:19 +0000375static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000376_mm512_or_si512(__m512i __a, __m512i __b)
377{
378 return __a | __b;
379}
380
Michael Kupersteine45af542015-06-30 13:36:19 +0000381static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000382_mm512_xor_si512(__m512i __a, __m512i __b)
383{
384 return __a ^ __b;
385}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000386/* Arithmetic */
387
Michael Kupersteine45af542015-06-30 13:36:19 +0000388static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000389_mm512_add_pd(__m512d __a, __m512d __b)
390{
391 return __a + __b;
392}
393
Michael Kupersteine45af542015-06-30 13:36:19 +0000394static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000395_mm512_add_ps(__m512 __a, __m512 __b)
396{
397 return __a + __b;
398}
399
Michael Kupersteine45af542015-06-30 13:36:19 +0000400static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000401_mm512_mul_pd(__m512d __a, __m512d __b)
402{
403 return __a * __b;
404}
405
Michael Kupersteine45af542015-06-30 13:36:19 +0000406static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000407_mm512_mul_ps(__m512 __a, __m512 __b)
408{
409 return __a * __b;
410}
411
Michael Kupersteine45af542015-06-30 13:36:19 +0000412static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000413_mm512_sub_pd(__m512d __a, __m512d __b)
414{
415 return __a - __b;
416}
417
Michael Kupersteine45af542015-06-30 13:36:19 +0000418static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000419_mm512_sub_ps(__m512 __a, __m512 __b)
420{
421 return __a - __b;
422}
423
Michael Kupersteine45af542015-06-30 13:36:19 +0000424static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000425_mm512_add_epi64 (__m512i __A, __m512i __B)
426{
427 return (__m512i) ((__v8di) __A + (__v8di) __B);
428}
429
Michael Kupersteine45af542015-06-30 13:36:19 +0000430static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000431_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
432{
433 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
434 (__v8di) __B,
435 (__v8di) __W,
436 (__mmask8) __U);
437}
438
Michael Kupersteine45af542015-06-30 13:36:19 +0000439static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000440_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
441{
442 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
443 (__v8di) __B,
444 (__v8di)
445 _mm512_setzero_si512 (),
446 (__mmask8) __U);
447}
448
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000450_mm512_sub_epi64 (__m512i __A, __m512i __B)
451{
452 return (__m512i) ((__v8di) __A - (__v8di) __B);
453}
454
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000456_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
457{
458 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
459 (__v8di) __B,
460 (__v8di) __W,
461 (__mmask8) __U);
462}
463
Michael Kupersteine45af542015-06-30 13:36:19 +0000464static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000465_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
466{
467 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
468 (__v8di) __B,
469 (__v8di)
470 _mm512_setzero_si512 (),
471 (__mmask8) __U);
472}
473
Michael Kupersteine45af542015-06-30 13:36:19 +0000474static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000475_mm512_add_epi32 (__m512i __A, __m512i __B)
476{
477 return (__m512i) ((__v16si) __A + (__v16si) __B);
478}
479
Michael Kupersteine45af542015-06-30 13:36:19 +0000480static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000481_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
482{
483 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
484 (__v16si) __B,
485 (__v16si) __W,
486 (__mmask16) __U);
487}
488
Michael Kupersteine45af542015-06-30 13:36:19 +0000489static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000490_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
491{
492 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
493 (__v16si) __B,
494 (__v16si)
495 _mm512_setzero_si512 (),
496 (__mmask16) __U);
497}
498
Michael Kupersteine45af542015-06-30 13:36:19 +0000499static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000500_mm512_sub_epi32 (__m512i __A, __m512i __B)
501{
502 return (__m512i) ((__v16si) __A - (__v16si) __B);
503}
504
Michael Kupersteine45af542015-06-30 13:36:19 +0000505static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000506_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
507{
508 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
509 (__v16si) __B,
510 (__v16si) __W,
511 (__mmask16) __U);
512}
513
Michael Kupersteine45af542015-06-30 13:36:19 +0000514static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000515_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
516{
517 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
518 (__v16si) __B,
519 (__v16si)
520 _mm512_setzero_si512 (),
521 (__mmask16) __U);
522}
523
Michael Kupersteine45af542015-06-30 13:36:19 +0000524static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000525_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000526{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000527 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
528 (__v8df) __B,
529 (__v8df)
530 _mm512_setzero_pd (),
531 (__mmask8) -1,
532 _MM_FROUND_CUR_DIRECTION);
533}
534
Michael Kupersteine45af542015-06-30 13:36:19 +0000535static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000536_mm512_max_ps(__m512 __A, __m512 __B)
537{
538 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
539 (__v16sf) __B,
540 (__v16sf)
541 _mm512_setzero_ps (),
542 (__mmask16) -1,
543 _MM_FROUND_CUR_DIRECTION);
544}
545
546static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000547__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000548_mm512_max_epi32(__m512i __A, __m512i __B)
549{
550 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
551 (__v16si) __B,
552 (__v16si)
553 _mm512_setzero_si512 (),
554 (__mmask16) -1);
555}
556
Michael Kupersteine45af542015-06-30 13:36:19 +0000557static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000558_mm512_max_epu32(__m512i __A, __m512i __B)
559{
560 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
561 (__v16si) __B,
562 (__v16si)
563 _mm512_setzero_si512 (),
564 (__mmask16) -1);
565}
566
Michael Kupersteine45af542015-06-30 13:36:19 +0000567static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000568_mm512_max_epi64(__m512i __A, __m512i __B)
569{
570 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
571 (__v8di) __B,
572 (__v8di)
573 _mm512_setzero_si512 (),
574 (__mmask8) -1);
575}
576
Michael Kupersteine45af542015-06-30 13:36:19 +0000577static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000578_mm512_max_epu64(__m512i __A, __m512i __B)
579{
580 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
581 (__v8di) __B,
582 (__v8di)
583 _mm512_setzero_si512 (),
584 (__mmask8) -1);
585}
586
Michael Kupersteine45af542015-06-30 13:36:19 +0000587static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000588_mm512_min_pd(__m512d __A, __m512d __B)
589{
590 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
591 (__v8df) __B,
592 (__v8df)
593 _mm512_setzero_pd (),
594 (__mmask8) -1,
595 _MM_FROUND_CUR_DIRECTION);
596}
597
Michael Kupersteine45af542015-06-30 13:36:19 +0000598static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000599_mm512_min_ps(__m512 __A, __m512 __B)
600{
601 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
602 (__v16sf) __B,
603 (__v16sf)
604 _mm512_setzero_ps (),
605 (__mmask16) -1,
606 _MM_FROUND_CUR_DIRECTION);
607}
608
609static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000610__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000611_mm512_min_epi32(__m512i __A, __m512i __B)
612{
613 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
614 (__v16si) __B,
615 (__v16si)
616 _mm512_setzero_si512 (),
617 (__mmask16) -1);
618}
619
Michael Kupersteine45af542015-06-30 13:36:19 +0000620static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000621_mm512_min_epu32(__m512i __A, __m512i __B)
622{
623 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
624 (__v16si) __B,
625 (__v16si)
626 _mm512_setzero_si512 (),
627 (__mmask16) -1);
628}
629
Michael Kupersteine45af542015-06-30 13:36:19 +0000630static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000631_mm512_min_epi64(__m512i __A, __m512i __B)
632{
633 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
634 (__v8di) __B,
635 (__v8di)
636 _mm512_setzero_si512 (),
637 (__mmask8) -1);
638}
639
Michael Kupersteine45af542015-06-30 13:36:19 +0000640static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000641_mm512_min_epu64(__m512i __A, __m512i __B)
642{
643 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
644 (__v8di) __B,
645 (__v8di)
646 _mm512_setzero_si512 (),
647 (__mmask8) -1);
648}
649
Michael Kupersteine45af542015-06-30 13:36:19 +0000650static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000651_mm512_mul_epi32(__m512i __X, __m512i __Y)
652{
653 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
654 (__v16si) __Y,
655 (__v8di)
656 _mm512_setzero_si512 (),
657 (__mmask8) -1);
658}
659
Michael Kupersteine45af542015-06-30 13:36:19 +0000660static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000661_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
662{
663 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
664 (__v16si) __Y,
665 (__v8di) __W, __M);
666}
667
Michael Kupersteine45af542015-06-30 13:36:19 +0000668static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000669_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
670{
671 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
672 (__v16si) __Y,
673 (__v8di)
674 _mm512_setzero_si512 (),
675 __M);
676}
677
Michael Kupersteine45af542015-06-30 13:36:19 +0000678static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000679_mm512_mul_epu32(__m512i __X, __m512i __Y)
680{
681 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
682 (__v16si) __Y,
683 (__v8di)
684 _mm512_setzero_si512 (),
685 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000686}
687
Michael Kupersteine45af542015-06-30 13:36:19 +0000688static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000689_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
690{
691 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
692 (__v16si) __Y,
693 (__v8di) __W, __M);
694}
695
Michael Kupersteine45af542015-06-30 13:36:19 +0000696static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000697_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
698{
699 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
700 (__v16si) __Y,
701 (__v8di)
702 _mm512_setzero_si512 (),
703 __M);
704}
705
Michael Kupersteine45af542015-06-30 13:36:19 +0000706static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000707_mm512_mullo_epi32 (__m512i __A, __m512i __B)
708{
709 return (__m512i) ((__v16si) __A * (__v16si) __B);
710}
711
Michael Kupersteine45af542015-06-30 13:36:19 +0000712static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000713_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
714{
715 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
716 (__v16si) __B,
717 (__v16si)
718 _mm512_setzero_si512 (),
719 __M);
720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000723_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
724{
725 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
726 (__v16si) __B,
727 (__v16si) __W, __M);
728}
729
Michael Kupersteine45af542015-06-30 13:36:19 +0000730static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000731_mm512_sqrt_pd(__m512d a)
732{
733 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
734 (__v8df) _mm512_setzero_pd (),
735 (__mmask8) -1,
736 _MM_FROUND_CUR_DIRECTION);
737}
738
Michael Kupersteine45af542015-06-30 13:36:19 +0000739static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000740_mm512_sqrt_ps(__m512 a)
741{
742 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
743 (__v16sf) _mm512_setzero_ps (),
744 (__mmask16) -1,
745 _MM_FROUND_CUR_DIRECTION);
746}
747
Michael Kupersteine45af542015-06-30 13:36:19 +0000748static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000749_mm512_rsqrt14_pd(__m512d __A)
750{
751 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
752 (__v8df)
753 _mm512_setzero_pd (),
754 (__mmask8) -1);}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000757_mm512_rsqrt14_ps(__m512 __A)
758{
759 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
760 (__v16sf)
761 _mm512_setzero_ps (),
762 (__mmask16) -1);
763}
764
Michael Kupersteine45af542015-06-30 13:36:19 +0000765static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000766_mm_rsqrt14_ss(__m128 __A, __m128 __B)
767{
768 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
769 (__v4sf) __B,
770 (__v4sf)
771 _mm_setzero_ps (),
772 (__mmask8) -1);
773}
774
Michael Kupersteine45af542015-06-30 13:36:19 +0000775static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000776_mm_rsqrt14_sd(__m128d __A, __m128d __B)
777{
778 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
779 (__v2df) __B,
780 (__v2df)
781 _mm_setzero_pd (),
782 (__mmask8) -1);
783}
784
Michael Kupersteine45af542015-06-30 13:36:19 +0000785static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000786_mm512_rcp14_pd(__m512d __A)
787{
788 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
789 (__v8df)
790 _mm512_setzero_pd (),
791 (__mmask8) -1);
792}
793
Michael Kupersteine45af542015-06-30 13:36:19 +0000794static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000795_mm512_rcp14_ps(__m512 __A)
796{
797 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
798 (__v16sf)
799 _mm512_setzero_ps (),
800 (__mmask16) -1);
801}
Michael Kupersteine45af542015-06-30 13:36:19 +0000802static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000803_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000804{
805 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
806 (__v4sf) __B,
807 (__v4sf)
808 _mm_setzero_ps (),
809 (__mmask8) -1);
810}
811
Michael Kupersteine45af542015-06-30 13:36:19 +0000812static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000813_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000814{
815 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
816 (__v2df) __B,
817 (__v2df)
818 _mm_setzero_pd (),
819 (__mmask8) -1);
820}
821
Michael Kupersteine45af542015-06-30 13:36:19 +0000822static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000823_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000824{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000825 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
826 _MM_FROUND_FLOOR,
827 (__v16sf) __A, -1,
828 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000829}
830
Michael Kupersteine45af542015-06-30 13:36:19 +0000831static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000832_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000833{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000834 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
835 _MM_FROUND_FLOOR,
836 (__v8df) __A, -1,
837 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000838}
839
Michael Kupersteine45af542015-06-30 13:36:19 +0000840static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000841_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000842{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000843 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
844 _MM_FROUND_CEIL,
845 (__v16sf) __A, -1,
846 _MM_FROUND_CUR_DIRECTION);
847}
848
Michael Kupersteine45af542015-06-30 13:36:19 +0000849static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000850_mm512_ceil_pd(__m512d __A)
851{
852 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
853 _MM_FROUND_CEIL,
854 (__v8df) __A, -1,
855 _MM_FROUND_CUR_DIRECTION);
856}
857
Michael Kupersteine45af542015-06-30 13:36:19 +0000858static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000859_mm512_abs_epi64(__m512i __A)
860{
861 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
862 (__v8di)
863 _mm512_setzero_si512 (),
864 (__mmask8) -1);
865}
866
Michael Kupersteine45af542015-06-30 13:36:19 +0000867static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000868_mm512_abs_epi32(__m512i __A)
869{
870 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
871 (__v16si)
872 _mm512_setzero_si512 (),
873 (__mmask16) -1);
874}
875
Craig Topper72c7d512015-02-01 07:35:35 +0000876#define _mm512_roundscale_ps(A, B) __extension__ ({ \
877 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
878 -1, _MM_FROUND_CUR_DIRECTION); })
879
880#define _mm512_roundscale_pd(A, B) __extension__ ({ \
881 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
882 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +0000883
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000884#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
885 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
886 (__v8df) (B), (__v8df) (C), \
887 (__mmask8) -1, (R)); })
888
889
890#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
891 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
892 (__v8df) (B), (__v8df) (C), \
893 (__mmask8) (U), (R)); })
894
895
896#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
897 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
898 (__v8df) (B), (__v8df) (C), \
899 (__mmask8) (U), (R)); })
900
901
902#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
903 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
904 (__v8df) (B), (__v8df) (C), \
905 (__mmask8) (U), (R)); })
906
907
908#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
909 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
910 (__v8df) (B), -(__v8df) (C), \
911 (__mmask8) -1, (R)); })
912
913
914#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
915 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
916 (__v8df) (B), -(__v8df) (C), \
917 (__mmask8) (U), (R)); })
918
919
920#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
921 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
922 (__v8df) (B), -(__v8df) (C), \
923 (__mmask8) (U), (R)); })
924
925
926#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
927 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
928 (__v8df) (B), (__v8df) (C), \
929 (__mmask8) -1, (R)); })
930
931
932#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
933 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
934 (__v8df) (B), (__v8df) (C), \
935 (__mmask8) (U), (R)); })
936
937
938#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
939 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
940 (__v8df) (B), (__v8df) (C), \
941 (__mmask8) (U), (R)); })
942
943
944#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
945 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
946 (__v8df) (B), -(__v8df) (C), \
947 (__mmask8) -1, (R)); })
948
949
950#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
951 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
952 (__v8df) (B), -(__v8df) (C), \
953 (__mmask8) (U), (R)); })
954
955
Michael Kupersteine45af542015-06-30 13:36:19 +0000956static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +0000957_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
958{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000959 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
960 (__v8df) __B,
961 (__v8df) __C,
962 (__mmask8) -1,
963 _MM_FROUND_CUR_DIRECTION);
964}
965
Michael Kupersteine45af542015-06-30 13:36:19 +0000966static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000967_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
968{
969 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
970 (__v8df) __B,
971 (__v8df) __C,
972 (__mmask8) __U,
973 _MM_FROUND_CUR_DIRECTION);
974}
975
Michael Kupersteine45af542015-06-30 13:36:19 +0000976static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000977_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
978{
979 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
980 (__v8df) __B,
981 (__v8df) __C,
982 (__mmask8) __U,
983 _MM_FROUND_CUR_DIRECTION);
984}
985
Michael Kupersteine45af542015-06-30 13:36:19 +0000986static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000987_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
988{
989 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
990 (__v8df) __B,
991 (__v8df) __C,
992 (__mmask8) __U,
993 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +0000994}
995
Michael Kupersteine45af542015-06-30 13:36:19 +0000996static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +0000997_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
998{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000999 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1000 (__v8df) __B,
1001 -(__v8df) __C,
1002 (__mmask8) -1,
1003 _MM_FROUND_CUR_DIRECTION);
1004}
1005
Michael Kupersteine45af542015-06-30 13:36:19 +00001006static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001007_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1008{
1009 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1010 (__v8df) __B,
1011 -(__v8df) __C,
1012 (__mmask8) __U,
1013 _MM_FROUND_CUR_DIRECTION);
1014}
1015
Michael Kupersteine45af542015-06-30 13:36:19 +00001016static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001017_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1018{
1019 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1020 (__v8df) __B,
1021 -(__v8df) __C,
1022 (__mmask8) __U,
1023 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001024}
1025
Michael Kupersteine45af542015-06-30 13:36:19 +00001026static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001027_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1028{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001029 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1030 (__v8df) __B,
1031 (__v8df) __C,
1032 (__mmask8) -1,
1033 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001034}
1035
Michael Kupersteine45af542015-06-30 13:36:19 +00001036static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001037_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1038{
1039 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1040 (__v8df) __B,
1041 (__v8df) __C,
1042 (__mmask8) __U,
1043 _MM_FROUND_CUR_DIRECTION);
1044}
1045
Michael Kupersteine45af542015-06-30 13:36:19 +00001046static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001047_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1048{
1049 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1050 (__v8df) __B,
1051 (__v8df) __C,
1052 (__mmask8) __U,
1053 _MM_FROUND_CUR_DIRECTION);
1054}
1055
Michael Kupersteine45af542015-06-30 13:36:19 +00001056static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001057_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1058{
1059 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1060 (__v8df) __B,
1061 -(__v8df) __C,
1062 (__mmask8) -1,
1063 _MM_FROUND_CUR_DIRECTION);
1064}
1065
Michael Kupersteine45af542015-06-30 13:36:19 +00001066static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001067_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1068{
1069 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1070 (__v8df) __B,
1071 -(__v8df) __C,
1072 (__mmask8) __U,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
1076#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1077 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1078 (__v16sf) (B), (__v16sf) (C), \
1079 (__mmask16) -1, (R)); })
1080
1081
1082#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1083 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1084 (__v16sf) (B), (__v16sf) (C), \
1085 (__mmask16) (U), (R)); })
1086
1087
1088#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1089 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1090 (__v16sf) (B), (__v16sf) (C), \
1091 (__mmask16) (U), (R)); })
1092
1093
1094#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1095 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1096 (__v16sf) (B), (__v16sf) (C), \
1097 (__mmask16) (U), (R)); })
1098
1099
1100#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1101 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1102 (__v16sf) (B), -(__v16sf) (C), \
1103 (__mmask16) -1, (R)); })
1104
1105
1106#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1107 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1108 (__v16sf) (B), -(__v16sf) (C), \
1109 (__mmask16) (U), (R)); })
1110
1111
1112#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1113 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1114 (__v16sf) (B), -(__v16sf) (C), \
1115 (__mmask16) (U), (R)); })
1116
1117
1118#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1119 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1120 (__v16sf) (B), (__v16sf) (C), \
1121 (__mmask16) -1, (R)); })
1122
1123
1124#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1125 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1126 (__v16sf) (B), (__v16sf) (C), \
1127 (__mmask16) (U), (R)); })
1128
1129
1130#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1131 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1132 (__v16sf) (B), (__v16sf) (C), \
1133 (__mmask16) (U), (R)); })
1134
1135
1136#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1137 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1138 (__v16sf) (B), -(__v16sf) (C), \
1139 (__mmask16) -1, (R)); })
1140
1141
1142#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1143 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1144 (__v16sf) (B), -(__v16sf) (C), \
1145 (__mmask16) (U), (R)); })
1146
1147
Michael Kupersteine45af542015-06-30 13:36:19 +00001148static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001149_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1150{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001151 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1152 (__v16sf) __B,
1153 (__v16sf) __C,
1154 (__mmask16) -1,
1155 _MM_FROUND_CUR_DIRECTION);
1156}
1157
Michael Kupersteine45af542015-06-30 13:36:19 +00001158static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001159_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1160{
1161 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1162 (__v16sf) __B,
1163 (__v16sf) __C,
1164 (__mmask16) __U,
1165 _MM_FROUND_CUR_DIRECTION);
1166}
1167
Michael Kupersteine45af542015-06-30 13:36:19 +00001168static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001169_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1170{
1171 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1172 (__v16sf) __B,
1173 (__v16sf) __C,
1174 (__mmask16) __U,
1175 _MM_FROUND_CUR_DIRECTION);
1176}
1177
Michael Kupersteine45af542015-06-30 13:36:19 +00001178static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001179_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1180{
1181 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1182 (__v16sf) __B,
1183 (__v16sf) __C,
1184 (__mmask16) __U,
1185 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001186}
1187
Michael Kupersteine45af542015-06-30 13:36:19 +00001188static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001189_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1190{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001191 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1192 (__v16sf) __B,
1193 -(__v16sf) __C,
1194 (__mmask16) -1,
1195 _MM_FROUND_CUR_DIRECTION);
1196}
1197
Michael Kupersteine45af542015-06-30 13:36:19 +00001198static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001199_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1200{
1201 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1202 (__v16sf) __B,
1203 -(__v16sf) __C,
1204 (__mmask16) __U,
1205 _MM_FROUND_CUR_DIRECTION);
1206}
1207
Michael Kupersteine45af542015-06-30 13:36:19 +00001208static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001209_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1210{
1211 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1212 (__v16sf) __B,
1213 -(__v16sf) __C,
1214 (__mmask16) __U,
1215 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001216}
1217
Michael Kupersteine45af542015-06-30 13:36:19 +00001218static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001219_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1220{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001221 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1222 (__v16sf) __B,
1223 (__v16sf) __C,
1224 (__mmask16) -1,
1225 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001226}
1227
Michael Kupersteine45af542015-06-30 13:36:19 +00001228static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001229_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1230{
1231 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
1232 (__v16sf) __B,
1233 (__v16sf) __C,
1234 (__mmask16) __U,
1235 _MM_FROUND_CUR_DIRECTION);
1236}
1237
Michael Kupersteine45af542015-06-30 13:36:19 +00001238static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001239_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1240{
1241 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1242 (__v16sf) __B,
1243 (__v16sf) __C,
1244 (__mmask16) __U,
1245 _MM_FROUND_CUR_DIRECTION);
1246}
1247
Michael Kupersteine45af542015-06-30 13:36:19 +00001248static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001249_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1250{
1251 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1252 (__v16sf) __B,
1253 -(__v16sf) __C,
1254 (__mmask16) -1,
1255 _MM_FROUND_CUR_DIRECTION);
1256}
1257
Michael Kupersteine45af542015-06-30 13:36:19 +00001258static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001259_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1260{
1261 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1262 (__v16sf) __B,
1263 -(__v16sf) __C,
1264 (__mmask16) __U,
1265 _MM_FROUND_CUR_DIRECTION);
1266}
1267
1268#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
1269 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1270 (__v8df) (B), (__v8df) (C), \
1271 (__mmask8) -1, (R)); })
1272
1273
1274#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
1275 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1276 (__v8df) (B), (__v8df) (C), \
1277 (__mmask8) (U), (R)); })
1278
1279
1280#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
1281 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
1282 (__v8df) (B), (__v8df) (C), \
1283 (__mmask8) (U), (R)); })
1284
1285
1286#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
1287 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1288 (__v8df) (B), (__v8df) (C), \
1289 (__mmask8) (U), (R)); })
1290
1291
1292#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
1293 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1294 (__v8df) (B), -(__v8df) (C), \
1295 (__mmask8) -1, (R)); })
1296
1297
1298#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
1299 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1300 (__v8df) (B), -(__v8df) (C), \
1301 (__mmask8) (U), (R)); })
1302
1303
1304#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
1305 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1306 (__v8df) (B), -(__v8df) (C), \
1307 (__mmask8) (U), (R)); })
1308
1309
Michael Kupersteine45af542015-06-30 13:36:19 +00001310static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001311_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
1312{
1313 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1314 (__v8df) __B,
1315 (__v8df) __C,
1316 (__mmask8) -1,
1317 _MM_FROUND_CUR_DIRECTION);
1318}
1319
Michael Kupersteine45af542015-06-30 13:36:19 +00001320static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001321_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1322{
1323 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1324 (__v8df) __B,
1325 (__v8df) __C,
1326 (__mmask8) __U,
1327 _MM_FROUND_CUR_DIRECTION);
1328}
1329
Michael Kupersteine45af542015-06-30 13:36:19 +00001330static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001331_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1332{
1333 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
1334 (__v8df) __B,
1335 (__v8df) __C,
1336 (__mmask8) __U,
1337 _MM_FROUND_CUR_DIRECTION);
1338}
1339
Michael Kupersteine45af542015-06-30 13:36:19 +00001340static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001341_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1342{
1343 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1344 (__v8df) __B,
1345 (__v8df) __C,
1346 (__mmask8) __U,
1347 _MM_FROUND_CUR_DIRECTION);
1348}
1349
Michael Kupersteine45af542015-06-30 13:36:19 +00001350static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001351_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
1352{
1353 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1354 (__v8df) __B,
1355 -(__v8df) __C,
1356 (__mmask8) -1,
1357 _MM_FROUND_CUR_DIRECTION);
1358}
1359
Michael Kupersteine45af542015-06-30 13:36:19 +00001360static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001361_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1362{
1363 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1364 (__v8df) __B,
1365 -(__v8df) __C,
1366 (__mmask8) __U,
1367 _MM_FROUND_CUR_DIRECTION);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001371_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1372{
1373 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1374 (__v8df) __B,
1375 -(__v8df) __C,
1376 (__mmask8) __U,
1377 _MM_FROUND_CUR_DIRECTION);
1378}
1379
1380#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
1381 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1382 (__v16sf) (B), (__v16sf) (C), \
1383 (__mmask16) -1, (R)); })
1384
1385
1386#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
1387 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1388 (__v16sf) (B), (__v16sf) (C), \
1389 (__mmask16) (U), (R)); })
1390
1391
1392#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
1393 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
1394 (__v16sf) (B), (__v16sf) (C), \
1395 (__mmask16) (U), (R)); })
1396
1397
1398#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
1399 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
1400 (__v16sf) (B), (__v16sf) (C), \
1401 (__mmask16) (U), (R)); })
1402
1403
1404#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
1405 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1406 (__v16sf) (B), -(__v16sf) (C), \
1407 (__mmask16) -1, (R)); })
1408
1409
1410#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
1411 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1412 (__v16sf) (B), -(__v16sf) (C), \
1413 (__mmask16) (U), (R)); })
1414
1415
1416#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
1417 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
1418 (__v16sf) (B), -(__v16sf) (C), \
1419 (__mmask16) (U), (R)); })
1420
1421
Michael Kupersteine45af542015-06-30 13:36:19 +00001422static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001423_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
1424{
1425 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1426 (__v16sf) __B,
1427 (__v16sf) __C,
1428 (__mmask16) -1,
1429 _MM_FROUND_CUR_DIRECTION);
1430}
1431
Michael Kupersteine45af542015-06-30 13:36:19 +00001432static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001433_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1434{
1435 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1436 (__v16sf) __B,
1437 (__v16sf) __C,
1438 (__mmask16) __U,
1439 _MM_FROUND_CUR_DIRECTION);
1440}
1441
Michael Kupersteine45af542015-06-30 13:36:19 +00001442static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001443_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1444{
1445 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
1446 (__v16sf) __B,
1447 (__v16sf) __C,
1448 (__mmask16) __U,
1449 _MM_FROUND_CUR_DIRECTION);
1450}
1451
Michael Kupersteine45af542015-06-30 13:36:19 +00001452static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001453_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1454{
1455 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
1456 (__v16sf) __B,
1457 (__v16sf) __C,
1458 (__mmask16) __U,
1459 _MM_FROUND_CUR_DIRECTION);
1460}
1461
Michael Kupersteine45af542015-06-30 13:36:19 +00001462static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001463_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
1464{
1465 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1466 (__v16sf) __B,
1467 -(__v16sf) __C,
1468 (__mmask16) -1,
1469 _MM_FROUND_CUR_DIRECTION);
1470}
1471
Michael Kupersteine45af542015-06-30 13:36:19 +00001472static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001473_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1474{
1475 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1476 (__v16sf) __B,
1477 -(__v16sf) __C,
1478 (__mmask16) __U,
1479 _MM_FROUND_CUR_DIRECTION);
1480}
1481
Michael Kupersteine45af542015-06-30 13:36:19 +00001482static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001483_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1484{
1485 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
1486 (__v16sf) __B,
1487 -(__v16sf) __C,
1488 (__mmask16) __U,
1489 _MM_FROUND_CUR_DIRECTION);
1490}
1491
1492#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
1493 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
1494 (__v8df) (B), (__v8df) (C), \
1495 (__mmask8) (U), (R)); })
1496
1497
Michael Kupersteine45af542015-06-30 13:36:19 +00001498static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001499_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1500{
1501 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
1502 (__v8df) __B,
1503 (__v8df) __C,
1504 (__mmask8) __U,
1505 _MM_FROUND_CUR_DIRECTION);
1506}
1507
1508#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
1509 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
1510 (__v16sf) (B), (__v16sf) (C), \
1511 (__mmask16) (U), (R)); })
1512
1513
Michael Kupersteine45af542015-06-30 13:36:19 +00001514static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001515_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1516{
1517 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
1518 (__v16sf) __B,
1519 (__v16sf) __C,
1520 (__mmask16) __U,
1521 _MM_FROUND_CUR_DIRECTION);
1522}
1523
1524#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
1525 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
1526 (__v8df) (B), (__v8df) (C), \
1527 (__mmask8) (U), (R)); })
1528
1529
Michael Kupersteine45af542015-06-30 13:36:19 +00001530static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001531_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1532{
1533 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
1534 (__v8df) __B,
1535 (__v8df) __C,
1536 (__mmask8) __U,
1537 _MM_FROUND_CUR_DIRECTION);
1538}
1539
1540#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
1541 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
1542 (__v16sf) (B), (__v16sf) (C), \
1543 (__mmask16) (U), (R)); })
1544
1545
Michael Kupersteine45af542015-06-30 13:36:19 +00001546static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001547_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1548{
1549 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
1550 (__v16sf) __B,
1551 (__v16sf) __C,
1552 (__mmask16) __U,
1553 _MM_FROUND_CUR_DIRECTION);
1554}
1555
1556#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1557 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
1558 (__v8df) (B), (__v8df) (C), \
1559 (__mmask8) (U), (R)); })
1560
1561
Michael Kupersteine45af542015-06-30 13:36:19 +00001562static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001563_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1564{
1565 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
1566 (__v8df) __B,
1567 (__v8df) __C,
1568 (__mmask8) __U,
1569 _MM_FROUND_CUR_DIRECTION);
1570}
1571
1572#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1573 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
1574 (__v16sf) (B), (__v16sf) (C), \
1575 (__mmask16) (U), (R)); })
1576
1577
Michael Kupersteine45af542015-06-30 13:36:19 +00001578static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001579_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1580{
1581 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
1582 (__v16sf) __B,
1583 (__v16sf) __C,
1584 (__mmask16) __U,
1585 _MM_FROUND_CUR_DIRECTION);
1586}
1587
1588#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1589 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
1590 (__v8df) (B), (__v8df) (C), \
1591 (__mmask8) (U), (R)); })
1592
1593
1594#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
1595 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
1596 (__v8df) (B), (__v8df) (C), \
1597 (__mmask8) (U), (R)); })
1598
1599
Michael Kupersteine45af542015-06-30 13:36:19 +00001600static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001601_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1602{
1603 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
1604 (__v8df) __B,
1605 (__v8df) __C,
1606 (__mmask8) __U,
1607 _MM_FROUND_CUR_DIRECTION);
1608}
1609
Michael Kupersteine45af542015-06-30 13:36:19 +00001610static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001611_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1612{
1613 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
1614 (__v8df) __B,
1615 (__v8df) __C,
1616 (__mmask8) __U,
1617 _MM_FROUND_CUR_DIRECTION);
1618}
1619
1620#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1621 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
1622 (__v16sf) (B), (__v16sf) (C), \
1623 (__mmask16) (U), (R)); })
1624
1625
1626#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
1627 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
1628 (__v16sf) (B), (__v16sf) (C), \
1629 (__mmask16) (U), (R)); })
1630
1631
Michael Kupersteine45af542015-06-30 13:36:19 +00001632static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001633_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1634{
1635 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
1636 (__v16sf) __B,
1637 (__v16sf) __C,
1638 (__mmask16) __U,
1639 _MM_FROUND_CUR_DIRECTION);
1640}
1641
Michael Kupersteine45af542015-06-30 13:36:19 +00001642static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001643_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1644{
1645 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
1646 (__v16sf) __B,
1647 (__v16sf) __C,
1648 (__mmask16) __U,
1649 _MM_FROUND_CUR_DIRECTION);
1650}
1651
1652
1653
Adam Nemet0d5bb552014-07-28 17:14:40 +00001654/* Vector permutations */
1655
Michael Kupersteine45af542015-06-30 13:36:19 +00001656static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001657_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
1658{
1659 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
1660 /* idx */ ,
1661 (__v16si) __A,
1662 (__v16si) __B,
1663 (__mmask16) -1);
1664}
Michael Kupersteine45af542015-06-30 13:36:19 +00001665static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001666_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
1667{
1668 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
1669 /* idx */ ,
1670 (__v8di) __A,
1671 (__v8di) __B,
1672 (__mmask8) -1);
1673}
1674
Michael Kupersteine45af542015-06-30 13:36:19 +00001675static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001676_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
1677{
1678 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
1679 /* idx */ ,
1680 (__v8df) __A,
1681 (__v8df) __B,
1682 (__mmask8) -1);
1683}
Michael Kupersteine45af542015-06-30 13:36:19 +00001684static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001685_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
1686{
1687 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
1688 /* idx */ ,
1689 (__v16sf) __A,
1690 (__v16sf) __B,
1691 (__mmask16) -1);
1692}
1693
Craig Topper67826a52015-02-01 07:35:40 +00001694#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
1695 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
1696 (__v8di)(__m512i)(B), \
1697 (I), (__v8di)_mm512_setzero_si512(), \
1698 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00001699
Craig Topper67826a52015-02-01 07:35:40 +00001700#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
1701 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
1702 (__v16si)(__m512i)(B), \
1703 (I), (__v16si)_mm512_setzero_si512(), \
1704 (__mmask16)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00001705
Adam Nemetf893ede2015-01-19 20:12:05 +00001706/* Vector Extract */
1707
1708#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
1709 __m512d __A = (A); \
1710 (__m256d) \
1711 __builtin_ia32_extractf64x4_mask((__v8df)__A, \
1712 (I), \
1713 (__v4df)_mm256_setzero_si256(), \
1714 (__mmask8) -1); })
1715
1716#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
1717 __m512 __A = (A); \
1718 (__m128) \
1719 __builtin_ia32_extractf32x4_mask((__v16sf)__A, \
1720 (I), \
1721 (__v4sf)_mm_setzero_ps(), \
1722 (__mmask8) -1); })
1723
Adam Nemet0d5bb552014-07-28 17:14:40 +00001724/* Vector Blend */
1725
Michael Kupersteine45af542015-06-30 13:36:19 +00001726static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001727_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
1728{
1729 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
1730 (__v8df) __W,
1731 (__mmask8) __U);
1732}
1733
Michael Kupersteine45af542015-06-30 13:36:19 +00001734static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001735_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
1736{
1737 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
1738 (__v16sf) __W,
1739 (__mmask16) __U);
1740}
1741
Michael Kupersteine45af542015-06-30 13:36:19 +00001742static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001743_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
1744{
1745 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
1746 (__v8di) __W,
1747 (__mmask8) __U);
1748}
1749
Michael Kupersteine45af542015-06-30 13:36:19 +00001750static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001751_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
1752{
1753 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
1754 (__v16si) __W,
1755 (__mmask16) __U);
1756}
1757
1758/* Compare */
1759
Craig Topper53565c62015-02-01 22:27:40 +00001760#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
1761 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
1762 (__v16sf)(__m512)(B), \
1763 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001764
Craig Topper53565c62015-02-01 22:27:40 +00001765#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
1766 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
1767 (__v16sf)(__m512)(B), \
1768 (P), (__mmask16)(U), (R)); })
1769
1770#define _mm512_cmp_ps_mask(A, B, P) \
1771 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1772
1773#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
1774 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1775
1776#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
1777 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
1778 (__v8df)(__m512d)(B), \
1779 (P), (__mmask8)-1, (R)); })
1780
1781#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
1782 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
1783 (__v8df)(__m512d)(B), \
1784 (P), (__mmask8)(U), (R)); })
1785
1786#define _mm512_cmp_pd_mask(A, B, P) \
1787 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1788
1789#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
1790 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00001791
1792/* Conversion */
1793
Michael Kupersteine45af542015-06-30 13:36:19 +00001794static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001795_mm512_cvttps_epu32(__m512 __A)
1796{
1797 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
1798 (__v16si)
1799 _mm512_setzero_si512 (),
1800 (__mmask16) -1,
1801 _MM_FROUND_CUR_DIRECTION);
1802}
1803
Craig Topper72c7d512015-02-01 07:35:35 +00001804#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
1805 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
1806 (__v16sf)_mm512_setzero_ps(), \
1807 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001808
Craig Topper72c7d512015-02-01 07:35:35 +00001809#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
1810 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
1811 (__v16sf)_mm512_setzero_ps(), \
1812 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001813
Michael Kupersteine45af542015-06-30 13:36:19 +00001814static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001815_mm512_cvtepi32_pd(__m256i __A)
1816{
1817 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
1818 (__v8df)
1819 _mm512_setzero_pd (),
1820 (__mmask8) -1);
1821}
1822
Michael Kupersteine45af542015-06-30 13:36:19 +00001823static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001824_mm512_cvtepu32_pd(__m256i __A)
1825{
1826 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
1827 (__v8df)
1828 _mm512_setzero_pd (),
1829 (__mmask8) -1);
1830}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001831
Craig Topper72c7d512015-02-01 07:35:35 +00001832#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
1833 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
1834 (__v8sf)_mm256_setzero_ps(), \
1835 (__mmask8)-1, (R)); })
1836
1837#define _mm512_cvtps_ph(A, I) __extension__ ({ \
1838 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
1839 (__v16hi)_mm256_setzero_si256(), \
1840 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001841
Michael Kupersteine45af542015-06-30 13:36:19 +00001842static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001843_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001844{
1845 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
1846 (__v16sf)
1847 _mm512_setzero_ps (),
1848 (__mmask16) -1,
1849 _MM_FROUND_CUR_DIRECTION);
1850}
1851
Michael Kupersteine45af542015-06-30 13:36:19 +00001852static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001853_mm512_cvttps_epi32(__m512 a)
1854{
1855 return (__m512i)
1856 __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
1857 (__v16si) _mm512_setzero_si512 (),
1858 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
1859}
1860
Michael Kupersteine45af542015-06-30 13:36:19 +00001861static __inline __m256i __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001862_mm512_cvttpd_epi32(__m512d a)
1863{
1864 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
1865 (__v8si)_mm256_setzero_si256(),
1866 (__mmask8) -1,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
Craig Topper72c7d512015-02-01 07:35:35 +00001870#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
1871 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
1872 (__v8si)_mm256_setzero_si256(), \
1873 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001874
Craig Topper72c7d512015-02-01 07:35:35 +00001875#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
1876 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
1877 (__v16si)_mm512_setzero_si512(), \
1878 (__mmask16)-1, (R)); })
1879
1880#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
1881 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
1882 (__v16si)_mm512_setzero_si512(), \
1883 (__mmask16)-1, (R)); })
1884
1885#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
1886 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
1887 (__v8si)_mm256_setzero_si256(), \
1888 (__mmask8)-1, (R)); })
1889
1890#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
1891 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
1892 (__v16si)_mm512_setzero_si512(), \
1893 (__mmask16)-1, (R)); })
1894
1895#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
1896 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
1897 (__v8si)_mm256_setzero_si256(), \
1898 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001899
Adam Nemet63a951e2015-01-14 01:31:17 +00001900/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00001901static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00001902_mm512_unpackhi_pd(__m512d __a, __m512d __b)
1903{
1904 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
1905}
1906
Michael Kupersteine45af542015-06-30 13:36:19 +00001907static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00001908_mm512_unpacklo_pd(__m512d __a, __m512d __b)
1909{
1910 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
1911}
1912
Michael Kupersteine45af542015-06-30 13:36:19 +00001913static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00001914_mm512_unpackhi_ps(__m512 __a, __m512 __b)
1915{
1916 return __builtin_shufflevector(__a, __b,
1917 2, 18, 3, 19,
1918 2+4, 18+4, 3+4, 19+4,
1919 2+8, 18+8, 3+8, 19+8,
1920 2+12, 18+12, 3+12, 19+12);
1921}
1922
Michael Kupersteine45af542015-06-30 13:36:19 +00001923static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00001924_mm512_unpacklo_ps(__m512 __a, __m512 __b)
1925{
1926 return __builtin_shufflevector(__a, __b,
1927 0, 16, 1, 17,
1928 0+4, 16+4, 1+4, 17+4,
1929 0+8, 16+8, 1+8, 17+8,
1930 0+12, 16+12, 1+12, 17+12);
1931}
1932
Adam Nemet0d5bb552014-07-28 17:14:40 +00001933/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001934
Michael Kupersteine45af542015-06-30 13:36:19 +00001935static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001936_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001937{
1938 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
1939 (__v16si) __B,
1940 (__mmask16) -1);
1941}
1942
Michael Kupersteine45af542015-06-30 13:36:19 +00001943static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001944_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001945{
1946 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
1947 (__v8di) __B,
1948 (__mmask8) -1);
1949}
1950
Adam Nemet0d5bb552014-07-28 17:14:40 +00001951/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001952
Michael Kupersteine45af542015-06-30 13:36:19 +00001953static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001954_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001955{
1956 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
1957 (__v16si)
1958 _mm512_setzero_si512 (),
1959 (__mmask16) __U);
1960}
1961
Michael Kupersteine45af542015-06-30 13:36:19 +00001962static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001963_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001964{
1965 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
1966 (__v8di)
1967 _mm512_setzero_si512 (),
1968 (__mmask8) __U);
1969}
1970
Michael Kupersteine45af542015-06-30 13:36:19 +00001971static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001972_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001973{
1974 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
1975 (__v16sf)
1976 _mm512_setzero_ps (),
1977 (__mmask16) __U);
1978}
1979
Michael Kupersteine45af542015-06-30 13:36:19 +00001980static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001981_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001982{
1983 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
1984 (__v8df)
1985 _mm512_setzero_pd (),
1986 (__mmask8) __U);
1987}
1988
Michael Kupersteine45af542015-06-30 13:36:19 +00001989static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00001990_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
1991{
1992 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
1993 (__v16sf)
1994 _mm512_setzero_ps (),
1995 (__mmask16) __U);
1996}
1997
Michael Kupersteine45af542015-06-30 13:36:19 +00001998static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00001999_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2000{
2001 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2002 (__v8df)
2003 _mm512_setzero_pd (),
2004 (__mmask8) __U);
2005}
2006
Michael Kupersteine45af542015-06-30 13:36:19 +00002007static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002008_mm512_loadu_pd(double const *__p)
2009{
2010 struct __loadu_pd {
2011 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002012 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002013 return ((struct __loadu_pd*)__p)->__v;
2014}
2015
Michael Kupersteine45af542015-06-30 13:36:19 +00002016static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002017_mm512_loadu_ps(float const *__p)
2018{
2019 struct __loadu_ps {
2020 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002021 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002022 return ((struct __loadu_ps*)__p)->__v;
2023}
2024
Michael Kupersteine45af542015-06-30 13:36:19 +00002025static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002026_mm512_load_ps(double const *__p)
2027{
2028 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2029 (__v16sf)
2030 _mm512_setzero_ps (),
2031 (__mmask16) -1);
2032}
2033
Michael Kupersteine45af542015-06-30 13:36:19 +00002034static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002035_mm512_load_pd(float const *__p)
2036{
2037 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2038 (__v8df)
2039 _mm512_setzero_pd (),
2040 (__mmask8) -1);
2041}
2042
Adam Nemet0d5bb552014-07-28 17:14:40 +00002043/* SIMD store ops */
2044
Michael Kupersteine45af542015-06-30 13:36:19 +00002045static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002046_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002047{
2048 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2049 (__mmask8) __U);
2050}
2051
Michael Kupersteine45af542015-06-30 13:36:19 +00002052static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002053_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002054{
2055 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2056 (__mmask16) __U);
2057}
2058
Michael Kupersteine45af542015-06-30 13:36:19 +00002059static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002060_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002061{
2062 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2063}
2064
Michael Kupersteine45af542015-06-30 13:36:19 +00002065static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002066_mm512_storeu_pd(void *__P, __m512d __A)
2067{
2068 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2069}
2070
Michael Kupersteine45af542015-06-30 13:36:19 +00002071static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002072_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002073{
2074 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2075 (__mmask16) __U);
2076}
2077
Michael Kupersteine45af542015-06-30 13:36:19 +00002078static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002079_mm512_storeu_ps(void *__P, __m512 __A)
2080{
2081 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2082}
2083
Michael Kupersteine45af542015-06-30 13:36:19 +00002084static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002085_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002086{
Adam Nemetc0cff242015-01-16 18:51:50 +00002087 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002088}
2089
Michael Kupersteine45af542015-06-30 13:36:19 +00002090static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002091_mm512_store_pd(void *__P, __m512d __A)
2092{
2093 *(__m512d*)__P = __A;
2094}
2095
Michael Kupersteine45af542015-06-30 13:36:19 +00002096static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002097_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2098{
2099 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2100 (__mmask16) __U);
2101}
2102
Michael Kupersteine45af542015-06-30 13:36:19 +00002103static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002104_mm512_store_ps(void *__P, __m512 __A)
2105{
2106 *(__m512*)__P = __A;
2107}
2108
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002109/* Mask ops */
2110
Michael Kupersteine45af542015-06-30 13:36:19 +00002111static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002112_mm512_knot(__mmask16 __M)
2113{
2114 return __builtin_ia32_knothi(__M);
2115}
2116
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002117/* Integer compare */
2118
Michael Kupersteine45af542015-06-30 13:36:19 +00002119static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002120_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2121 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2122 (__mmask16)-1);
2123}
2124
Michael Kupersteine45af542015-06-30 13:36:19 +00002125static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002126_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2127 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2128 __u);
2129}
2130
Michael Kupersteine45af542015-06-30 13:36:19 +00002131static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002132_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2133 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2134 (__mmask16)-1);
2135}
2136
Michael Kupersteine45af542015-06-30 13:36:19 +00002137static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002138_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2139 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2140 __u);
2141}
2142
Michael Kupersteine45af542015-06-30 13:36:19 +00002143static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002144_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2145 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2146 __u);
2147}
2148
Michael Kupersteine45af542015-06-30 13:36:19 +00002149static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002150_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2151 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2152 (__mmask8)-1);
2153}
2154
Michael Kupersteine45af542015-06-30 13:36:19 +00002155static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002156_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2157 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2158 (__mmask8)-1);
2159}
2160
Michael Kupersteine45af542015-06-30 13:36:19 +00002161static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002162_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2163 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2164 __u);
2165}
2166
Michael Kupersteine45af542015-06-30 13:36:19 +00002167static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002168_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2169 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2170 (__mmask16)-1);
2171}
2172
Michael Kupersteine45af542015-06-30 13:36:19 +00002173static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002174_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2175 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2176 __u);
2177}
2178
Michael Kupersteine45af542015-06-30 13:36:19 +00002179static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002180_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2181 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2182 (__mmask16)-1);
2183}
2184
Michael Kupersteine45af542015-06-30 13:36:19 +00002185static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002186_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2187 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2188 __u);
2189}
2190
Michael Kupersteine45af542015-06-30 13:36:19 +00002191static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002192_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2193 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2194 (__mmask8)-1);
2195}
2196
Michael Kupersteine45af542015-06-30 13:36:19 +00002197static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002198_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2199 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2200 __u);
2201}
2202
Michael Kupersteine45af542015-06-30 13:36:19 +00002203static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002204_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2205 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2206 (__mmask8)-1);
2207}
2208
Michael Kupersteine45af542015-06-30 13:36:19 +00002209static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002210_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2211 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2212 __u);
2213}
2214
Michael Kupersteine45af542015-06-30 13:36:19 +00002215static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002216_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2217 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2218 (__mmask16)-1);
2219}
2220
Michael Kupersteine45af542015-06-30 13:36:19 +00002221static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002222_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2223 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2224 __u);
2225}
2226
Michael Kupersteine45af542015-06-30 13:36:19 +00002227static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002228_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2229 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2230 (__mmask16)-1);
2231}
2232
Michael Kupersteine45af542015-06-30 13:36:19 +00002233static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002234_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2235 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2236 __u);
2237}
2238
Michael Kupersteine45af542015-06-30 13:36:19 +00002239static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002240_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2241 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2242 __u);
2243}
2244
Michael Kupersteine45af542015-06-30 13:36:19 +00002245static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002246_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2247 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2248 (__mmask8)-1);
2249}
2250
Michael Kupersteine45af542015-06-30 13:36:19 +00002251static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002252_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2253 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2254 (__mmask8)-1);
2255}
2256
Michael Kupersteine45af542015-06-30 13:36:19 +00002257static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002258_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2259 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2260 __u);
2261}
2262
Michael Kupersteine45af542015-06-30 13:36:19 +00002263static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002264_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2265 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2266 (__mmask16)-1);
2267}
2268
Michael Kupersteine45af542015-06-30 13:36:19 +00002269static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002270_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2271 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2272 __u);
2273}
2274
Michael Kupersteine45af542015-06-30 13:36:19 +00002275static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002276_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2277 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2278 (__mmask16)-1);
2279}
2280
Michael Kupersteine45af542015-06-30 13:36:19 +00002281static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002282_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2283 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2284 __u);
2285}
2286
Michael Kupersteine45af542015-06-30 13:36:19 +00002287static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002288_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2289 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2290 (__mmask8)-1);
2291}
2292
Michael Kupersteine45af542015-06-30 13:36:19 +00002293static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002294_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2295 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2296 __u);
2297}
2298
Michael Kupersteine45af542015-06-30 13:36:19 +00002299static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002300_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2301 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2302 (__mmask8)-1);
2303}
2304
Michael Kupersteine45af542015-06-30 13:36:19 +00002305static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002306_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2307 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2308 __u);
2309}
2310
Michael Kupersteine45af542015-06-30 13:36:19 +00002311static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002312_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2313 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2314 (__mmask16)-1);
2315}
2316
Michael Kupersteine45af542015-06-30 13:36:19 +00002317static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002318_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2319 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2320 __u);
2321}
2322
Michael Kupersteine45af542015-06-30 13:36:19 +00002323static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002324_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2325 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2326 (__mmask16)-1);
2327}
2328
Michael Kupersteine45af542015-06-30 13:36:19 +00002329static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002330_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2331 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2332 __u);
2333}
2334
Michael Kupersteine45af542015-06-30 13:36:19 +00002335static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002336_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2337 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2338 (__mmask8)-1);
2339}
2340
Michael Kupersteine45af542015-06-30 13:36:19 +00002341static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002342_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2343 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2344 __u);
2345}
2346
Michael Kupersteine45af542015-06-30 13:36:19 +00002347static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002348_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2349 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2350 (__mmask8)-1);
2351}
2352
Michael Kupersteine45af542015-06-30 13:36:19 +00002353static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002354_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2355 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2356 __u);
2357}
2358
Michael Kupersteine45af542015-06-30 13:36:19 +00002359static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002360_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2361 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2362 (__mmask16)-1);
2363}
2364
Michael Kupersteine45af542015-06-30 13:36:19 +00002365static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002366_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2367 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2368 __u);
2369}
2370
Michael Kupersteine45af542015-06-30 13:36:19 +00002371static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002372_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2373 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2374 (__mmask16)-1);
2375}
2376
Michael Kupersteine45af542015-06-30 13:36:19 +00002377static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002378_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2379 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2380 __u);
2381}
2382
Michael Kupersteine45af542015-06-30 13:36:19 +00002383static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002384_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2385 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2386 (__mmask8)-1);
2387}
2388
Michael Kupersteine45af542015-06-30 13:36:19 +00002389static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002390_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2391 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2392 __u);
2393}
2394
Michael Kupersteine45af542015-06-30 13:36:19 +00002395static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002396_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2397 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2398 (__mmask8)-1);
2399}
2400
Michael Kupersteine45af542015-06-30 13:36:19 +00002401static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002402_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2403 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2404 __u);
2405}
2406
2407#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
2408 __m512i __a = (a); \
2409 __m512i __b = (b); \
2410 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2411 (__mmask16)-1); })
2412
2413#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
2414 __m512i __a = (a); \
2415 __m512i __b = (b); \
2416 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2417 (__mmask16)-1); })
2418
2419#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
2420 __m512i __a = (a); \
2421 __m512i __b = (b); \
2422 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2423 (__mmask8)-1); })
2424
2425#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
2426 __m512i __a = (a); \
2427 __m512i __b = (b); \
2428 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2429 (__mmask8)-1); })
2430
2431#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
2432 __m512i __a = (a); \
2433 __m512i __b = (b); \
2434 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2435 (__mmask16)(m)); })
2436
2437#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
2438 __m512i __a = (a); \
2439 __m512i __b = (b); \
2440 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2441 (__mmask16)(m)); })
2442
2443#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
2444 __m512i __a = (a); \
2445 __m512i __b = (b); \
2446 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2447 (__mmask8)(m)); })
2448
2449#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
2450 __m512i __a = (a); \
2451 __m512i __b = (b); \
2452 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2453 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00002454
Michael Kupersteine45af542015-06-30 13:36:19 +00002455#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00002456
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002457#endif // __AVX512FINTRIN_H