clang  16.0.0git
avx512fintrin.h
Go to the documentation of this file.
1 /*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7  *===-----------------------------------------------------------------------===
8  */
9 #ifndef __IMMINTRIN_H
10 #error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
11 #endif
12 
13 #ifndef __AVX512FINTRIN_H
14 #define __AVX512FINTRIN_H
15 
16 typedef char __v64qi __attribute__((__vector_size__(64)));
17 typedef short __v32hi __attribute__((__vector_size__(64)));
18 typedef double __v8df __attribute__((__vector_size__(64)));
19 typedef float __v16sf __attribute__((__vector_size__(64)));
20 typedef long long __v8di __attribute__((__vector_size__(64)));
21 typedef int __v16si __attribute__((__vector_size__(64)));
22 
23 /* Unsigned types */
24 typedef unsigned char __v64qu __attribute__((__vector_size__(64)));
25 typedef unsigned short __v32hu __attribute__((__vector_size__(64)));
26 typedef unsigned long long __v8du __attribute__((__vector_size__(64)));
27 typedef unsigned int __v16su __attribute__((__vector_size__(64)));
28 
29 /* We need an explicitly signed variant for char. Note that this shouldn't
30  * appear in the interface though. */
31 typedef signed char __v64qs __attribute__((__vector_size__(64)));
32 
33 typedef float __m512 __attribute__((__vector_size__(64), __aligned__(64)));
34 typedef double __m512d __attribute__((__vector_size__(64), __aligned__(64)));
35 typedef long long __m512i __attribute__((__vector_size__(64), __aligned__(64)));
36 
37 typedef float __m512_u __attribute__((__vector_size__(64), __aligned__(1)));
38 typedef double __m512d_u __attribute__((__vector_size__(64), __aligned__(1)));
39 typedef long long __m512i_u __attribute__((__vector_size__(64), __aligned__(1)));
40 
41 typedef unsigned char __mmask8;
42 typedef unsigned short __mmask16;
43 
44 /* Rounding mode macros. */
45 #define _MM_FROUND_TO_NEAREST_INT 0x00
46 #define _MM_FROUND_TO_NEG_INF 0x01
47 #define _MM_FROUND_TO_POS_INF 0x02
48 #define _MM_FROUND_TO_ZERO 0x03
49 #define _MM_FROUND_CUR_DIRECTION 0x04
50 
51 /* Constants for integer comparison predicates */
52 typedef enum {
53  _MM_CMPINT_EQ, /* Equal */
54  _MM_CMPINT_LT, /* Less than */
55  _MM_CMPINT_LE, /* Less than or Equal */
57  _MM_CMPINT_NE, /* Not Equal */
58  _MM_CMPINT_NLT, /* Not Less than */
59 #define _MM_CMPINT_GE _MM_CMPINT_NLT /* Greater than or Equal */
60  _MM_CMPINT_NLE /* Not Less than or Equal */
61 #define _MM_CMPINT_GT _MM_CMPINT_NLE /* Greater than */
63 
64 typedef enum
65 {
66  _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
67  _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
68  _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
69  _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
70  _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
71  _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
72  _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
73  _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
74  _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
75  _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
76  _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
77  _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
78  _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
79  _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
80  _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
81  _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
82  _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
83  _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
84  _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
85  _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
86  _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
87  _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
88  _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
89  _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
90  _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
91  _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
92  _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
93  _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
94  _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
95  _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
96  _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
97  _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
98  _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
99  _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
100  _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
101  _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
102  _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
103  _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
104  _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
105  _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
106  _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
107  _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
108  _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
109  _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
110  _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
111  _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
112  _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
113  _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
114  _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
115  _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
116  _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
117  _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
118  _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
119  _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
120  _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
121  _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
122  _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
123  _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
124  _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
125  _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
126  _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
127  _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
128  _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
129  _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
130  _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
131  _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
132  _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
133  _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
134  _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
135  _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
136  _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
137  _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
138  _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
139  _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
140  _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
141  _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
142  _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
143  _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
144  _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
145  _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
146  _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
147  _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
148  _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
149  _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
150  _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
152 } _MM_PERM_ENUM;
153 
154 typedef enum
155 {
156  _MM_MANT_NORM_1_2, /* interval [1, 2) */
157  _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
158  _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
159  _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
161 
162 typedef enum
163 {
164  _MM_MANT_SIGN_src, /* sign = sign(SRC) */
165  _MM_MANT_SIGN_zero, /* sign = 0 */
166  _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
168 
169 /* Define the default attributes for the functions in this file. */
170 #define __DEFAULT_FN_ATTRS512 __attribute__((__always_inline__, __nodebug__, __target__("avx512f"), __min_vector_width__(512)))
171 #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512f"), __min_vector_width__(128)))
172 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
173 
174 /* Create vectors with repeated elements */
175 
176 static __inline __m512i __DEFAULT_FN_ATTRS512
178 {
179  return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
180 }
181 
182 #define _mm512_setzero_epi32 _mm512_setzero_si512
183 
184 static __inline__ __m512d __DEFAULT_FN_ATTRS512
186 {
187  return (__m512d)__builtin_ia32_undef512();
188 }
189 
190 static __inline__ __m512 __DEFAULT_FN_ATTRS512
192 {
193  return (__m512)__builtin_ia32_undef512();
194 }
195 
196 static __inline__ __m512 __DEFAULT_FN_ATTRS512
198 {
199  return (__m512)__builtin_ia32_undef512();
200 }
201 
202 static __inline__ __m512i __DEFAULT_FN_ATTRS512
204 {
205  return (__m512i)__builtin_ia32_undef512();
206 }
207 
208 static __inline__ __m512i __DEFAULT_FN_ATTRS512
210 {
211  return (__m512i)__builtin_shufflevector((__v4si) __A, (__v4si) __A,
212  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
213 }
214 
215 static __inline__ __m512i __DEFAULT_FN_ATTRS512
216 _mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
217 {
218  return (__m512i)__builtin_ia32_selectd_512(__M,
219  (__v16si) _mm512_broadcastd_epi32(__A),
220  (__v16si) __O);
221 }
222 
223 static __inline__ __m512i __DEFAULT_FN_ATTRS512
225 {
226  return (__m512i)__builtin_ia32_selectd_512(__M,
227  (__v16si) _mm512_broadcastd_epi32(__A),
228  (__v16si) _mm512_setzero_si512());
229 }
230 
231 static __inline__ __m512i __DEFAULT_FN_ATTRS512
233 {
234  return (__m512i)__builtin_shufflevector((__v2di) __A, (__v2di) __A,
235  0, 0, 0, 0, 0, 0, 0, 0);
236 }
237 
238 static __inline__ __m512i __DEFAULT_FN_ATTRS512
239 _mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
240 {
241  return (__m512i)__builtin_ia32_selectq_512(__M,
242  (__v8di) _mm512_broadcastq_epi64(__A),
243  (__v8di) __O);
244 
245 }
246 
247 static __inline__ __m512i __DEFAULT_FN_ATTRS512
249 {
250  return (__m512i)__builtin_ia32_selectq_512(__M,
251  (__v8di) _mm512_broadcastq_epi64(__A),
252  (__v8di) _mm512_setzero_si512());
253 }
254 
255 
256 static __inline __m512 __DEFAULT_FN_ATTRS512
258 {
259  return __extension__ (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
260  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
261 }
262 
263 #define _mm512_setzero _mm512_setzero_ps
264 
265 static __inline __m512d __DEFAULT_FN_ATTRS512
267 {
268  return __extension__ (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
269 }
270 
271 static __inline __m512 __DEFAULT_FN_ATTRS512
272 _mm512_set1_ps(float __w)
273 {
274  return __extension__ (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
275  __w, __w, __w, __w, __w, __w, __w, __w };
276 }
277 
278 static __inline __m512d __DEFAULT_FN_ATTRS512
279 _mm512_set1_pd(double __w)
280 {
281  return __extension__ (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
282 }
283 
284 static __inline __m512i __DEFAULT_FN_ATTRS512
286 {
287  return __extension__ (__m512i)(__v64qi){
288  __w, __w, __w, __w, __w, __w, __w, __w,
289  __w, __w, __w, __w, __w, __w, __w, __w,
290  __w, __w, __w, __w, __w, __w, __w, __w,
291  __w, __w, __w, __w, __w, __w, __w, __w,
292  __w, __w, __w, __w, __w, __w, __w, __w,
293  __w, __w, __w, __w, __w, __w, __w, __w,
294  __w, __w, __w, __w, __w, __w, __w, __w,
295  __w, __w, __w, __w, __w, __w, __w, __w };
296 }
297 
298 static __inline __m512i __DEFAULT_FN_ATTRS512
300 {
301  return __extension__ (__m512i)(__v32hi){
302  __w, __w, __w, __w, __w, __w, __w, __w,
303  __w, __w, __w, __w, __w, __w, __w, __w,
304  __w, __w, __w, __w, __w, __w, __w, __w,
305  __w, __w, __w, __w, __w, __w, __w, __w };
306 }
307 
308 static __inline __m512i __DEFAULT_FN_ATTRS512
310 {
311  return __extension__ (__m512i)(__v16si){
312  __s, __s, __s, __s, __s, __s, __s, __s,
313  __s, __s, __s, __s, __s, __s, __s, __s };
314 }
315 
316 static __inline __m512i __DEFAULT_FN_ATTRS512
318 {
319  return (__m512i)__builtin_ia32_selectd_512(__M,
320  (__v16si)_mm512_set1_epi32(__A),
321  (__v16si)_mm512_setzero_si512());
322 }
323 
324 static __inline __m512i __DEFAULT_FN_ATTRS512
325 _mm512_set1_epi64(long long __d)
326 {
327  return __extension__(__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
328 }
329 
330 static __inline __m512i __DEFAULT_FN_ATTRS512
332 {
333  return (__m512i)__builtin_ia32_selectq_512(__M,
334  (__v8di)_mm512_set1_epi64(__A),
335  (__v8di)_mm512_setzero_si512());
336 }
337 
338 static __inline__ __m512 __DEFAULT_FN_ATTRS512
340 {
341  return (__m512)__builtin_shufflevector((__v4sf) __A, (__v4sf) __A,
342  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
343 }
344 
345 static __inline __m512i __DEFAULT_FN_ATTRS512
346 _mm512_set4_epi32 (int __A, int __B, int __C, int __D)
347 {
348  return __extension__ (__m512i)(__v16si)
349  { __D, __C, __B, __A, __D, __C, __B, __A,
350  __D, __C, __B, __A, __D, __C, __B, __A };
351 }
352 
353 static __inline __m512i __DEFAULT_FN_ATTRS512
354 _mm512_set4_epi64 (long long __A, long long __B, long long __C,
355  long long __D)
356 {
357  return __extension__ (__m512i) (__v8di)
358  { __D, __C, __B, __A, __D, __C, __B, __A };
359 }
360 
361 static __inline __m512d __DEFAULT_FN_ATTRS512
362 _mm512_set4_pd (double __A, double __B, double __C, double __D)
363 {
364  return __extension__ (__m512d)
365  { __D, __C, __B, __A, __D, __C, __B, __A };
366 }
367 
368 static __inline __m512 __DEFAULT_FN_ATTRS512
369 _mm512_set4_ps (float __A, float __B, float __C, float __D)
370 {
371  return __extension__ (__m512)
372  { __D, __C, __B, __A, __D, __C, __B, __A,
373  __D, __C, __B, __A, __D, __C, __B, __A };
374 }
375 
376 #define _mm512_setr4_epi32(e0,e1,e2,e3) \
377  _mm512_set4_epi32((e3),(e2),(e1),(e0))
378 
379 #define _mm512_setr4_epi64(e0,e1,e2,e3) \
380  _mm512_set4_epi64((e3),(e2),(e1),(e0))
381 
382 #define _mm512_setr4_pd(e0,e1,e2,e3) \
383  _mm512_set4_pd((e3),(e2),(e1),(e0))
384 
385 #define _mm512_setr4_ps(e0,e1,e2,e3) \
386  _mm512_set4_ps((e3),(e2),(e1),(e0))
387 
388 static __inline__ __m512d __DEFAULT_FN_ATTRS512
390 {
391  return (__m512d)__builtin_shufflevector((__v2df) __A, (__v2df) __A,
392  0, 0, 0, 0, 0, 0, 0, 0);
393 }
394 
395 /* Cast between vector types */
396 
397 static __inline __m512d __DEFAULT_FN_ATTRS512
399 {
400  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
401 }
402 
403 static __inline __m512 __DEFAULT_FN_ATTRS512
405 {
406  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
407  -1, -1, -1, -1, -1, -1, -1, -1);
408 }
409 
410 static __inline __m128d __DEFAULT_FN_ATTRS512
412 {
413  return __builtin_shufflevector(__a, __a, 0, 1);
414 }
415 
416 static __inline __m256d __DEFAULT_FN_ATTRS512
418 {
419  return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
420 }
421 
422 static __inline __m128 __DEFAULT_FN_ATTRS512
424 {
425  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
426 }
427 
428 static __inline __m256 __DEFAULT_FN_ATTRS512
430 {
431  return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
432 }
433 
434 static __inline __m512 __DEFAULT_FN_ATTRS512
435 _mm512_castpd_ps (__m512d __A)
436 {
437  return (__m512) (__A);
438 }
439 
440 static __inline __m512i __DEFAULT_FN_ATTRS512
441 _mm512_castpd_si512 (__m512d __A)
442 {
443  return (__m512i) (__A);
444 }
445 
446 static __inline__ __m512d __DEFAULT_FN_ATTRS512
448 {
449  return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
450 }
451 
452 static __inline __m512d __DEFAULT_FN_ATTRS512
453 _mm512_castps_pd (__m512 __A)
454 {
455  return (__m512d) (__A);
456 }
457 
458 static __inline __m512i __DEFAULT_FN_ATTRS512
460 {
461  return (__m512i) (__A);
462 }
463 
464 static __inline__ __m512 __DEFAULT_FN_ATTRS512
466 {
467  return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
468 }
469 
470 static __inline__ __m512i __DEFAULT_FN_ATTRS512
472 {
473  return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
474 }
475 
476 static __inline__ __m512i __DEFAULT_FN_ATTRS512
478 {
479  return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
480 }
481 
482 static __inline __m512 __DEFAULT_FN_ATTRS512
483 _mm512_castsi512_ps (__m512i __A)
484 {
485  return (__m512) (__A);
486 }
487 
488 static __inline __m512d __DEFAULT_FN_ATTRS512
489 _mm512_castsi512_pd (__m512i __A)
490 {
491  return (__m512d) (__A);
492 }
493 
494 static __inline __m128i __DEFAULT_FN_ATTRS512
496 {
497  return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
498 }
499 
500 static __inline __m256i __DEFAULT_FN_ATTRS512
502 {
503  return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
504 }
505 
506 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
508 {
509  return (__mmask16)__a;
510 }
511 
512 static __inline__ int __DEFAULT_FN_ATTRS
514 {
515  return (int)__a;
516 }
517 
518 /// Constructs a 512-bit floating-point vector of [8 x double] from a
519 /// 128-bit floating-point vector of [2 x double]. The lower 128 bits
520 /// contain the value of the source vector. The upper 384 bits are set
521 /// to zero.
522 ///
523 /// \headerfile <x86intrin.h>
524 ///
525 /// This intrinsic has no corresponding instruction.
526 ///
527 /// \param __a
528 /// A 128-bit vector of [2 x double].
529 /// \returns A 512-bit floating-point vector of [8 x double]. The lower 128 bits
530 /// contain the value of the parameter. The upper 384 bits are set to zero.
531 static __inline __m512d __DEFAULT_FN_ATTRS512
533 {
534  return __builtin_shufflevector((__v2df)__a, (__v2df)_mm_setzero_pd(), 0, 1, 2, 3, 2, 3, 2, 3);
535 }
536 
537 /// Constructs a 512-bit floating-point vector of [8 x double] from a
538 /// 256-bit floating-point vector of [4 x double]. The lower 256 bits
539 /// contain the value of the source vector. The upper 256 bits are set
540 /// to zero.
541 ///
542 /// \headerfile <x86intrin.h>
543 ///
544 /// This intrinsic has no corresponding instruction.
545 ///
546 /// \param __a
547 /// A 256-bit vector of [4 x double].
548 /// \returns A 512-bit floating-point vector of [8 x double]. The lower 256 bits
549 /// contain the value of the parameter. The upper 256 bits are set to zero.
550 static __inline __m512d __DEFAULT_FN_ATTRS512
552 {
553  return __builtin_shufflevector((__v4df)__a, (__v4df)_mm256_setzero_pd(), 0, 1, 2, 3, 4, 5, 6, 7);
554 }
555 
556 /// Constructs a 512-bit floating-point vector of [16 x float] from a
557 /// 128-bit floating-point vector of [4 x float]. The lower 128 bits contain
558 /// the value of the source vector. The upper 384 bits are set to zero.
559 ///
560 /// \headerfile <x86intrin.h>
561 ///
562 /// This intrinsic has no corresponding instruction.
563 ///
564 /// \param __a
565 /// A 128-bit vector of [4 x float].
566 /// \returns A 512-bit floating-point vector of [16 x float]. The lower 128 bits
567 /// contain the value of the parameter. The upper 384 bits are set to zero.
568 static __inline __m512 __DEFAULT_FN_ATTRS512
570 {
571  return __builtin_shufflevector((__v4sf)__a, (__v4sf)_mm_setzero_ps(), 0, 1, 2, 3, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7);
572 }
573 
574 /// Constructs a 512-bit floating-point vector of [16 x float] from a
575 /// 256-bit floating-point vector of [8 x float]. The lower 256 bits contain
576 /// the value of the source vector. The upper 256 bits are set to zero.
577 ///
578 /// \headerfile <x86intrin.h>
579 ///
580 /// This intrinsic has no corresponding instruction.
581 ///
582 /// \param __a
583 /// A 256-bit vector of [8 x float].
584 /// \returns A 512-bit floating-point vector of [16 x float]. The lower 256 bits
585 /// contain the value of the parameter. The upper 256 bits are set to zero.
586 static __inline __m512 __DEFAULT_FN_ATTRS512
588 {
589  return __builtin_shufflevector((__v8sf)__a, (__v8sf)_mm256_setzero_ps(), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
590 }
591 
592 /// Constructs a 512-bit integer vector from a 128-bit integer vector.
593 /// The lower 128 bits contain the value of the source vector. The upper
594 /// 384 bits are set to zero.
595 ///
596 /// \headerfile <x86intrin.h>
597 ///
598 /// This intrinsic has no corresponding instruction.
599 ///
600 /// \param __a
601 /// A 128-bit integer vector.
602 /// \returns A 512-bit integer vector. The lower 128 bits contain the value of
603 /// the parameter. The upper 384 bits are set to zero.
604 static __inline __m512i __DEFAULT_FN_ATTRS512
606 {
607  return __builtin_shufflevector((__v2di)__a, (__v2di)_mm_setzero_si128(), 0, 1, 2, 3, 2, 3, 2, 3);
608 }
609 
610 /// Constructs a 512-bit integer vector from a 256-bit integer vector.
611 /// The lower 256 bits contain the value of the source vector. The upper
612 /// 256 bits are set to zero.
613 ///
614 /// \headerfile <x86intrin.h>
615 ///
616 /// This intrinsic has no corresponding instruction.
617 ///
618 /// \param __a
619 /// A 256-bit integer vector.
620 /// \returns A 512-bit integer vector. The lower 256 bits contain the value of
621 /// the parameter. The upper 256 bits are set to zero.
622 static __inline __m512i __DEFAULT_FN_ATTRS512
624 {
625  return __builtin_shufflevector((__v4di)__a, (__v4di)_mm256_setzero_si256(), 0, 1, 2, 3, 4, 5, 6, 7);
626 }
627 
628 /* Bitwise operators */
629 static __inline__ __m512i __DEFAULT_FN_ATTRS512
630 _mm512_and_epi32(__m512i __a, __m512i __b)
631 {
632  return (__m512i)((__v16su)__a & (__v16su)__b);
633 }
634 
635 static __inline__ __m512i __DEFAULT_FN_ATTRS512
636 _mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
637 {
638  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__k,
639  (__v16si) _mm512_and_epi32(__a, __b),
640  (__v16si) __src);
641 }
642 
643 static __inline__ __m512i __DEFAULT_FN_ATTRS512
644 _mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
645 {
646  return (__m512i) _mm512_mask_and_epi32(_mm512_setzero_si512 (),
647  __k, __a, __b);
648 }
649 
650 static __inline__ __m512i __DEFAULT_FN_ATTRS512
651 _mm512_and_epi64(__m512i __a, __m512i __b)
652 {
653  return (__m512i)((__v8du)__a & (__v8du)__b);
654 }
655 
656 static __inline__ __m512i __DEFAULT_FN_ATTRS512
657 _mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
658 {
659  return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __k,
660  (__v8di) _mm512_and_epi64(__a, __b),
661  (__v8di) __src);
662 }
663 
664 static __inline__ __m512i __DEFAULT_FN_ATTRS512
665 _mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
666 {
667  return (__m512i) _mm512_mask_and_epi64(_mm512_setzero_si512 (),
668  __k, __a, __b);
669 }
670 
671 static __inline__ __m512i __DEFAULT_FN_ATTRS512
672 _mm512_andnot_si512 (__m512i __A, __m512i __B)
673 {
674  return (__m512i)(~(__v8du)__A & (__v8du)__B);
675 }
676 
677 static __inline__ __m512i __DEFAULT_FN_ATTRS512
678 _mm512_andnot_epi32 (__m512i __A, __m512i __B)
679 {
680  return (__m512i)(~(__v16su)__A & (__v16su)__B);
681 }
682 
683 static __inline__ __m512i __DEFAULT_FN_ATTRS512
684 _mm512_mask_andnot_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
685 {
686  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
687  (__v16si)_mm512_andnot_epi32(__A, __B),
688  (__v16si)__W);
689 }
690 
691 static __inline__ __m512i __DEFAULT_FN_ATTRS512
692 _mm512_maskz_andnot_epi32(__mmask16 __U, __m512i __A, __m512i __B)
693 {
695  __U, __A, __B);
696 }
697 
698 static __inline__ __m512i __DEFAULT_FN_ATTRS512
699 _mm512_andnot_epi64(__m512i __A, __m512i __B)
700 {
701  return (__m512i)(~(__v8du)__A & (__v8du)__B);
702 }
703 
704 static __inline__ __m512i __DEFAULT_FN_ATTRS512
705 _mm512_mask_andnot_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
706 {
707  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
708  (__v8di)_mm512_andnot_epi64(__A, __B),
709  (__v8di)__W);
710 }
711 
712 static __inline__ __m512i __DEFAULT_FN_ATTRS512
713 _mm512_maskz_andnot_epi64(__mmask8 __U, __m512i __A, __m512i __B)
714 {
716  __U, __A, __B);
717 }
718 
719 static __inline__ __m512i __DEFAULT_FN_ATTRS512
720 _mm512_or_epi32(__m512i __a, __m512i __b)
721 {
722  return (__m512i)((__v16su)__a | (__v16su)__b);
723 }
724 
725 static __inline__ __m512i __DEFAULT_FN_ATTRS512
726 _mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
727 {
728  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__k,
729  (__v16si)_mm512_or_epi32(__a, __b),
730  (__v16si)__src);
731 }
732 
733 static __inline__ __m512i __DEFAULT_FN_ATTRS512
734 _mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
735 {
736  return (__m512i)_mm512_mask_or_epi32(_mm512_setzero_si512(), __k, __a, __b);
737 }
738 
739 static __inline__ __m512i __DEFAULT_FN_ATTRS512
740 _mm512_or_epi64(__m512i __a, __m512i __b)
741 {
742  return (__m512i)((__v8du)__a | (__v8du)__b);
743 }
744 
745 static __inline__ __m512i __DEFAULT_FN_ATTRS512
746 _mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
747 {
748  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__k,
749  (__v8di)_mm512_or_epi64(__a, __b),
750  (__v8di)__src);
751 }
752 
753 static __inline__ __m512i __DEFAULT_FN_ATTRS512
754 _mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
755 {
756  return (__m512i)_mm512_mask_or_epi64(_mm512_setzero_si512(), __k, __a, __b);
757 }
758 
759 static __inline__ __m512i __DEFAULT_FN_ATTRS512
760 _mm512_xor_epi32(__m512i __a, __m512i __b)
761 {
762  return (__m512i)((__v16su)__a ^ (__v16su)__b);
763 }
764 
765 static __inline__ __m512i __DEFAULT_FN_ATTRS512
766 _mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
767 {
768  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__k,
769  (__v16si)_mm512_xor_epi32(__a, __b),
770  (__v16si)__src);
771 }
772 
773 static __inline__ __m512i __DEFAULT_FN_ATTRS512
774 _mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
775 {
776  return (__m512i)_mm512_mask_xor_epi32(_mm512_setzero_si512(), __k, __a, __b);
777 }
778 
779 static __inline__ __m512i __DEFAULT_FN_ATTRS512
780 _mm512_xor_epi64(__m512i __a, __m512i __b)
781 {
782  return (__m512i)((__v8du)__a ^ (__v8du)__b);
783 }
784 
785 static __inline__ __m512i __DEFAULT_FN_ATTRS512
786 _mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
787 {
788  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__k,
789  (__v8di)_mm512_xor_epi64(__a, __b),
790  (__v8di)__src);
791 }
792 
793 static __inline__ __m512i __DEFAULT_FN_ATTRS512
794 _mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
795 {
796  return (__m512i)_mm512_mask_xor_epi64(_mm512_setzero_si512(), __k, __a, __b);
797 }
798 
799 static __inline__ __m512i __DEFAULT_FN_ATTRS512
800 _mm512_and_si512(__m512i __a, __m512i __b)
801 {
802  return (__m512i)((__v8du)__a & (__v8du)__b);
803 }
804 
805 static __inline__ __m512i __DEFAULT_FN_ATTRS512
806 _mm512_or_si512(__m512i __a, __m512i __b)
807 {
808  return (__m512i)((__v8du)__a | (__v8du)__b);
809 }
810 
811 static __inline__ __m512i __DEFAULT_FN_ATTRS512
812 _mm512_xor_si512(__m512i __a, __m512i __b)
813 {
814  return (__m512i)((__v8du)__a ^ (__v8du)__b);
815 }
816 
817 /* Arithmetic */
818 
819 static __inline __m512d __DEFAULT_FN_ATTRS512
820 _mm512_add_pd(__m512d __a, __m512d __b)
821 {
822  return (__m512d)((__v8df)__a + (__v8df)__b);
823 }
824 
825 static __inline __m512 __DEFAULT_FN_ATTRS512
826 _mm512_add_ps(__m512 __a, __m512 __b)
827 {
828  return (__m512)((__v16sf)__a + (__v16sf)__b);
829 }
830 
831 static __inline __m512d __DEFAULT_FN_ATTRS512
832 _mm512_mul_pd(__m512d __a, __m512d __b)
833 {
834  return (__m512d)((__v8df)__a * (__v8df)__b);
835 }
836 
837 static __inline __m512 __DEFAULT_FN_ATTRS512
838 _mm512_mul_ps(__m512 __a, __m512 __b)
839 {
840  return (__m512)((__v16sf)__a * (__v16sf)__b);
841 }
842 
843 static __inline __m512d __DEFAULT_FN_ATTRS512
844 _mm512_sub_pd(__m512d __a, __m512d __b)
845 {
846  return (__m512d)((__v8df)__a - (__v8df)__b);
847 }
848 
849 static __inline __m512 __DEFAULT_FN_ATTRS512
850 _mm512_sub_ps(__m512 __a, __m512 __b)
851 {
852  return (__m512)((__v16sf)__a - (__v16sf)__b);
853 }
854 
855 static __inline__ __m512i __DEFAULT_FN_ATTRS512
856 _mm512_add_epi64 (__m512i __A, __m512i __B)
857 {
858  return (__m512i) ((__v8du) __A + (__v8du) __B);
859 }
860 
861 static __inline__ __m512i __DEFAULT_FN_ATTRS512
862 _mm512_mask_add_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
863 {
864  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
865  (__v8di)_mm512_add_epi64(__A, __B),
866  (__v8di)__W);
867 }
868 
869 static __inline__ __m512i __DEFAULT_FN_ATTRS512
870 _mm512_maskz_add_epi64(__mmask8 __U, __m512i __A, __m512i __B)
871 {
872  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
873  (__v8di)_mm512_add_epi64(__A, __B),
874  (__v8di)_mm512_setzero_si512());
875 }
876 
877 static __inline__ __m512i __DEFAULT_FN_ATTRS512
878 _mm512_sub_epi64 (__m512i __A, __m512i __B)
879 {
880  return (__m512i) ((__v8du) __A - (__v8du) __B);
881 }
882 
883 static __inline__ __m512i __DEFAULT_FN_ATTRS512
884 _mm512_mask_sub_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
885 {
886  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
887  (__v8di)_mm512_sub_epi64(__A, __B),
888  (__v8di)__W);
889 }
890 
891 static __inline__ __m512i __DEFAULT_FN_ATTRS512
892 _mm512_maskz_sub_epi64(__mmask8 __U, __m512i __A, __m512i __B)
893 {
894  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
895  (__v8di)_mm512_sub_epi64(__A, __B),
896  (__v8di)_mm512_setzero_si512());
897 }
898 
899 static __inline__ __m512i __DEFAULT_FN_ATTRS512
900 _mm512_add_epi32 (__m512i __A, __m512i __B)
901 {
902  return (__m512i) ((__v16su) __A + (__v16su) __B);
903 }
904 
905 static __inline__ __m512i __DEFAULT_FN_ATTRS512
906 _mm512_mask_add_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
907 {
908  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
909  (__v16si)_mm512_add_epi32(__A, __B),
910  (__v16si)__W);
911 }
912 
913 static __inline__ __m512i __DEFAULT_FN_ATTRS512
914 _mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
915 {
916  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
917  (__v16si)_mm512_add_epi32(__A, __B),
918  (__v16si)_mm512_setzero_si512());
919 }
920 
921 static __inline__ __m512i __DEFAULT_FN_ATTRS512
922 _mm512_sub_epi32 (__m512i __A, __m512i __B)
923 {
924  return (__m512i) ((__v16su) __A - (__v16su) __B);
925 }
926 
927 static __inline__ __m512i __DEFAULT_FN_ATTRS512
928 _mm512_mask_sub_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
929 {
930  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
931  (__v16si)_mm512_sub_epi32(__A, __B),
932  (__v16si)__W);
933 }
934 
935 static __inline__ __m512i __DEFAULT_FN_ATTRS512
936 _mm512_maskz_sub_epi32(__mmask16 __U, __m512i __A, __m512i __B)
937 {
938  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
939  (__v16si)_mm512_sub_epi32(__A, __B),
940  (__v16si)_mm512_setzero_si512());
941 }
942 
943 #define _mm512_max_round_pd(A, B, R) \
944  ((__m512d)__builtin_ia32_maxpd512((__v8df)(__m512d)(A), \
945  (__v8df)(__m512d)(B), (int)(R)))
946 
947 #define _mm512_mask_max_round_pd(W, U, A, B, R) \
948  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
949  (__v8df)_mm512_max_round_pd((A), (B), (R)), \
950  (__v8df)(W)))
951 
952 #define _mm512_maskz_max_round_pd(U, A, B, R) \
953  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
954  (__v8df)_mm512_max_round_pd((A), (B), (R)), \
955  (__v8df)_mm512_setzero_pd()))
956 
957 static __inline__ __m512d __DEFAULT_FN_ATTRS512
958 _mm512_max_pd(__m512d __A, __m512d __B)
959 {
960  return (__m512d) __builtin_ia32_maxpd512((__v8df) __A, (__v8df) __B,
962 }
963 
964 static __inline__ __m512d __DEFAULT_FN_ATTRS512
965 _mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
966 {
967  return (__m512d)__builtin_ia32_selectpd_512(__U,
968  (__v8df)_mm512_max_pd(__A, __B),
969  (__v8df)__W);
970 }
971 
972 static __inline__ __m512d __DEFAULT_FN_ATTRS512
973 _mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
974 {
975  return (__m512d)__builtin_ia32_selectpd_512(__U,
976  (__v8df)_mm512_max_pd(__A, __B),
977  (__v8df)_mm512_setzero_pd());
978 }
979 
980 #define _mm512_max_round_ps(A, B, R) \
981  ((__m512)__builtin_ia32_maxps512((__v16sf)(__m512)(A), \
982  (__v16sf)(__m512)(B), (int)(R)))
983 
984 #define _mm512_mask_max_round_ps(W, U, A, B, R) \
985  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
986  (__v16sf)_mm512_max_round_ps((A), (B), (R)), \
987  (__v16sf)(W)))
988 
989 #define _mm512_maskz_max_round_ps(U, A, B, R) \
990  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
991  (__v16sf)_mm512_max_round_ps((A), (B), (R)), \
992  (__v16sf)_mm512_setzero_ps()))
993 
994 static __inline__ __m512 __DEFAULT_FN_ATTRS512
995 _mm512_max_ps(__m512 __A, __m512 __B)
996 {
997  return (__m512) __builtin_ia32_maxps512((__v16sf) __A, (__v16sf) __B,
999 }
1000 
1001 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1002 _mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1003 {
1004  return (__m512)__builtin_ia32_selectps_512(__U,
1005  (__v16sf)_mm512_max_ps(__A, __B),
1006  (__v16sf)__W);
1007 }
1008 
1009 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1010 _mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
1011 {
1012  return (__m512)__builtin_ia32_selectps_512(__U,
1013  (__v16sf)_mm512_max_ps(__A, __B),
1014  (__v16sf)_mm512_setzero_ps());
1015 }
1016 
1017 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1018 _mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1019  return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
1020  (__v4sf) __B,
1021  (__v4sf) __W,
1022  (__mmask8) __U,
1024 }
1025 
1026 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1027 _mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1028  return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
1029  (__v4sf) __B,
1030  (__v4sf) _mm_setzero_ps (),
1031  (__mmask8) __U,
1033 }
1034 
1035 #define _mm_max_round_ss(A, B, R) \
1036  ((__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
1037  (__v4sf)(__m128)(B), \
1038  (__v4sf)_mm_setzero_ps(), \
1039  (__mmask8)-1, (int)(R)))
1040 
1041 #define _mm_mask_max_round_ss(W, U, A, B, R) \
1042  ((__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
1043  (__v4sf)(__m128)(B), \
1044  (__v4sf)(__m128)(W), (__mmask8)(U), \
1045  (int)(R)))
1046 
1047 #define _mm_maskz_max_round_ss(U, A, B, R) \
1048  ((__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
1049  (__v4sf)(__m128)(B), \
1050  (__v4sf)_mm_setzero_ps(), \
1051  (__mmask8)(U), (int)(R)))
1052 
1053 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1054 _mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1055  return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
1056  (__v2df) __B,
1057  (__v2df) __W,
1058  (__mmask8) __U,
1060 }
1061 
1062 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1063 _mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1064  return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
1065  (__v2df) __B,
1066  (__v2df) _mm_setzero_pd (),
1067  (__mmask8) __U,
1069 }
1070 
1071 #define _mm_max_round_sd(A, B, R) \
1072  ((__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1073  (__v2df)(__m128d)(B), \
1074  (__v2df)_mm_setzero_pd(), \
1075  (__mmask8)-1, (int)(R)))
1076 
1077 #define _mm_mask_max_round_sd(W, U, A, B, R) \
1078  ((__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1079  (__v2df)(__m128d)(B), \
1080  (__v2df)(__m128d)(W), \
1081  (__mmask8)(U), (int)(R)))
1082 
1083 #define _mm_maskz_max_round_sd(U, A, B, R) \
1084  ((__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1085  (__v2df)(__m128d)(B), \
1086  (__v2df)_mm_setzero_pd(), \
1087  (__mmask8)(U), (int)(R)))
1088 
1089 static __inline __m512i
1091 _mm512_max_epi32(__m512i __A, __m512i __B)
1092 {
1093  return (__m512i)__builtin_elementwise_max((__v16si)__A, (__v16si)__B);
1094 }
1095 
1096 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1097 _mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1098 {
1099  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1100  (__v16si)_mm512_max_epi32(__A, __B),
1101  (__v16si)__W);
1102 }
1103 
1104 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1105 _mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1106 {
1107  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1108  (__v16si)_mm512_max_epi32(__A, __B),
1109  (__v16si)_mm512_setzero_si512());
1110 }
1111 
1112 static __inline __m512i __DEFAULT_FN_ATTRS512
1113 _mm512_max_epu32(__m512i __A, __m512i __B)
1114 {
1115  return (__m512i)__builtin_elementwise_max((__v16su)__A, (__v16su)__B);
1116 }
1117 
1118 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1119 _mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1120 {
1121  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1122  (__v16si)_mm512_max_epu32(__A, __B),
1123  (__v16si)__W);
1124 }
1125 
1126 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1127 _mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1128 {
1129  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1130  (__v16si)_mm512_max_epu32(__A, __B),
1131  (__v16si)_mm512_setzero_si512());
1132 }
1133 
1134 static __inline __m512i __DEFAULT_FN_ATTRS512
1135 _mm512_max_epi64(__m512i __A, __m512i __B)
1136 {
1137  return (__m512i)__builtin_elementwise_max((__v8di)__A, (__v8di)__B);
1138 }
1139 
1140 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1141 _mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1142 {
1143  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1144  (__v8di)_mm512_max_epi64(__A, __B),
1145  (__v8di)__W);
1146 }
1147 
1148 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1149 _mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1150 {
1151  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1152  (__v8di)_mm512_max_epi64(__A, __B),
1153  (__v8di)_mm512_setzero_si512());
1154 }
1155 
1156 static __inline __m512i __DEFAULT_FN_ATTRS512
1157 _mm512_max_epu64(__m512i __A, __m512i __B)
1158 {
1159  return (__m512i)__builtin_elementwise_max((__v8du)__A, (__v8du)__B);
1160 }
1161 
1162 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1163 _mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1164 {
1165  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1166  (__v8di)_mm512_max_epu64(__A, __B),
1167  (__v8di)__W);
1168 }
1169 
1170 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1171 _mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1172 {
1173  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1174  (__v8di)_mm512_max_epu64(__A, __B),
1175  (__v8di)_mm512_setzero_si512());
1176 }
1177 
1178 #define _mm512_min_round_pd(A, B, R) \
1179  ((__m512d)__builtin_ia32_minpd512((__v8df)(__m512d)(A), \
1180  (__v8df)(__m512d)(B), (int)(R)))
1181 
1182 #define _mm512_mask_min_round_pd(W, U, A, B, R) \
1183  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1184  (__v8df)_mm512_min_round_pd((A), (B), (R)), \
1185  (__v8df)(W)))
1186 
1187 #define _mm512_maskz_min_round_pd(U, A, B, R) \
1188  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1189  (__v8df)_mm512_min_round_pd((A), (B), (R)), \
1190  (__v8df)_mm512_setzero_pd()))
1191 
1192 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1193 _mm512_min_pd(__m512d __A, __m512d __B)
1194 {
1195  return (__m512d) __builtin_ia32_minpd512((__v8df) __A, (__v8df) __B,
1197 }
1198 
1199 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1200 _mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1201 {
1202  return (__m512d)__builtin_ia32_selectpd_512(__U,
1203  (__v8df)_mm512_min_pd(__A, __B),
1204  (__v8df)__W);
1205 }
1206 
1207 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1208 _mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1209 {
1210  return (__m512d)__builtin_ia32_selectpd_512(__U,
1211  (__v8df)_mm512_min_pd(__A, __B),
1212  (__v8df)_mm512_setzero_pd());
1213 }
1214 
1215 #define _mm512_min_round_ps(A, B, R) \
1216  ((__m512)__builtin_ia32_minps512((__v16sf)(__m512)(A), \
1217  (__v16sf)(__m512)(B), (int)(R)))
1218 
1219 #define _mm512_mask_min_round_ps(W, U, A, B, R) \
1220  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1221  (__v16sf)_mm512_min_round_ps((A), (B), (R)), \
1222  (__v16sf)(W)))
1223 
1224 #define _mm512_maskz_min_round_ps(U, A, B, R) \
1225  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1226  (__v16sf)_mm512_min_round_ps((A), (B), (R)), \
1227  (__v16sf)_mm512_setzero_ps()))
1228 
1229 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1230 _mm512_min_ps(__m512 __A, __m512 __B)
1231 {
1232  return (__m512) __builtin_ia32_minps512((__v16sf) __A, (__v16sf) __B,
1234 }
1235 
1236 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1237 _mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1238 {
1239  return (__m512)__builtin_ia32_selectps_512(__U,
1240  (__v16sf)_mm512_min_ps(__A, __B),
1241  (__v16sf)__W);
1242 }
1243 
1244 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1245 _mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1246 {
1247  return (__m512)__builtin_ia32_selectps_512(__U,
1248  (__v16sf)_mm512_min_ps(__A, __B),
1249  (__v16sf)_mm512_setzero_ps());
1250 }
1251 
1252 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1253 _mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1254  return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
1255  (__v4sf) __B,
1256  (__v4sf) __W,
1257  (__mmask8) __U,
1259 }
1260 
1261 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1262 _mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1263  return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
1264  (__v4sf) __B,
1265  (__v4sf) _mm_setzero_ps (),
1266  (__mmask8) __U,
1268 }
1269 
1270 #define _mm_min_round_ss(A, B, R) \
1271  ((__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1272  (__v4sf)(__m128)(B), \
1273  (__v4sf)_mm_setzero_ps(), \
1274  (__mmask8)-1, (int)(R)))
1275 
1276 #define _mm_mask_min_round_ss(W, U, A, B, R) \
1277  ((__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1278  (__v4sf)(__m128)(B), \
1279  (__v4sf)(__m128)(W), (__mmask8)(U), \
1280  (int)(R)))
1281 
1282 #define _mm_maskz_min_round_ss(U, A, B, R) \
1283  ((__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1284  (__v4sf)(__m128)(B), \
1285  (__v4sf)_mm_setzero_ps(), \
1286  (__mmask8)(U), (int)(R)))
1287 
1288 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1289 _mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1290  return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
1291  (__v2df) __B,
1292  (__v2df) __W,
1293  (__mmask8) __U,
1295 }
1296 
1297 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1298 _mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1299  return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
1300  (__v2df) __B,
1301  (__v2df) _mm_setzero_pd (),
1302  (__mmask8) __U,
1304 }
1305 
1306 #define _mm_min_round_sd(A, B, R) \
1307  ((__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1308  (__v2df)(__m128d)(B), \
1309  (__v2df)_mm_setzero_pd(), \
1310  (__mmask8)-1, (int)(R)))
1311 
1312 #define _mm_mask_min_round_sd(W, U, A, B, R) \
1313  ((__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1314  (__v2df)(__m128d)(B), \
1315  (__v2df)(__m128d)(W), \
1316  (__mmask8)(U), (int)(R)))
1317 
1318 #define _mm_maskz_min_round_sd(U, A, B, R) \
1319  ((__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1320  (__v2df)(__m128d)(B), \
1321  (__v2df)_mm_setzero_pd(), \
1322  (__mmask8)(U), (int)(R)))
1323 
1324 static __inline __m512i
1326 _mm512_min_epi32(__m512i __A, __m512i __B)
1327 {
1328  return (__m512i)__builtin_elementwise_min((__v16si)__A, (__v16si)__B);
1329 }
1330 
1331 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1332 _mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1333 {
1334  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1335  (__v16si)_mm512_min_epi32(__A, __B),
1336  (__v16si)__W);
1337 }
1338 
1339 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1340 _mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1341 {
1342  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1343  (__v16si)_mm512_min_epi32(__A, __B),
1344  (__v16si)_mm512_setzero_si512());
1345 }
1346 
1347 static __inline __m512i __DEFAULT_FN_ATTRS512
1348 _mm512_min_epu32(__m512i __A, __m512i __B)
1349 {
1350  return (__m512i)__builtin_elementwise_min((__v16su)__A, (__v16su)__B);
1351 }
1352 
1353 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1354 _mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1355 {
1356  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1357  (__v16si)_mm512_min_epu32(__A, __B),
1358  (__v16si)__W);
1359 }
1360 
1361 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1362 _mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1363 {
1364  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1365  (__v16si)_mm512_min_epu32(__A, __B),
1366  (__v16si)_mm512_setzero_si512());
1367 }
1368 
1369 static __inline __m512i __DEFAULT_FN_ATTRS512
1370 _mm512_min_epi64(__m512i __A, __m512i __B)
1371 {
1372  return (__m512i)__builtin_elementwise_min((__v8di)__A, (__v8di)__B);
1373 }
1374 
1375 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1376 _mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1377 {
1378  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1379  (__v8di)_mm512_min_epi64(__A, __B),
1380  (__v8di)__W);
1381 }
1382 
1383 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1384 _mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1385 {
1386  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1387  (__v8di)_mm512_min_epi64(__A, __B),
1388  (__v8di)_mm512_setzero_si512());
1389 }
1390 
1391 static __inline __m512i __DEFAULT_FN_ATTRS512
1392 _mm512_min_epu64(__m512i __A, __m512i __B)
1393 {
1394  return (__m512i)__builtin_elementwise_min((__v8du)__A, (__v8du)__B);
1395 }
1396 
1397 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1398 _mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1399 {
1400  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1401  (__v8di)_mm512_min_epu64(__A, __B),
1402  (__v8di)__W);
1403 }
1404 
1405 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1406 _mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1407 {
1408  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1409  (__v8di)_mm512_min_epu64(__A, __B),
1410  (__v8di)_mm512_setzero_si512());
1411 }
1412 
1413 static __inline __m512i __DEFAULT_FN_ATTRS512
1414 _mm512_mul_epi32(__m512i __X, __m512i __Y)
1415 {
1416  return (__m512i)__builtin_ia32_pmuldq512((__v16si)__X, (__v16si) __Y);
1417 }
1418 
1419 static __inline __m512i __DEFAULT_FN_ATTRS512
1420 _mm512_mask_mul_epi32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1421 {
1422  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1423  (__v8di)_mm512_mul_epi32(__X, __Y),
1424  (__v8di)__W);
1425 }
1426 
1427 static __inline __m512i __DEFAULT_FN_ATTRS512
1428 _mm512_maskz_mul_epi32(__mmask8 __M, __m512i __X, __m512i __Y)
1429 {
1430  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1431  (__v8di)_mm512_mul_epi32(__X, __Y),
1432  (__v8di)_mm512_setzero_si512 ());
1433 }
1434 
1435 static __inline __m512i __DEFAULT_FN_ATTRS512
1436 _mm512_mul_epu32(__m512i __X, __m512i __Y)
1437 {
1438  return (__m512i)__builtin_ia32_pmuludq512((__v16si)__X, (__v16si)__Y);
1439 }
1440 
1441 static __inline __m512i __DEFAULT_FN_ATTRS512
1442 _mm512_mask_mul_epu32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1443 {
1444  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1445  (__v8di)_mm512_mul_epu32(__X, __Y),
1446  (__v8di)__W);
1447 }
1448 
1449 static __inline __m512i __DEFAULT_FN_ATTRS512
1450 _mm512_maskz_mul_epu32(__mmask8 __M, __m512i __X, __m512i __Y)
1451 {
1452  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1453  (__v8di)_mm512_mul_epu32(__X, __Y),
1454  (__v8di)_mm512_setzero_si512 ());
1455 }
1456 
1457 static __inline __m512i __DEFAULT_FN_ATTRS512
1458 _mm512_mullo_epi32 (__m512i __A, __m512i __B)
1459 {
1460  return (__m512i) ((__v16su) __A * (__v16su) __B);
1461 }
1462 
1463 static __inline __m512i __DEFAULT_FN_ATTRS512
1464 _mm512_maskz_mullo_epi32(__mmask16 __M, __m512i __A, __m512i __B)
1465 {
1466  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1467  (__v16si)_mm512_mullo_epi32(__A, __B),
1468  (__v16si)_mm512_setzero_si512());
1469 }
1470 
1471 static __inline __m512i __DEFAULT_FN_ATTRS512
1472 _mm512_mask_mullo_epi32(__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1473 {
1474  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1475  (__v16si)_mm512_mullo_epi32(__A, __B),
1476  (__v16si)__W);
1477 }
1478 
1479 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1480 _mm512_mullox_epi64 (__m512i __A, __m512i __B) {
1481  return (__m512i) ((__v8du) __A * (__v8du) __B);
1482 }
1483 
1484 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1485 _mm512_mask_mullox_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
1486  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
1487  (__v8di)_mm512_mullox_epi64(__A, __B),
1488  (__v8di)__W);
1489 }
1490 
1491 #define _mm512_sqrt_round_pd(A, R) \
1492  ((__m512d)__builtin_ia32_sqrtpd512((__v8df)(__m512d)(A), (int)(R)))
1493 
1494 #define _mm512_mask_sqrt_round_pd(W, U, A, R) \
1495  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1496  (__v8df)_mm512_sqrt_round_pd((A), (R)), \
1497  (__v8df)(__m512d)(W)))
1498 
1499 #define _mm512_maskz_sqrt_round_pd(U, A, R) \
1500  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1501  (__v8df)_mm512_sqrt_round_pd((A), (R)), \
1502  (__v8df)_mm512_setzero_pd()))
1503 
1504 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1505 _mm512_sqrt_pd(__m512d __A)
1506 {
1507  return (__m512d)__builtin_ia32_sqrtpd512((__v8df)__A,
1509 }
1510 
1511 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1512 _mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1513 {
1514  return (__m512d)__builtin_ia32_selectpd_512(__U,
1515  (__v8df)_mm512_sqrt_pd(__A),
1516  (__v8df)__W);
1517 }
1518 
1519 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1520 _mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1521 {
1522  return (__m512d)__builtin_ia32_selectpd_512(__U,
1523  (__v8df)_mm512_sqrt_pd(__A),
1524  (__v8df)_mm512_setzero_pd());
1525 }
1526 
1527 #define _mm512_sqrt_round_ps(A, R) \
1528  ((__m512)__builtin_ia32_sqrtps512((__v16sf)(__m512)(A), (int)(R)))
1529 
1530 #define _mm512_mask_sqrt_round_ps(W, U, A, R) \
1531  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1532  (__v16sf)_mm512_sqrt_round_ps((A), (R)), \
1533  (__v16sf)(__m512)(W)))
1534 
1535 #define _mm512_maskz_sqrt_round_ps(U, A, R) \
1536  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1537  (__v16sf)_mm512_sqrt_round_ps((A), (R)), \
1538  (__v16sf)_mm512_setzero_ps()))
1539 
1540 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1541 _mm512_sqrt_ps(__m512 __A)
1542 {
1543  return (__m512)__builtin_ia32_sqrtps512((__v16sf)__A,
1545 }
1546 
1547 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1548 _mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
1549 {
1550  return (__m512)__builtin_ia32_selectps_512(__U,
1551  (__v16sf)_mm512_sqrt_ps(__A),
1552  (__v16sf)__W);
1553 }
1554 
1555 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1557 {
1558  return (__m512)__builtin_ia32_selectps_512(__U,
1559  (__v16sf)_mm512_sqrt_ps(__A),
1560  (__v16sf)_mm512_setzero_ps());
1561 }
1562 
1563 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1564 _mm512_rsqrt14_pd(__m512d __A)
1565 {
1566  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1567  (__v8df)
1568  _mm512_setzero_pd (),
1569  (__mmask8) -1);}
1570 
1571 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1572 _mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1573 {
1574  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1575  (__v8df) __W,
1576  (__mmask8) __U);
1577 }
1578 
1579 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1581 {
1582  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1583  (__v8df)
1584  _mm512_setzero_pd (),
1585  (__mmask8) __U);
1586 }
1587 
1588 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1590 {
1591  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1592  (__v16sf)
1593  _mm512_setzero_ps (),
1594  (__mmask16) -1);
1595 }
1596 
1597 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1598 _mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1599 {
1600  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1601  (__v16sf) __W,
1602  (__mmask16) __U);
1603 }
1604 
1605 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1607 {
1608  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1609  (__v16sf)
1610  _mm512_setzero_ps (),
1611  (__mmask16) __U);
1612 }
1613 
1614 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1615 _mm_rsqrt14_ss(__m128 __A, __m128 __B)
1616 {
1617  return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1618  (__v4sf) __B,
1619  (__v4sf)
1620  _mm_setzero_ps (),
1621  (__mmask8) -1);
1622 }
1623 
1624 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1625 _mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1626 {
1627  return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1628  (__v4sf) __B,
1629  (__v4sf) __W,
1630  (__mmask8) __U);
1631 }
1632 
1633 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1634 _mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1635 {
1636  return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1637  (__v4sf) __B,
1638  (__v4sf) _mm_setzero_ps (),
1639  (__mmask8) __U);
1640 }
1641 
1642 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1643 _mm_rsqrt14_sd(__m128d __A, __m128d __B)
1644 {
1645  return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
1646  (__v2df) __B,
1647  (__v2df)
1648  _mm_setzero_pd (),
1649  (__mmask8) -1);
1650 }
1651 
1652 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1653 _mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1654 {
1655  return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1656  (__v2df) __B,
1657  (__v2df) __W,
1658  (__mmask8) __U);
1659 }
1660 
1661 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1662 _mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1663 {
1664  return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1665  (__v2df) __B,
1666  (__v2df) _mm_setzero_pd (),
1667  (__mmask8) __U);
1668 }
1669 
1670 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1671 _mm512_rcp14_pd(__m512d __A)
1672 {
1673  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1674  (__v8df)
1675  _mm512_setzero_pd (),
1676  (__mmask8) -1);
1677 }
1678 
1679 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1680 _mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1681 {
1682  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1683  (__v8df) __W,
1684  (__mmask8) __U);
1685 }
1686 
1687 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1689 {
1690  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1691  (__v8df)
1692  _mm512_setzero_pd (),
1693  (__mmask8) __U);
1694 }
1695 
1696 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1697 _mm512_rcp14_ps(__m512 __A)
1698 {
1699  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1700  (__v16sf)
1701  _mm512_setzero_ps (),
1702  (__mmask16) -1);
1703 }
1704 
1705 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1706 _mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1707 {
1708  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1709  (__v16sf) __W,
1710  (__mmask16) __U);
1711 }
1712 
1713 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1715 {
1716  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1717  (__v16sf)
1718  _mm512_setzero_ps (),
1719  (__mmask16) __U);
1720 }
1721 
1722 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1723 _mm_rcp14_ss(__m128 __A, __m128 __B)
1724 {
1725  return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1726  (__v4sf) __B,
1727  (__v4sf)
1728  _mm_setzero_ps (),
1729  (__mmask8) -1);
1730 }
1731 
1732 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1733 _mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1734 {
1735  return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1736  (__v4sf) __B,
1737  (__v4sf) __W,
1738  (__mmask8) __U);
1739 }
1740 
1741 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1742 _mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1743 {
1744  return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1745  (__v4sf) __B,
1746  (__v4sf) _mm_setzero_ps (),
1747  (__mmask8) __U);
1748 }
1749 
1750 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1751 _mm_rcp14_sd(__m128d __A, __m128d __B)
1752 {
1753  return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
1754  (__v2df) __B,
1755  (__v2df)
1756  _mm_setzero_pd (),
1757  (__mmask8) -1);
1758 }
1759 
1760 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1761 _mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1762 {
1763  return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1764  (__v2df) __B,
1765  (__v2df) __W,
1766  (__mmask8) __U);
1767 }
1768 
1769 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1770 _mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1771 {
1772  return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1773  (__v2df) __B,
1774  (__v2df) _mm_setzero_pd (),
1775  (__mmask8) __U);
1776 }
1777 
1778 static __inline __m512 __DEFAULT_FN_ATTRS512
1779 _mm512_floor_ps(__m512 __A)
1780 {
1781  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1783  (__v16sf) __A, (unsigned short)-1,
1785 }
1786 
1787 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1788 _mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1789 {
1790  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1792  (__v16sf) __W, __U,
1794 }
1795 
1796 static __inline __m512d __DEFAULT_FN_ATTRS512
1797 _mm512_floor_pd(__m512d __A)
1798 {
1799  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1801  (__v8df) __A, (unsigned char)-1,
1803 }
1804 
1805 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1806 _mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1807 {
1808  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1810  (__v8df) __W, __U,
1812 }
1813 
1814 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1815 _mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1816 {
1817  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1819  (__v16sf) __W, __U,
1821 }
1822 
1823 static __inline __m512 __DEFAULT_FN_ATTRS512
1824 _mm512_ceil_ps(__m512 __A)
1825 {
1826  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1828  (__v16sf) __A, (unsigned short)-1,
1830 }
1831 
1832 static __inline __m512d __DEFAULT_FN_ATTRS512
1833 _mm512_ceil_pd(__m512d __A)
1834 {
1835  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1837  (__v8df) __A, (unsigned char)-1,
1839 }
1840 
1841 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1842 _mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1843 {
1844  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1846  (__v8df) __W, __U,
1848 }
1849 
1850 static __inline __m512i __DEFAULT_FN_ATTRS512
1851 _mm512_abs_epi64(__m512i __A)
1852 {
1853  return (__m512i)__builtin_elementwise_abs((__v8di)__A);
1854 }
1855 
1856 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1857 _mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1858 {
1859  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
1860  (__v8di)_mm512_abs_epi64(__A),
1861  (__v8di)__W);
1862 }
1863 
1864 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1866 {
1867  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
1868  (__v8di)_mm512_abs_epi64(__A),
1869  (__v8di)_mm512_setzero_si512());
1870 }
1871 
1872 static __inline __m512i __DEFAULT_FN_ATTRS512
1873 _mm512_abs_epi32(__m512i __A)
1874 {
1875  return (__m512i)__builtin_elementwise_abs((__v16si) __A);
1876 }
1877 
1878 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1879 _mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1880 {
1881  return (__m512i)__builtin_ia32_selectd_512(__U,
1882  (__v16si)_mm512_abs_epi32(__A),
1883  (__v16si)__W);
1884 }
1885 
1886 static __inline__ __m512i __DEFAULT_FN_ATTRS512
1888 {
1889  return (__m512i)__builtin_ia32_selectd_512(__U,
1890  (__v16si)_mm512_abs_epi32(__A),
1891  (__v16si)_mm512_setzero_si512());
1892 }
1893 
1894 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1895 _mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1896  __A = _mm_add_ss(__A, __B);
1897  return __builtin_ia32_selectss_128(__U, __A, __W);
1898 }
1899 
1900 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1901 _mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1902  __A = _mm_add_ss(__A, __B);
1903  return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
1904 }
1905 
1906 #define _mm_add_round_ss(A, B, R) \
1907  ((__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1908  (__v4sf)(__m128)(B), \
1909  (__v4sf)_mm_setzero_ps(), \
1910  (__mmask8)-1, (int)(R)))
1911 
1912 #define _mm_mask_add_round_ss(W, U, A, B, R) \
1913  ((__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1914  (__v4sf)(__m128)(B), \
1915  (__v4sf)(__m128)(W), (__mmask8)(U), \
1916  (int)(R)))
1917 
1918 #define _mm_maskz_add_round_ss(U, A, B, R) \
1919  ((__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1920  (__v4sf)(__m128)(B), \
1921  (__v4sf)_mm_setzero_ps(), \
1922  (__mmask8)(U), (int)(R)))
1923 
1924 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1925 _mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1926  __A = _mm_add_sd(__A, __B);
1927  return __builtin_ia32_selectsd_128(__U, __A, __W);
1928 }
1929 
1930 static __inline__ __m128d __DEFAULT_FN_ATTRS128
1931 _mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1932  __A = _mm_add_sd(__A, __B);
1933  return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
1934 }
1935 #define _mm_add_round_sd(A, B, R) \
1936  ((__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1937  (__v2df)(__m128d)(B), \
1938  (__v2df)_mm_setzero_pd(), \
1939  (__mmask8)-1, (int)(R)))
1940 
1941 #define _mm_mask_add_round_sd(W, U, A, B, R) \
1942  ((__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1943  (__v2df)(__m128d)(B), \
1944  (__v2df)(__m128d)(W), \
1945  (__mmask8)(U), (int)(R)))
1946 
1947 #define _mm_maskz_add_round_sd(U, A, B, R) \
1948  ((__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1949  (__v2df)(__m128d)(B), \
1950  (__v2df)_mm_setzero_pd(), \
1951  (__mmask8)(U), (int)(R)))
1952 
1953 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1954 _mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1955  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
1956  (__v8df)_mm512_add_pd(__A, __B),
1957  (__v8df)__W);
1958 }
1959 
1960 static __inline__ __m512d __DEFAULT_FN_ATTRS512
1961 _mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1962  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
1963  (__v8df)_mm512_add_pd(__A, __B),
1964  (__v8df)_mm512_setzero_pd());
1965 }
1966 
1967 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1968 _mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1969  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
1970  (__v16sf)_mm512_add_ps(__A, __B),
1971  (__v16sf)__W);
1972 }
1973 
1974 static __inline__ __m512 __DEFAULT_FN_ATTRS512
1975 _mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1976  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
1977  (__v16sf)_mm512_add_ps(__A, __B),
1978  (__v16sf)_mm512_setzero_ps());
1979 }
1980 
1981 #define _mm512_add_round_pd(A, B, R) \
1982  ((__m512d)__builtin_ia32_addpd512((__v8df)(__m512d)(A), \
1983  (__v8df)(__m512d)(B), (int)(R)))
1984 
1985 #define _mm512_mask_add_round_pd(W, U, A, B, R) \
1986  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1987  (__v8df)_mm512_add_round_pd((A), (B), (R)), \
1988  (__v8df)(__m512d)(W)))
1989 
1990 #define _mm512_maskz_add_round_pd(U, A, B, R) \
1991  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1992  (__v8df)_mm512_add_round_pd((A), (B), (R)), \
1993  (__v8df)_mm512_setzero_pd()))
1994 
1995 #define _mm512_add_round_ps(A, B, R) \
1996  ((__m512)__builtin_ia32_addps512((__v16sf)(__m512)(A), \
1997  (__v16sf)(__m512)(B), (int)(R)))
1998 
1999 #define _mm512_mask_add_round_ps(W, U, A, B, R) \
2000  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2001  (__v16sf)_mm512_add_round_ps((A), (B), (R)), \
2002  (__v16sf)(__m512)(W)))
2003 
2004 #define _mm512_maskz_add_round_ps(U, A, B, R) \
2005  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2006  (__v16sf)_mm512_add_round_ps((A), (B), (R)), \
2007  (__v16sf)_mm512_setzero_ps()))
2008 
2009 static __inline__ __m128 __DEFAULT_FN_ATTRS128
2010 _mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
2011  __A = _mm_sub_ss(__A, __B);
2012  return __builtin_ia32_selectss_128(__U, __A, __W);
2013 }
2014 
2015 static __inline__ __m128 __DEFAULT_FN_ATTRS128
2016 _mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
2017  __A = _mm_sub_ss(__A, __B);
2018  return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
2019 }
2020 #define _mm_sub_round_ss(A, B, R) \
2021  ((__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2022  (__v4sf)(__m128)(B), \
2023  (__v4sf)_mm_setzero_ps(), \
2024  (__mmask8)-1, (int)(R)))
2025 
2026 #define _mm_mask_sub_round_ss(W, U, A, B, R) \
2027  ((__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2028  (__v4sf)(__m128)(B), \
2029  (__v4sf)(__m128)(W), (__mmask8)(U), \
2030  (int)(R)))
2031 
2032 #define _mm_maskz_sub_round_ss(U, A, B, R) \
2033  ((__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2034  (__v4sf)(__m128)(B), \
2035  (__v4sf)_mm_setzero_ps(), \
2036  (__mmask8)(U), (int)(R)))
2037 
2038 static __inline__ __m128d __DEFAULT_FN_ATTRS128
2039 _mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
2040  __A = _mm_sub_sd(__A, __B);
2041  return __builtin_ia32_selectsd_128(__U, __A, __W);
2042 }
2043 
2044 static __inline__ __m128d __DEFAULT_FN_ATTRS128
2045 _mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
2046  __A = _mm_sub_sd(__A, __B);
2047  return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
2048 }
2049 
2050 #define _mm_sub_round_sd(A, B, R) \
2051  ((__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2052  (__v2df)(__m128d)(B), \
2053  (__v2df)_mm_setzero_pd(), \
2054  (__mmask8)-1, (int)(R)))
2055 
2056 #define _mm_mask_sub_round_sd(W, U, A, B, R) \
2057  ((__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2058  (__v2df)(__m128d)(B), \
2059  (__v2df)(__m128d)(W), \
2060  (__mmask8)(U), (int)(R)))
2061 
2062 #define _mm_maskz_sub_round_sd(U, A, B, R) \
2063  ((__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2064  (__v2df)(__m128d)(B), \
2065  (__v2df)_mm_setzero_pd(), \
2066  (__mmask8)(U), (int)(R)))
2067 
2068 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2069 _mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2070  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
2071  (__v8df)_mm512_sub_pd(__A, __B),
2072  (__v8df)__W);
2073 }
2074 
2075 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2076 _mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2077  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
2078  (__v8df)_mm512_sub_pd(__A, __B),
2079  (__v8df)_mm512_setzero_pd());
2080 }
2081 
2082 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2083 _mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2084  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
2085  (__v16sf)_mm512_sub_ps(__A, __B),
2086  (__v16sf)__W);
2087 }
2088 
2089 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2090 _mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2091  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
2092  (__v16sf)_mm512_sub_ps(__A, __B),
2093  (__v16sf)_mm512_setzero_ps());
2094 }
2095 
2096 #define _mm512_sub_round_pd(A, B, R) \
2097  ((__m512d)__builtin_ia32_subpd512((__v8df)(__m512d)(A), \
2098  (__v8df)(__m512d)(B), (int)(R)))
2099 
2100 #define _mm512_mask_sub_round_pd(W, U, A, B, R) \
2101  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
2102  (__v8df)_mm512_sub_round_pd((A), (B), (R)), \
2103  (__v8df)(__m512d)(W)))
2104 
2105 #define _mm512_maskz_sub_round_pd(U, A, B, R) \
2106  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
2107  (__v8df)_mm512_sub_round_pd((A), (B), (R)), \
2108  (__v8df)_mm512_setzero_pd()))
2109 
2110 #define _mm512_sub_round_ps(A, B, R) \
2111  ((__m512)__builtin_ia32_subps512((__v16sf)(__m512)(A), \
2112  (__v16sf)(__m512)(B), (int)(R)))
2113 
2114 #define _mm512_mask_sub_round_ps(W, U, A, B, R) \
2115  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2116  (__v16sf)_mm512_sub_round_ps((A), (B), (R)), \
2117  (__v16sf)(__m512)(W)))
2118 
2119 #define _mm512_maskz_sub_round_ps(U, A, B, R) \
2120  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2121  (__v16sf)_mm512_sub_round_ps((A), (B), (R)), \
2122  (__v16sf)_mm512_setzero_ps()))
2123 
2124 static __inline__ __m128 __DEFAULT_FN_ATTRS128
2125 _mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
2126  __A = _mm_mul_ss(__A, __B);
2127  return __builtin_ia32_selectss_128(__U, __A, __W);
2128 }
2129 
2130 static __inline__ __m128 __DEFAULT_FN_ATTRS128
2131 _mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
2132  __A = _mm_mul_ss(__A, __B);
2133  return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
2134 }
2135 #define _mm_mul_round_ss(A, B, R) \
2136  ((__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2137  (__v4sf)(__m128)(B), \
2138  (__v4sf)_mm_setzero_ps(), \
2139  (__mmask8)-1, (int)(R)))
2140 
2141 #define _mm_mask_mul_round_ss(W, U, A, B, R) \
2142  ((__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2143  (__v4sf)(__m128)(B), \
2144  (__v4sf)(__m128)(W), (__mmask8)(U), \
2145  (int)(R)))
2146 
2147 #define _mm_maskz_mul_round_ss(U, A, B, R) \
2148  ((__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2149  (__v4sf)(__m128)(B), \
2150  (__v4sf)_mm_setzero_ps(), \
2151  (__mmask8)(U), (int)(R)))
2152 
2153 static __inline__ __m128d __DEFAULT_FN_ATTRS128
2154 _mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
2155  __A = _mm_mul_sd(__A, __B);
2156  return __builtin_ia32_selectsd_128(__U, __A, __W);
2157 }
2158 
2159 static __inline__ __m128d __DEFAULT_FN_ATTRS128
2160 _mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
2161  __A = _mm_mul_sd(__A, __B);
2162  return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
2163 }
2164 
2165 #define _mm_mul_round_sd(A, B, R) \
2166  ((__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2167  (__v2df)(__m128d)(B), \
2168  (__v2df)_mm_setzero_pd(), \
2169  (__mmask8)-1, (int)(R)))
2170 
2171 #define _mm_mask_mul_round_sd(W, U, A, B, R) \
2172  ((__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2173  (__v2df)(__m128d)(B), \
2174  (__v2df)(__m128d)(W), \
2175  (__mmask8)(U), (int)(R)))
2176 
2177 #define _mm_maskz_mul_round_sd(U, A, B, R) \
2178  ((__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2179  (__v2df)(__m128d)(B), \
2180  (__v2df)_mm_setzero_pd(), \
2181  (__mmask8)(U), (int)(R)))
2182 
2183 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2184 _mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2185  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
2186  (__v8df)_mm512_mul_pd(__A, __B),
2187  (__v8df)__W);
2188 }
2189 
2190 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2191 _mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2192  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
2193  (__v8df)_mm512_mul_pd(__A, __B),
2194  (__v8df)_mm512_setzero_pd());
2195 }
2196 
2197 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2198 _mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2199  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
2200  (__v16sf)_mm512_mul_ps(__A, __B),
2201  (__v16sf)__W);
2202 }
2203 
2204 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2205 _mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2206  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
2207  (__v16sf)_mm512_mul_ps(__A, __B),
2208  (__v16sf)_mm512_setzero_ps());
2209 }
2210 
2211 #define _mm512_mul_round_pd(A, B, R) \
2212  ((__m512d)__builtin_ia32_mulpd512((__v8df)(__m512d)(A), \
2213  (__v8df)(__m512d)(B), (int)(R)))
2214 
2215 #define _mm512_mask_mul_round_pd(W, U, A, B, R) \
2216  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
2217  (__v8df)_mm512_mul_round_pd((A), (B), (R)), \
2218  (__v8df)(__m512d)(W)))
2219 
2220 #define _mm512_maskz_mul_round_pd(U, A, B, R) \
2221  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
2222  (__v8df)_mm512_mul_round_pd((A), (B), (R)), \
2223  (__v8df)_mm512_setzero_pd()))
2224 
2225 #define _mm512_mul_round_ps(A, B, R) \
2226  ((__m512)__builtin_ia32_mulps512((__v16sf)(__m512)(A), \
2227  (__v16sf)(__m512)(B), (int)(R)))
2228 
2229 #define _mm512_mask_mul_round_ps(W, U, A, B, R) \
2230  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2231  (__v16sf)_mm512_mul_round_ps((A), (B), (R)), \
2232  (__v16sf)(__m512)(W)))
2233 
2234 #define _mm512_maskz_mul_round_ps(U, A, B, R) \
2235  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2236  (__v16sf)_mm512_mul_round_ps((A), (B), (R)), \
2237  (__v16sf)_mm512_setzero_ps()))
2238 
2239 static __inline__ __m128 __DEFAULT_FN_ATTRS128
2240 _mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
2241  __A = _mm_div_ss(__A, __B);
2242  return __builtin_ia32_selectss_128(__U, __A, __W);
2243 }
2244 
2245 static __inline__ __m128 __DEFAULT_FN_ATTRS128
2246 _mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
2247  __A = _mm_div_ss(__A, __B);
2248  return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
2249 }
2250 
2251 #define _mm_div_round_ss(A, B, R) \
2252  ((__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2253  (__v4sf)(__m128)(B), \
2254  (__v4sf)_mm_setzero_ps(), \
2255  (__mmask8)-1, (int)(R)))
2256 
2257 #define _mm_mask_div_round_ss(W, U, A, B, R) \
2258  ((__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2259  (__v4sf)(__m128)(B), \
2260  (__v4sf)(__m128)(W), (__mmask8)(U), \
2261  (int)(R)))
2262 
2263 #define _mm_maskz_div_round_ss(U, A, B, R) \
2264  ((__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2265  (__v4sf)(__m128)(B), \
2266  (__v4sf)_mm_setzero_ps(), \
2267  (__mmask8)(U), (int)(R)))
2268 
2269 static __inline__ __m128d __DEFAULT_FN_ATTRS128
2270 _mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
2271  __A = _mm_div_sd(__A, __B);
2272  return __builtin_ia32_selectsd_128(__U, __A, __W);
2273 }
2274 
2275 static __inline__ __m128d __DEFAULT_FN_ATTRS128
2276 _mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
2277  __A = _mm_div_sd(__A, __B);
2278  return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
2279 }
2280 
2281 #define _mm_div_round_sd(A, B, R) \
2282  ((__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2283  (__v2df)(__m128d)(B), \
2284  (__v2df)_mm_setzero_pd(), \
2285  (__mmask8)-1, (int)(R)))
2286 
2287 #define _mm_mask_div_round_sd(W, U, A, B, R) \
2288  ((__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2289  (__v2df)(__m128d)(B), \
2290  (__v2df)(__m128d)(W), \
2291  (__mmask8)(U), (int)(R)))
2292 
2293 #define _mm_maskz_div_round_sd(U, A, B, R) \
2294  ((__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2295  (__v2df)(__m128d)(B), \
2296  (__v2df)_mm_setzero_pd(), \
2297  (__mmask8)(U), (int)(R)))
2298 
2299 static __inline __m512d __DEFAULT_FN_ATTRS512
2300 _mm512_div_pd(__m512d __a, __m512d __b)
2301 {
2302  return (__m512d)((__v8df)__a/(__v8df)__b);
2303 }
2304 
2305 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2306 _mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2307  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
2308  (__v8df)_mm512_div_pd(__A, __B),
2309  (__v8df)__W);
2310 }
2311 
2312 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2313 _mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2314  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
2315  (__v8df)_mm512_div_pd(__A, __B),
2316  (__v8df)_mm512_setzero_pd());
2317 }
2318 
2319 static __inline __m512 __DEFAULT_FN_ATTRS512
2320 _mm512_div_ps(__m512 __a, __m512 __b)
2321 {
2322  return (__m512)((__v16sf)__a/(__v16sf)__b);
2323 }
2324 
2325 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2326 _mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2327  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
2328  (__v16sf)_mm512_div_ps(__A, __B),
2329  (__v16sf)__W);
2330 }
2331 
2332 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2333 _mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2334  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
2335  (__v16sf)_mm512_div_ps(__A, __B),
2336  (__v16sf)_mm512_setzero_ps());
2337 }
2338 
2339 #define _mm512_div_round_pd(A, B, R) \
2340  ((__m512d)__builtin_ia32_divpd512((__v8df)(__m512d)(A), \
2341  (__v8df)(__m512d)(B), (int)(R)))
2342 
2343 #define _mm512_mask_div_round_pd(W, U, A, B, R) \
2344  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
2345  (__v8df)_mm512_div_round_pd((A), (B), (R)), \
2346  (__v8df)(__m512d)(W)))
2347 
2348 #define _mm512_maskz_div_round_pd(U, A, B, R) \
2349  ((__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
2350  (__v8df)_mm512_div_round_pd((A), (B), (R)), \
2351  (__v8df)_mm512_setzero_pd()))
2352 
2353 #define _mm512_div_round_ps(A, B, R) \
2354  ((__m512)__builtin_ia32_divps512((__v16sf)(__m512)(A), \
2355  (__v16sf)(__m512)(B), (int)(R)))
2356 
2357 #define _mm512_mask_div_round_ps(W, U, A, B, R) \
2358  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2359  (__v16sf)_mm512_div_round_ps((A), (B), (R)), \
2360  (__v16sf)(__m512)(W)))
2361 
2362 #define _mm512_maskz_div_round_ps(U, A, B, R) \
2363  ((__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
2364  (__v16sf)_mm512_div_round_ps((A), (B), (R)), \
2365  (__v16sf)_mm512_setzero_ps()))
2366 
2367 #define _mm512_roundscale_ps(A, B) \
2368  ((__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2369  (__v16sf)_mm512_undefined_ps(), \
2370  (__mmask16)-1, \
2371  _MM_FROUND_CUR_DIRECTION))
2372 
2373 #define _mm512_mask_roundscale_ps(A, B, C, imm) \
2374  ((__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2375  (__v16sf)(__m512)(A), (__mmask16)(B), \
2376  _MM_FROUND_CUR_DIRECTION))
2377 
2378 #define _mm512_maskz_roundscale_ps(A, B, imm) \
2379  ((__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2380  (__v16sf)_mm512_setzero_ps(), \
2381  (__mmask16)(A), \
2382  _MM_FROUND_CUR_DIRECTION))
2383 
2384 #define _mm512_mask_roundscale_round_ps(A, B, C, imm, R) \
2385  ((__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2386  (__v16sf)(__m512)(A), (__mmask16)(B), \
2387  (int)(R)))
2388 
2389 #define _mm512_maskz_roundscale_round_ps(A, B, imm, R) \
2390  ((__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2391  (__v16sf)_mm512_setzero_ps(), \
2392  (__mmask16)(A), (int)(R)))
2393 
2394 #define _mm512_roundscale_round_ps(A, imm, R) \
2395  ((__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(imm), \
2396  (__v16sf)_mm512_undefined_ps(), \
2397  (__mmask16)-1, (int)(R)))
2398 
2399 #define _mm512_roundscale_pd(A, B) \
2400  ((__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2401  (__v8df)_mm512_undefined_pd(), \
2402  (__mmask8)-1, \
2403  _MM_FROUND_CUR_DIRECTION))
2404 
2405 #define _mm512_mask_roundscale_pd(A, B, C, imm) \
2406  ((__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2407  (__v8df)(__m512d)(A), (__mmask8)(B), \
2408  _MM_FROUND_CUR_DIRECTION))
2409 
2410 #define _mm512_maskz_roundscale_pd(A, B, imm) \
2411  ((__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2412  (__v8df)_mm512_setzero_pd(), \
2413  (__mmask8)(A), \
2414  _MM_FROUND_CUR_DIRECTION))
2415 
2416 #define _mm512_mask_roundscale_round_pd(A, B, C, imm, R) \
2417  ((__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2418  (__v8df)(__m512d)(A), (__mmask8)(B), \
2419  (int)(R)))
2420 
2421 #define _mm512_maskz_roundscale_round_pd(A, B, imm, R) \
2422  ((__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2423  (__v8df)_mm512_setzero_pd(), \
2424  (__mmask8)(A), (int)(R)))
2425 
2426 #define _mm512_roundscale_round_pd(A, imm, R) \
2427  ((__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(imm), \
2428  (__v8df)_mm512_undefined_pd(), \
2429  (__mmask8)-1, (int)(R)))
2430 
2431 #define _mm512_fmadd_round_pd(A, B, C, R) \
2432  ((__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2433  (__v8df)(__m512d)(B), \
2434  (__v8df)(__m512d)(C), \
2435  (__mmask8)-1, (int)(R)))
2436 
2437 
2438 #define _mm512_mask_fmadd_round_pd(A, U, B, C, R) \
2439  ((__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2440  (__v8df)(__m512d)(B), \
2441  (__v8df)(__m512d)(C), \
2442  (__mmask8)(U), (int)(R)))
2443 
2444 
2445 #define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) \
2446  ((__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2447  (__v8df)(__m512d)(B), \
2448  (__v8df)(__m512d)(C), \
2449  (__mmask8)(U), (int)(R)))
2450 
2451 
2452 #define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) \
2453  ((__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2454  (__v8df)(__m512d)(B), \
2455  (__v8df)(__m512d)(C), \
2456  (__mmask8)(U), (int)(R)))
2457 
2458 
2459 #define _mm512_fmsub_round_pd(A, B, C, R) \
2460  ((__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2461  (__v8df)(__m512d)(B), \
2462  -(__v8df)(__m512d)(C), \
2463  (__mmask8)-1, (int)(R)))
2464 
2465 
2466 #define _mm512_mask_fmsub_round_pd(A, U, B, C, R) \
2467  ((__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2468  (__v8df)(__m512d)(B), \
2469  -(__v8df)(__m512d)(C), \
2470  (__mmask8)(U), (int)(R)))
2471 
2472 
2473 #define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) \
2474  ((__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2475  (__v8df)(__m512d)(B), \
2476  -(__v8df)(__m512d)(C), \
2477  (__mmask8)(U), (int)(R)))
2478 
2479 
2480 #define _mm512_fnmadd_round_pd(A, B, C, R) \
2481  ((__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2482  (__v8df)(__m512d)(B), \
2483  (__v8df)(__m512d)(C), \
2484  (__mmask8)-1, (int)(R)))
2485 
2486 
2487 #define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) \
2488  ((__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2489  (__v8df)(__m512d)(B), \
2490  (__v8df)(__m512d)(C), \
2491  (__mmask8)(U), (int)(R)))
2492 
2493 
2494 #define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) \
2495  ((__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2496  (__v8df)(__m512d)(B), \
2497  (__v8df)(__m512d)(C), \
2498  (__mmask8)(U), (int)(R)))
2499 
2500 
2501 #define _mm512_fnmsub_round_pd(A, B, C, R) \
2502  ((__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2503  (__v8df)(__m512d)(B), \
2504  -(__v8df)(__m512d)(C), \
2505  (__mmask8)-1, (int)(R)))
2506 
2507 
2508 #define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) \
2509  ((__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2510  (__v8df)(__m512d)(B), \
2511  -(__v8df)(__m512d)(C), \
2512  (__mmask8)(U), (int)(R)))
2513 
2514 
2515 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2516 _mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2517 {
2518  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2519  (__v8df) __B,
2520  (__v8df) __C,
2521  (__mmask8) -1,
2523 }
2524 
2525 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2526 _mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2527 {
2528  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2529  (__v8df) __B,
2530  (__v8df) __C,
2531  (__mmask8) __U,
2533 }
2534 
2535 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2536 _mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2537 {
2538  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2539  (__v8df) __B,
2540  (__v8df) __C,
2541  (__mmask8) __U,
2543 }
2544 
2545 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2546 _mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2547 {
2548  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2549  (__v8df) __B,
2550  (__v8df) __C,
2551  (__mmask8) __U,
2553 }
2554 
2555 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2556 _mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2557 {
2558  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2559  (__v8df) __B,
2560  -(__v8df) __C,
2561  (__mmask8) -1,
2563 }
2564 
2565 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2566 _mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2567 {
2568  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2569  (__v8df) __B,
2570  -(__v8df) __C,
2571  (__mmask8) __U,
2573 }
2574 
2575 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2576 _mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2577 {
2578  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2579  (__v8df) __B,
2580  -(__v8df) __C,
2581  (__mmask8) __U,
2583 }
2584 
2585 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2586 _mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2587 {
2588  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2589  -(__v8df) __B,
2590  (__v8df) __C,
2591  (__mmask8) -1,
2593 }
2594 
2595 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2596 _mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2597 {
2598  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2599  (__v8df) __B,
2600  (__v8df) __C,
2601  (__mmask8) __U,
2603 }
2604 
2605 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2606 _mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2607 {
2608  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2609  (__v8df) __B,
2610  (__v8df) __C,
2611  (__mmask8) __U,
2613 }
2614 
2615 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2616 _mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2617 {
2618  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2619  -(__v8df) __B,
2620  -(__v8df) __C,
2621  (__mmask8) -1,
2623 }
2624 
2625 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2626 _mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2627 {
2628  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2629  (__v8df) __B,
2630  -(__v8df) __C,
2631  (__mmask8) __U,
2633 }
2634 
2635 #define _mm512_fmadd_round_ps(A, B, C, R) \
2636  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2637  (__v16sf)(__m512)(B), \
2638  (__v16sf)(__m512)(C), \
2639  (__mmask16)-1, (int)(R)))
2640 
2641 
2642 #define _mm512_mask_fmadd_round_ps(A, U, B, C, R) \
2643  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2644  (__v16sf)(__m512)(B), \
2645  (__v16sf)(__m512)(C), \
2646  (__mmask16)(U), (int)(R)))
2647 
2648 
2649 #define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) \
2650  ((__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2651  (__v16sf)(__m512)(B), \
2652  (__v16sf)(__m512)(C), \
2653  (__mmask16)(U), (int)(R)))
2654 
2655 
2656 #define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) \
2657  ((__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2658  (__v16sf)(__m512)(B), \
2659  (__v16sf)(__m512)(C), \
2660  (__mmask16)(U), (int)(R)))
2661 
2662 
2663 #define _mm512_fmsub_round_ps(A, B, C, R) \
2664  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2665  (__v16sf)(__m512)(B), \
2666  -(__v16sf)(__m512)(C), \
2667  (__mmask16)-1, (int)(R)))
2668 
2669 
2670 #define _mm512_mask_fmsub_round_ps(A, U, B, C, R) \
2671  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2672  (__v16sf)(__m512)(B), \
2673  -(__v16sf)(__m512)(C), \
2674  (__mmask16)(U), (int)(R)))
2675 
2676 
2677 #define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) \
2678  ((__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2679  (__v16sf)(__m512)(B), \
2680  -(__v16sf)(__m512)(C), \
2681  (__mmask16)(U), (int)(R)))
2682 
2683 
2684 #define _mm512_fnmadd_round_ps(A, B, C, R) \
2685  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2686  -(__v16sf)(__m512)(B), \
2687  (__v16sf)(__m512)(C), \
2688  (__mmask16)-1, (int)(R)))
2689 
2690 
2691 #define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) \
2692  ((__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2693  (__v16sf)(__m512)(B), \
2694  (__v16sf)(__m512)(C), \
2695  (__mmask16)(U), (int)(R)))
2696 
2697 
2698 #define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) \
2699  ((__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2700  (__v16sf)(__m512)(B), \
2701  (__v16sf)(__m512)(C), \
2702  (__mmask16)(U), (int)(R)))
2703 
2704 
2705 #define _mm512_fnmsub_round_ps(A, B, C, R) \
2706  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2707  -(__v16sf)(__m512)(B), \
2708  -(__v16sf)(__m512)(C), \
2709  (__mmask16)-1, (int)(R)))
2710 
2711 
2712 #define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) \
2713  ((__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2714  (__v16sf)(__m512)(B), \
2715  -(__v16sf)(__m512)(C), \
2716  (__mmask16)(U), (int)(R)))
2717 
2718 
2719 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2720 _mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2721 {
2722  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2723  (__v16sf) __B,
2724  (__v16sf) __C,
2725  (__mmask16) -1,
2727 }
2728 
2729 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2730 _mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2731 {
2732  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2733  (__v16sf) __B,
2734  (__v16sf) __C,
2735  (__mmask16) __U,
2737 }
2738 
2739 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2740 _mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2741 {
2742  return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2743  (__v16sf) __B,
2744  (__v16sf) __C,
2745  (__mmask16) __U,
2747 }
2748 
2749 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2750 _mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2751 {
2752  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2753  (__v16sf) __B,
2754  (__v16sf) __C,
2755  (__mmask16) __U,
2757 }
2758 
2759 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2760 _mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2761 {
2762  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2763  (__v16sf) __B,
2764  -(__v16sf) __C,
2765  (__mmask16) -1,
2767 }
2768 
2769 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2770 _mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2771 {
2772  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2773  (__v16sf) __B,
2774  -(__v16sf) __C,
2775  (__mmask16) __U,
2777 }
2778 
2779 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2780 _mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2781 {
2782  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2783  (__v16sf) __B,
2784  -(__v16sf) __C,
2785  (__mmask16) __U,
2787 }
2788 
2789 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2790 _mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2791 {
2792  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2793  -(__v16sf) __B,
2794  (__v16sf) __C,
2795  (__mmask16) -1,
2797 }
2798 
2799 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2800 _mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2801 {
2802  return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2803  (__v16sf) __B,
2804  (__v16sf) __C,
2805  (__mmask16) __U,
2807 }
2808 
2809 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2810 _mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2811 {
2812  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2813  (__v16sf) __B,
2814  (__v16sf) __C,
2815  (__mmask16) __U,
2817 }
2818 
2819 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2820 _mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2821 {
2822  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2823  -(__v16sf) __B,
2824  -(__v16sf) __C,
2825  (__mmask16) -1,
2827 }
2828 
2829 static __inline__ __m512 __DEFAULT_FN_ATTRS512
2830 _mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2831 {
2832  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2833  (__v16sf) __B,
2834  -(__v16sf) __C,
2835  (__mmask16) __U,
2837 }
2838 
2839 #define _mm512_fmaddsub_round_pd(A, B, C, R) \
2840  ((__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2841  (__v8df)(__m512d)(B), \
2842  (__v8df)(__m512d)(C), \
2843  (__mmask8)-1, (int)(R)))
2844 
2845 
2846 #define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) \
2847  ((__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2848  (__v8df)(__m512d)(B), \
2849  (__v8df)(__m512d)(C), \
2850  (__mmask8)(U), (int)(R)))
2851 
2852 
2853 #define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) \
2854  ((__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2855  (__v8df)(__m512d)(B), \
2856  (__v8df)(__m512d)(C), \
2857  (__mmask8)(U), (int)(R)))
2858 
2859 
2860 #define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) \
2861  ((__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2862  (__v8df)(__m512d)(B), \
2863  (__v8df)(__m512d)(C), \
2864  (__mmask8)(U), (int)(R)))
2865 
2866 
2867 #define _mm512_fmsubadd_round_pd(A, B, C, R) \
2868  ((__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2869  (__v8df)(__m512d)(B), \
2870  -(__v8df)(__m512d)(C), \
2871  (__mmask8)-1, (int)(R)))
2872 
2873 
2874 #define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) \
2875  ((__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2876  (__v8df)(__m512d)(B), \
2877  -(__v8df)(__m512d)(C), \
2878  (__mmask8)(U), (int)(R)))
2879 
2880 
2881 #define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) \
2882  ((__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2883  (__v8df)(__m512d)(B), \
2884  -(__v8df)(__m512d)(C), \
2885  (__mmask8)(U), (int)(R)))
2886 
2887 
2888 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2889 _mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2890 {
2891  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2892  (__v8df) __B,
2893  (__v8df) __C,
2894  (__mmask8) -1,
2896 }
2897 
2898 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2899 _mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2900 {
2901  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2902  (__v8df) __B,
2903  (__v8df) __C,
2904  (__mmask8) __U,
2906 }
2907 
2908 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2909 _mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2910 {
2911  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2912  (__v8df) __B,
2913  (__v8df) __C,
2914  (__mmask8) __U,
2916 }
2917 
2918 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2919 _mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2920 {
2921  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2922  (__v8df) __B,
2923  (__v8df) __C,
2924  (__mmask8) __U,
2926 }
2927 
2928 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2929 _mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2930 {
2931  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2932  (__v8df) __B,
2933  -(__v8df) __C,
2934  (__mmask8) -1,
2936 }
2937 
2938 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2939 _mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2940 {
2941  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2942  (__v8df) __B,
2943  -(__v8df) __C,
2944  (__mmask8) __U,
2946 }
2947 
2948 static __inline__ __m512d __DEFAULT_FN_ATTRS512
2949 _mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2950 {
2951  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2952  (__v8df) __B,
2953  -(__v8df) __C,
2954  (__mmask8) __U,
2956 }
2957 
2958 #define _mm512_fmaddsub_round_ps(A, B, C, R) \
2959  ((__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2960  (__v16sf)(__m512)(B), \
2961  (__v16sf)(__m512)(C), \
2962  (__mmask16)-1, (int)(R)))
2963 
2964 
2965 #define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) \
2966  ((__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2967  (__v16sf)(__m512)(B), \
2968  (__v16sf)(__m512)(C), \
2969  (__mmask16)(U), (int)(R)))
2970 
2971 
2972 #define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) \
2973  ((__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2974  (__v16sf)(__m512)(B), \
2975  (__v16sf)(__m512)(C), \
2976  (__mmask16)(U), (int)(R)))
2977 
2978 
2979 #define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) \
2980  ((__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2981  (__v16sf)(__m512)(B), \
2982  (__v16sf)(__m512)(C), \
2983  (__mmask16)(U), (int)(R)))
2984 
2985 
2986 #define _mm512_fmsubadd_round_ps(A, B, C, R) \
2987  ((__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2988  (__v16sf)(__m512)(B), \
2989  -(__v16sf)(__m512)(C), \
2990  (__mmask16)-1, (int)(R)))
2991 
2992 
2993 #define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) \
2994  ((__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2995  (__v16sf)(__m512)(B), \
2996  -(__v16sf)(__m512)(C), \
2997  (__mmask16)(U), (int)(R)))
2998 
2999 
3000 #define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) \
3001  ((__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3002  (__v16sf)(__m512)(B), \
3003  -(__v16sf)(__m512)(C), \
3004  (__mmask16)(U), (int)(R)))
3005 
3006 
3007 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3008 _mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
3009 {
3010  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3011  (__v16sf) __B,
3012  (__v16sf) __C,
3013  (__mmask16) -1,
3015 }
3016 
3017 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3018 _mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3019 {
3020  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3021  (__v16sf) __B,
3022  (__v16sf) __C,
3023  (__mmask16) __U,
3025 }
3026 
3027 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3028 _mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3029 {
3030  return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3031  (__v16sf) __B,
3032  (__v16sf) __C,
3033  (__mmask16) __U,
3035 }
3036 
3037 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3038 _mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3039 {
3040  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3041  (__v16sf) __B,
3042  (__v16sf) __C,
3043  (__mmask16) __U,
3045 }
3046 
3047 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3048 _mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3049 {
3050  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3051  (__v16sf) __B,
3052  -(__v16sf) __C,
3053  (__mmask16) -1,
3055 }
3056 
3057 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3058 _mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3059 {
3060  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3061  (__v16sf) __B,
3062  -(__v16sf) __C,
3063  (__mmask16) __U,
3065 }
3066 
3067 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3068 _mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3069 {
3070  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3071  (__v16sf) __B,
3072  -(__v16sf) __C,
3073  (__mmask16) __U,
3075 }
3076 
3077 #define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) \
3078  ((__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3079  (__v8df)(__m512d)(B), \
3080  (__v8df)(__m512d)(C), \
3081  (__mmask8)(U), (int)(R)))
3082 
3083 
3084 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3085 _mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3086 {
3087  return (__m512d)__builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3088  (__v8df) __B,
3089  (__v8df) __C,
3090  (__mmask8) __U,
3092 }
3093 
3094 #define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) \
3095  ((__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3096  (__v16sf)(__m512)(B), \
3097  (__v16sf)(__m512)(C), \
3098  (__mmask16)(U), (int)(R)))
3099 
3100 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3101 _mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3102 {
3103  return (__m512)__builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3104  (__v16sf) __B,
3105  (__v16sf) __C,
3106  (__mmask16) __U,
3108 }
3109 
3110 #define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) \
3111  ((__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3112  (__v8df)(__m512d)(B), \
3113  (__v8df)(__m512d)(C), \
3114  (__mmask8)(U), (int)(R)))
3115 
3116 
3117 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3118 _mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3119 {
3120  return (__m512d)__builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3121  (__v8df) __B,
3122  (__v8df) __C,
3123  (__mmask8) __U,
3125 }
3126 
3127 #define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) \
3128  ((__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3129  (__v16sf)(__m512)(B), \
3130  (__v16sf)(__m512)(C), \
3131  (__mmask16)(U), (int)(R)))
3132 
3133 
3134 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3135 _mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3136 {
3137  return (__m512)__builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3138  (__v16sf) __B,
3139  (__v16sf) __C,
3140  (__mmask16) __U,
3142 }
3143 
3144 #define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) \
3145  ((__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
3146  -(__v8df)(__m512d)(B), \
3147  (__v8df)(__m512d)(C), \
3148  (__mmask8)(U), (int)(R)))
3149 
3150 
3151 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3152 _mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3153 {
3154  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3155  -(__v8df) __B,
3156  (__v8df) __C,
3157  (__mmask8) __U,
3159 }
3160 
3161 #define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) \
3162  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
3163  -(__v16sf)(__m512)(B), \
3164  (__v16sf)(__m512)(C), \
3165  (__mmask16)(U), (int)(R)))
3166 
3167 
3168 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3169 _mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3170 {
3171  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3172  -(__v16sf) __B,
3173  (__v16sf) __C,
3174  (__mmask16) __U,
3176 }
3177 
3178 #define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) \
3179  ((__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
3180  -(__v8df)(__m512d)(B), \
3181  -(__v8df)(__m512d)(C), \
3182  (__mmask8)(U), (int)(R)))
3183 
3184 
3185 #define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) \
3186  ((__m512d)__builtin_ia32_vfmsubpd512_mask3(-(__v8df)(__m512d)(A), \
3187  (__v8df)(__m512d)(B), \
3188  (__v8df)(__m512d)(C), \
3189  (__mmask8)(U), (int)(R)))
3190 
3191 
3192 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3193 _mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3194 {
3195  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3196  -(__v8df) __B,
3197  -(__v8df) __C,
3198  (__mmask8) __U,
3200 }
3201 
3202 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3203 _mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3204 {
3205  return (__m512d) __builtin_ia32_vfmsubpd512_mask3 (-(__v8df) __A,
3206  (__v8df) __B,
3207  (__v8df) __C,
3208  (__mmask8) __U,
3210 }
3211 
3212 #define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) \
3213  ((__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
3214  -(__v16sf)(__m512)(B), \
3215  -(__v16sf)(__m512)(C), \
3216  (__mmask16)(U), (int)(R)))
3217 
3218 
3219 #define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) \
3220  ((__m512)__builtin_ia32_vfmsubps512_mask3(-(__v16sf)(__m512)(A), \
3221  (__v16sf)(__m512)(B), \
3222  (__v16sf)(__m512)(C), \
3223  (__mmask16)(U), (int)(R)))
3224 
3225 
3226 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3227 _mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3228 {
3229  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3230  -(__v16sf) __B,
3231  -(__v16sf) __C,
3232  (__mmask16) __U,
3234 }
3235 
3236 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3237 _mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3238 {
3239  return (__m512) __builtin_ia32_vfmsubps512_mask3 (-(__v16sf) __A,
3240  (__v16sf) __B,
3241  (__v16sf) __C,
3242  (__mmask16) __U,
3244 }
3245 
3246 
3247 
3248 /* Vector permutations */
3249 
3250 static __inline __m512i __DEFAULT_FN_ATTRS512
3251 _mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3252 {
3253  return (__m512i)__builtin_ia32_vpermi2vard512((__v16si)__A, (__v16si) __I,
3254  (__v16si) __B);
3255 }
3256 
3257 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3258 _mm512_mask_permutex2var_epi32(__m512i __A, __mmask16 __U, __m512i __I,
3259  __m512i __B)
3260 {
3261  return (__m512i)__builtin_ia32_selectd_512(__U,
3262  (__v16si)_mm512_permutex2var_epi32(__A, __I, __B),
3263  (__v16si)__A);
3264 }
3265 
3266 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3267 _mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U,
3268  __m512i __B)
3269 {
3270  return (__m512i)__builtin_ia32_selectd_512(__U,
3271  (__v16si)_mm512_permutex2var_epi32(__A, __I, __B),
3272  (__v16si)__I);
3273 }
3274 
3275 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3276 _mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I,
3277  __m512i __B)
3278 {
3279  return (__m512i)__builtin_ia32_selectd_512(__U,
3280  (__v16si)_mm512_permutex2var_epi32(__A, __I, __B),
3281  (__v16si)_mm512_setzero_si512());
3282 }
3283 
3284 static __inline __m512i __DEFAULT_FN_ATTRS512
3285 _mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3286 {
3287  return (__m512i)__builtin_ia32_vpermi2varq512((__v8di)__A, (__v8di) __I,
3288  (__v8di) __B);
3289 }
3290 
3291 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3292 _mm512_mask_permutex2var_epi64(__m512i __A, __mmask8 __U, __m512i __I,
3293  __m512i __B)
3294 {
3295  return (__m512i)__builtin_ia32_selectq_512(__U,
3296  (__v8di)_mm512_permutex2var_epi64(__A, __I, __B),
3297  (__v8di)__A);
3298 }
3299 
3300 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3301 _mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U,
3302  __m512i __B)
3303 {
3304  return (__m512i)__builtin_ia32_selectq_512(__U,
3305  (__v8di)_mm512_permutex2var_epi64(__A, __I, __B),
3306  (__v8di)__I);
3307 }
3308 
3309 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3310 _mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I,
3311  __m512i __B)
3312 {
3313  return (__m512i)__builtin_ia32_selectq_512(__U,
3314  (__v8di)_mm512_permutex2var_epi64(__A, __I, __B),
3315  (__v8di)_mm512_setzero_si512());
3316 }
3317 
3318 #define _mm512_alignr_epi64(A, B, I) \
3319  ((__m512i)__builtin_ia32_alignq512((__v8di)(__m512i)(A), \
3320  (__v8di)(__m512i)(B), (int)(I)))
3321 
3322 #define _mm512_mask_alignr_epi64(W, U, A, B, imm) \
3323  ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
3324  (__v8di)_mm512_alignr_epi64((A), (B), (imm)), \
3325  (__v8di)(__m512i)(W)))
3326 
3327 #define _mm512_maskz_alignr_epi64(U, A, B, imm) \
3328  ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
3329  (__v8di)_mm512_alignr_epi64((A), (B), (imm)), \
3330  (__v8di)_mm512_setzero_si512()))
3331 
3332 #define _mm512_alignr_epi32(A, B, I) \
3333  ((__m512i)__builtin_ia32_alignd512((__v16si)(__m512i)(A), \
3334  (__v16si)(__m512i)(B), (int)(I)))
3335 
3336 #define _mm512_mask_alignr_epi32(W, U, A, B, imm) \
3337  ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
3338  (__v16si)_mm512_alignr_epi32((A), (B), (imm)), \
3339  (__v16si)(__m512i)(W)))
3340 
3341 #define _mm512_maskz_alignr_epi32(U, A, B, imm) \
3342  ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
3343  (__v16si)_mm512_alignr_epi32((A), (B), (imm)), \
3344  (__v16si)_mm512_setzero_si512()))
3345 /* Vector Extract */
3346 
3347 #define _mm512_extractf64x4_pd(A, I) \
3348  ((__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3349  (__v4df)_mm256_undefined_pd(), \
3350  (__mmask8)-1))
3351 
3352 #define _mm512_mask_extractf64x4_pd(W, U, A, imm) \
3353  ((__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3354  (__v4df)(__m256d)(W), \
3355  (__mmask8)(U)))
3356 
3357 #define _mm512_maskz_extractf64x4_pd(U, A, imm) \
3358  ((__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3359  (__v4df)_mm256_setzero_pd(), \
3360  (__mmask8)(U)))
3361 
3362 #define _mm512_extractf32x4_ps(A, I) \
3363  ((__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3364  (__v4sf)_mm_undefined_ps(), \
3365  (__mmask8)-1))
3366 
3367 #define _mm512_mask_extractf32x4_ps(W, U, A, imm) \
3368  ((__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3369  (__v4sf)(__m128)(W), \
3370  (__mmask8)(U)))
3371 
3372 #define _mm512_maskz_extractf32x4_ps(U, A, imm) \
3373  ((__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3374  (__v4sf)_mm_setzero_ps(), \
3375  (__mmask8)(U)))
3376 
3377 /* Vector Blend */
3378 
3379 static __inline __m512d __DEFAULT_FN_ATTRS512
3380 _mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3381 {
3382  return (__m512d) __builtin_ia32_selectpd_512 ((__mmask8) __U,
3383  (__v8df) __W,
3384  (__v8df) __A);
3385 }
3386 
3387 static __inline __m512 __DEFAULT_FN_ATTRS512
3388 _mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3389 {
3390  return (__m512) __builtin_ia32_selectps_512 ((__mmask16) __U,
3391  (__v16sf) __W,
3392  (__v16sf) __A);
3393 }
3394 
3395 static __inline __m512i __DEFAULT_FN_ATTRS512
3396 _mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3397 {
3398  return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __U,
3399  (__v8di) __W,
3400  (__v8di) __A);
3401 }
3402 
3403 static __inline __m512i __DEFAULT_FN_ATTRS512
3404 _mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3405 {
3406  return (__m512i) __builtin_ia32_selectd_512 ((__mmask16) __U,
3407  (__v16si) __W,
3408  (__v16si) __A);
3409 }
3410 
3411 /* Compare */
3412 
3413 #define _mm512_cmp_round_ps_mask(A, B, P, R) \
3414  ((__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
3415  (__v16sf)(__m512)(B), (int)(P), \
3416  (__mmask16)-1, (int)(R)))
3417 
3418 #define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) \
3419  ((__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
3420  (__v16sf)(__m512)(B), (int)(P), \
3421  (__mmask16)(U), (int)(R)))
3422 
3423 #define _mm512_cmp_ps_mask(A, B, P) \
3424  _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3425 #define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3426  _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3427 
3428 #define _mm512_cmpeq_ps_mask(A, B) \
3429  _mm512_cmp_ps_mask((A), (B), _CMP_EQ_OQ)
3430 #define _mm512_mask_cmpeq_ps_mask(k, A, B) \
3431  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_EQ_OQ)
3432 
3433 #define _mm512_cmplt_ps_mask(A, B) \
3434  _mm512_cmp_ps_mask((A), (B), _CMP_LT_OS)
3435 #define _mm512_mask_cmplt_ps_mask(k, A, B) \
3436  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_LT_OS)
3437 
3438 #define _mm512_cmple_ps_mask(A, B) \
3439  _mm512_cmp_ps_mask((A), (B), _CMP_LE_OS)
3440 #define _mm512_mask_cmple_ps_mask(k, A, B) \
3441  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_LE_OS)
3442 
3443 #define _mm512_cmpunord_ps_mask(A, B) \
3444  _mm512_cmp_ps_mask((A), (B), _CMP_UNORD_Q)
3445 #define _mm512_mask_cmpunord_ps_mask(k, A, B) \
3446  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_UNORD_Q)
3447 
3448 #define _mm512_cmpneq_ps_mask(A, B) \
3449  _mm512_cmp_ps_mask((A), (B), _CMP_NEQ_UQ)
3450 #define _mm512_mask_cmpneq_ps_mask(k, A, B) \
3451  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_NEQ_UQ)
3452 
3453 #define _mm512_cmpnlt_ps_mask(A, B) \
3454  _mm512_cmp_ps_mask((A), (B), _CMP_NLT_US)
3455 #define _mm512_mask_cmpnlt_ps_mask(k, A, B) \
3456  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_NLT_US)
3457 
3458 #define _mm512_cmpnle_ps_mask(A, B) \
3459  _mm512_cmp_ps_mask((A), (B), _CMP_NLE_US)
3460 #define _mm512_mask_cmpnle_ps_mask(k, A, B) \
3461  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_NLE_US)
3462 
3463 #define _mm512_cmpord_ps_mask(A, B) \
3464  _mm512_cmp_ps_mask((A), (B), _CMP_ORD_Q)
3465 #define _mm512_mask_cmpord_ps_mask(k, A, B) \
3466  _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_ORD_Q)
3467 
3468 #define _mm512_cmp_round_pd_mask(A, B, P, R) \
3469  ((__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
3470  (__v8df)(__m512d)(B), (int)(P), \
3471  (__mmask8)-1, (int)(R)))
3472 
3473 #define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) \
3474  ((__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
3475  (__v8df)(__m512d)(B), (int)(P), \
3476  (__mmask8)(U), (int)(R)))
3477 
3478 #define _mm512_cmp_pd_mask(A, B, P) \
3479  _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3480 #define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3481  _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3482 
3483 #define _mm512_cmpeq_pd_mask(A, B) \
3484  _mm512_cmp_pd_mask((A), (B), _CMP_EQ_OQ)
3485 #define _mm512_mask_cmpeq_pd_mask(k, A, B) \
3486  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_EQ_OQ)
3487 
3488 #define _mm512_cmplt_pd_mask(A, B) \
3489  _mm512_cmp_pd_mask((A), (B), _CMP_LT_OS)
3490 #define _mm512_mask_cmplt_pd_mask(k, A, B) \
3491  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_LT_OS)
3492 
3493 #define _mm512_cmple_pd_mask(A, B) \
3494  _mm512_cmp_pd_mask((A), (B), _CMP_LE_OS)
3495 #define _mm512_mask_cmple_pd_mask(k, A, B) \
3496  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_LE_OS)
3497 
3498 #define _mm512_cmpunord_pd_mask(A, B) \
3499  _mm512_cmp_pd_mask((A), (B), _CMP_UNORD_Q)
3500 #define _mm512_mask_cmpunord_pd_mask(k, A, B) \
3501  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_UNORD_Q)
3502 
3503 #define _mm512_cmpneq_pd_mask(A, B) \
3504  _mm512_cmp_pd_mask((A), (B), _CMP_NEQ_UQ)
3505 #define _mm512_mask_cmpneq_pd_mask(k, A, B) \
3506  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_NEQ_UQ)
3507 
3508 #define _mm512_cmpnlt_pd_mask(A, B) \
3509  _mm512_cmp_pd_mask((A), (B), _CMP_NLT_US)
3510 #define _mm512_mask_cmpnlt_pd_mask(k, A, B) \
3511  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_NLT_US)
3512 
3513 #define _mm512_cmpnle_pd_mask(A, B) \
3514  _mm512_cmp_pd_mask((A), (B), _CMP_NLE_US)
3515 #define _mm512_mask_cmpnle_pd_mask(k, A, B) \
3516  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_NLE_US)
3517 
3518 #define _mm512_cmpord_pd_mask(A, B) \
3519  _mm512_cmp_pd_mask((A), (B), _CMP_ORD_Q)
3520 #define _mm512_mask_cmpord_pd_mask(k, A, B) \
3521  _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_ORD_Q)
3522 
3523 /* Conversion */
3524 
3525 #define _mm512_cvtt_roundps_epu32(A, R) \
3526  ((__m512i)__builtin_ia32_cvttps2udq512_mask((__v16sf)(__m512)(A), \
3527  (__v16si)_mm512_undefined_epi32(), \
3528  (__mmask16)-1, (int)(R)))
3529 
3530 #define _mm512_mask_cvtt_roundps_epu32(W, U, A, R) \
3531  ((__m512i)__builtin_ia32_cvttps2udq512_mask((__v16sf)(__m512)(A), \
3532  (__v16si)(__m512i)(W), \
3533  (__mmask16)(U), (int)(R)))
3534 
3535 #define _mm512_maskz_cvtt_roundps_epu32(U, A, R) \
3536  ((__m512i)__builtin_ia32_cvttps2udq512_mask((__v16sf)(__m512)(A), \
3537  (__v16si)_mm512_setzero_si512(), \
3538  (__mmask16)(U), (int)(R)))
3539 
3540 
3541 static __inline __m512i __DEFAULT_FN_ATTRS512
3543 {
3544  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3545  (__v16si)
3547  (__mmask16) -1,
3549 }
3550 
3551 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3552 _mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3553 {
3554  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3555  (__v16si) __W,
3556  (__mmask16) __U,
3558 }
3559 
3560 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3562 {
3563  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3564  (__v16si) _mm512_setzero_si512 (),
3565  (__mmask16) __U,
3567 }
3568 
3569 #define _mm512_cvt_roundepi32_ps(A, R) \
3570  ((__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
3571  (__v16sf)_mm512_setzero_ps(), \
3572  (__mmask16)-1, (int)(R)))
3573 
3574 #define _mm512_mask_cvt_roundepi32_ps(W, U, A, R) \
3575  ((__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
3576  (__v16sf)(__m512)(W), \
3577  (__mmask16)(U), (int)(R)))
3578 
3579 #define _mm512_maskz_cvt_roundepi32_ps(U, A, R) \
3580  ((__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
3581  (__v16sf)_mm512_setzero_ps(), \
3582  (__mmask16)(U), (int)(R)))
3583 
3584 #define _mm512_cvt_roundepu32_ps(A, R) \
3585  ((__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
3586  (__v16sf)_mm512_setzero_ps(), \
3587  (__mmask16)-1, (int)(R)))
3588 
3589 #define _mm512_mask_cvt_roundepu32_ps(W, U, A, R) \
3590  ((__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
3591  (__v16sf)(__m512)(W), \
3592  (__mmask16)(U), (int)(R)))
3593 
3594 #define _mm512_maskz_cvt_roundepu32_ps(U, A, R) \
3595  ((__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
3596  (__v16sf)_mm512_setzero_ps(), \
3597  (__mmask16)(U), (int)(R)))
3598 
3599 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3600 _mm512_cvtepu32_ps (__m512i __A)
3601 {
3602  return (__m512)__builtin_convertvector((__v16su)__A, __v16sf);
3603 }
3604 
3605 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3606 _mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3607 {
3608  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
3609  (__v16sf)_mm512_cvtepu32_ps(__A),
3610  (__v16sf)__W);
3611 }
3612 
3613 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3615 {
3616  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
3617  (__v16sf)_mm512_cvtepu32_ps(__A),
3618  (__v16sf)_mm512_setzero_ps());
3619 }
3620 
3621 static __inline __m512d __DEFAULT_FN_ATTRS512
3623 {
3624  return (__m512d)__builtin_convertvector((__v8si)__A, __v8df);
3625 }
3626 
3627 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3628 _mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3629 {
3630  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
3631  (__v8df)_mm512_cvtepi32_pd(__A),
3632  (__v8df)__W);
3633 }
3634 
3635 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3637 {
3638  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
3639  (__v8df)_mm512_cvtepi32_pd(__A),
3640  (__v8df)_mm512_setzero_pd());
3641 }
3642 
3643 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3645 {
3646  return (__m512d) _mm512_cvtepi32_pd(_mm512_castsi512_si256(__A));
3647 }
3648 
3649 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3650 _mm512_mask_cvtepi32lo_pd(__m512d __W, __mmask8 __U,__m512i __A)
3651 {
3652  return (__m512d) _mm512_mask_cvtepi32_pd(__W, __U, _mm512_castsi512_si256(__A));
3653 }
3654 
3655 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3656 _mm512_cvtepi32_ps (__m512i __A)
3657 {
3658  return (__m512)__builtin_convertvector((__v16si)__A, __v16sf);
3659 }
3660 
3661 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3662 _mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3663 {
3664  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
3665  (__v16sf)_mm512_cvtepi32_ps(__A),
3666  (__v16sf)__W);
3667 }
3668 
3669 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3671 {
3672  return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
3673  (__v16sf)_mm512_cvtepi32_ps(__A),
3674  (__v16sf)_mm512_setzero_ps());
3675 }
3676 
3677 static __inline __m512d __DEFAULT_FN_ATTRS512
3679 {
3680  return (__m512d)__builtin_convertvector((__v8su)__A, __v8df);
3681 }
3682 
3683 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3684 _mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3685 {
3686  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
3687  (__v8df)_mm512_cvtepu32_pd(__A),
3688  (__v8df)__W);
3689 }
3690 
3691 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3693 {
3694  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
3695  (__v8df)_mm512_cvtepu32_pd(__A),
3696  (__v8df)_mm512_setzero_pd());
3697 }
3698 
3699 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3701 {
3702  return (__m512d) _mm512_cvtepu32_pd(_mm512_castsi512_si256(__A));
3703 }
3704 
3705 static __inline__ __m512d __DEFAULT_FN_ATTRS512
3706 _mm512_mask_cvtepu32lo_pd(__m512d __W, __mmask8 __U,__m512i __A)
3707 {
3708  return (__m512d) _mm512_mask_cvtepu32_pd(__W, __U, _mm512_castsi512_si256(__A));
3709 }
3710 
3711 #define _mm512_cvt_roundpd_ps(A, R) \
3712  ((__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3713  (__v8sf)_mm256_setzero_ps(), \
3714  (__mmask8)-1, (int)(R)))
3715 
3716 #define _mm512_mask_cvt_roundpd_ps(W, U, A, R) \
3717  ((__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3718  (__v8sf)(__m256)(W), (__mmask8)(U), \
3719  (int)(R)))
3720 
3721 #define _mm512_maskz_cvt_roundpd_ps(U, A, R) \
3722  ((__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3723  (__v8sf)_mm256_setzero_ps(), \
3724  (__mmask8)(U), (int)(R)))
3725 
3726 static __inline__ __m256 __DEFAULT_FN_ATTRS512
3727 _mm512_cvtpd_ps (__m512d __A)
3728 {
3729  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3730  (__v8sf) _mm256_undefined_ps (),
3731  (__mmask8) -1,
3733 }
3734 
3735 static __inline__ __m256 __DEFAULT_FN_ATTRS512
3736 _mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3737 {
3738  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3739  (__v8sf) __W,
3740  (__mmask8) __U,
3742 }
3743 
3744 static __inline__ __m256 __DEFAULT_FN_ATTRS512
3746 {
3747  return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3748  (__v8sf) _mm256_setzero_ps (),
3749  (__mmask8) __U,
3751 }
3752 
3753 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3754 _mm512_cvtpd_pslo (__m512d __A)
3755 {
3756  return (__m512) __builtin_shufflevector((__v8sf) _mm512_cvtpd_ps(__A),
3757  (__v8sf) _mm256_setzero_ps (),
3758  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
3759 }
3760 
3761 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3762 _mm512_mask_cvtpd_pslo (__m512 __W, __mmask8 __U,__m512d __A)
3763 {
3764  return (__m512) __builtin_shufflevector (
3766  __U, __A),
3767  (__v8sf) _mm256_setzero_ps (),
3768  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
3769 }
3770 
3771 #define _mm512_cvt_roundps_ph(A, I) \
3772  ((__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3773  (__v16hi)_mm256_undefined_si256(), \
3774  (__mmask16)-1))
3775 
3776 #define _mm512_mask_cvt_roundps_ph(U, W, A, I) \
3777  ((__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3778  (__v16hi)(__m256i)(U), \
3779  (__mmask16)(W)))
3780 
3781 #define _mm512_maskz_cvt_roundps_ph(W, A, I) \
3782  ((__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3783  (__v16hi)_mm256_setzero_si256(), \
3784  (__mmask16)(W)))
3785 
3786 #define _mm512_cvtps_ph _mm512_cvt_roundps_ph
3787 #define _mm512_mask_cvtps_ph _mm512_mask_cvt_roundps_ph
3788 #define _mm512_maskz_cvtps_ph _mm512_maskz_cvt_roundps_ph
3789 
3790 #define _mm512_cvt_roundph_ps(A, R) \
3791  ((__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(__m256i)(A), \
3792  (__v16sf)_mm512_undefined_ps(), \
3793  (__mmask16)-1, (int)(R)))
3794 
3795 #define _mm512_mask_cvt_roundph_ps(W, U, A, R) \
3796  ((__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(__m256i)(A), \
3797  (__v16sf)(__m512)(W), \
3798  (__mmask16)(U), (int)(R)))
3799 
3800 #define _mm512_maskz_cvt_roundph_ps(U, A, R) \
3801  ((__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(__m256i)(A), \
3802  (__v16sf)_mm512_setzero_ps(), \
3803  (__mmask16)(U), (int)(R)))
3804 
3805 
3806 static __inline __m512 __DEFAULT_FN_ATTRS512
3807 _mm512_cvtph_ps(__m256i __A)
3808 {
3809  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3810  (__v16sf)
3811  _mm512_setzero_ps (),
3812  (__mmask16) -1,
3814 }
3815 
3816 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3817 _mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
3818 {
3819  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3820  (__v16sf) __W,
3821  (__mmask16) __U,
3823 }
3824 
3825 static __inline__ __m512 __DEFAULT_FN_ATTRS512
3827 {
3828  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3829  (__v16sf) _mm512_setzero_ps (),
3830  (__mmask16) __U,
3832 }
3833 
3834 #define _mm512_cvtt_roundpd_epi32(A, R) \
3835  ((__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3836  (__v8si)_mm256_setzero_si256(), \
3837  (__mmask8)-1, (int)(R)))
3838 
3839 #define _mm512_mask_cvtt_roundpd_epi32(W, U, A, R) \
3840  ((__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3841  (__v8si)(__m256i)(W), \
3842  (__mmask8)(U), (int)(R)))
3843 
3844 #define _mm512_maskz_cvtt_roundpd_epi32(U, A, R) \
3845  ((__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3846  (__v8si)_mm256_setzero_si256(), \
3847  (__mmask8)(U), (int)(R)))
3848 
3849 static __inline __m256i __DEFAULT_FN_ATTRS512
3851 {
3852  return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
3853  (__v8si)_mm256_setzero_si256(),
3854  (__mmask8) -1,
3856 }
3857 
3858 static __inline__ __m256i __DEFAULT_FN_ATTRS512
3859 _mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3860 {
3861  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3862  (__v8si) __W,
3863  (__mmask8) __U,
3865 }
3866 
3867 static __inline__ __m256i __DEFAULT_FN_ATTRS512
3869 {
3870  return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3871  (__v8si) _mm256_setzero_si256 (),
3872  (__mmask8) __U,
3874 }
3875 
3876 #define _mm512_cvtt_roundps_epi32(A, R) \
3877  ((__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3878  (__v16si)_mm512_setzero_si512(), \
3879  (__mmask16)-1, (int)(R)))
3880 
3881 #define _mm512_mask_cvtt_roundps_epi32(W, U, A, R) \
3882  ((__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3883  (__v16si)(__m512i)(W), \
3884  (__mmask16)(U), (int)(R)))
3885 
3886 #define _mm512_maskz_cvtt_roundps_epi32(U, A, R) \
3887  ((__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3888  (__v16si)_mm512_setzero_si512(), \
3889  (__mmask16)(U), (int)(R)))
3890 
3891 static __inline __m512i __DEFAULT_FN_ATTRS512
3893 {
3894  return (__m512i)
3895  __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3896  (__v16si) _mm512_setzero_si512 (),
3898 }
3899 
3900 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3901 _mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3902 {
3903  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3904  (__v16si) __W,
3905  (__mmask16) __U,
3907 }
3908 
3909 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3911 {
3912  return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3913  (__v16si) _mm512_setzero_si512 (),
3914  (__mmask16) __U,
3916 }
3917 
3918 #define _mm512_cvt_roundps_epi32(A, R) \
3919  ((__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
3920  (__v16si)_mm512_setzero_si512(), \
3921  (__mmask16)-1, (int)(R)))
3922 
3923 #define _mm512_mask_cvt_roundps_epi32(W, U, A, R) \
3924  ((__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
3925  (__v16si)(__m512i)(W), \
3926  (__mmask16)(U), (int)(R)))
3927 
3928 #define _mm512_maskz_cvt_roundps_epi32(U, A, R) \
3929  ((__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
3930  (__v16si)_mm512_setzero_si512(), \
3931  (__mmask16)(U), (int)(R)))
3932 
3933 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3935 {
3936  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3937  (__v16si) _mm512_undefined_epi32 (),
3938  (__mmask16) -1,
3940 }
3941 
3942 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3943 _mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3944 {
3945  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3946  (__v16si) __W,
3947  (__mmask16) __U,
3949 }
3950 
3951 static __inline__ __m512i __DEFAULT_FN_ATTRS512
3953 {
3954  return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3955  (__v16si)
3957  (__mmask16) __U,
3959 }
3960 
3961 #define _mm512_cvt_roundpd_epi32(A, R) \
3962  ((__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3963  (__v8si)_mm256_setzero_si256(), \
3964  (__mmask8)-1, (int)(R)))
3965 
3966 #define _mm512_mask_cvt_roundpd_epi32(W, U, A, R) \
3967  ((__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3968  (__v8si)(__m256i)(W), \
3969  (__mmask8)(U), (int)(R)))
3970 
3971 #define _mm512_maskz_cvt_roundpd_epi32(U, A, R) \
3972  ((__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3973  (__v8si)_mm256_setzero_si256(), \
3974  (__mmask8)(U), (int)(R)))
3975 
3976 static __inline__ __m256i __DEFAULT_FN_ATTRS512
3977 _mm512_cvtpd_epi32 (__m512d __A)
3978 {
3979  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3980  (__v8si)
3982  (__mmask8) -1,
3984 }
3985 
3986 static __inline__ __m256i __DEFAULT_FN_ATTRS512
3987 _mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3988 {
3989  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3990  (__v8si) __W,
3991  (__mmask8) __U,
3993 }
3994 
3995 static __inline__ __m256i __DEFAULT_FN_ATTRS512
3997 {
3998  return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3999  (__v8si)
4001  (__mmask8) __U,
4003 }
4004 
4005 #define _mm512_cvt_roundps_epu32(A, R) \
4006  ((__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
4007  (__v16si)_mm512_setzero_si512(), \
4008  (__mmask16)-1, (int)(R)))
4009 
4010 #define _mm512_mask_cvt_roundps_epu32(W, U, A, R) \
4011  ((__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
4012  (__v16si)(__m512i)(W), \
4013  (__mmask16)(U), (int)(R)))
4014 
4015 #define _mm512_maskz_cvt_roundps_epu32(U, A, R) \
4016  ((__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
4017  (__v16si)_mm512_setzero_si512(), \
4018  (__mmask16)(U), (int)(R)))
4019 
4020 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4021 _mm512_cvtps_epu32 ( __m512 __A)
4022 {
4023  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
4024  (__v16si)\
4026  (__mmask16) -1,\
4028 }
4029 
4030 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4031 _mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
4032 {
4033  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4034  (__v16si) __W,
4035  (__mmask16) __U,
4037 }
4038 
4039 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4041 {
4042  return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4043  (__v16si)
4045  (__mmask16) __U ,
4047 }
4048 
4049 #define _mm512_cvt_roundpd_epu32(A, R) \
4050  ((__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4051  (__v8si)_mm256_setzero_si256(), \
4052  (__mmask8)-1, (int)(R)))
4053 
4054 #define _mm512_mask_cvt_roundpd_epu32(W, U, A, R) \
4055  ((__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4056  (__v8si)(__m256i)(W), \
4057  (__mmask8)(U), (int)(R)))
4058 
4059 #define _mm512_maskz_cvt_roundpd_epu32(U, A, R) \
4060  ((__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4061  (__v8si)_mm256_setzero_si256(), \
4062  (__mmask8)(U), (int)(R)))
4063 
4064 static __inline__ __m256i __DEFAULT_FN_ATTRS512
4065 _mm512_cvtpd_epu32 (__m512d __A)
4066 {
4067  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4068  (__v8si)
4070  (__mmask8) -1,
4072 }
4073 
4074 static __inline__ __m256i __DEFAULT_FN_ATTRS512
4075 _mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
4076 {
4077  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4078  (__v8si) __W,
4079  (__mmask8) __U,
4081 }
4082 
4083 static __inline__ __m256i __DEFAULT_FN_ATTRS512
4085 {
4086  return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4087  (__v8si)
4089  (__mmask8) __U,
4091 }
4092 
4093 static __inline__ double __DEFAULT_FN_ATTRS512
4095 {
4096  return __a[0];
4097 }
4098 
4099 static __inline__ float __DEFAULT_FN_ATTRS512
4101 {
4102  return __a[0];
4103 }
4104 
4105 /* Unpack and Interleave */
4106 
4107 static __inline __m512d __DEFAULT_FN_ATTRS512
4108 _mm512_unpackhi_pd(__m512d __a, __m512d __b)
4109 {
4110  return (__m512d)__builtin_shufflevector((__v8df)__a, (__v8df)__b,
4111  1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
4112 }
4113 
4114 static __inline__ __m512d __DEFAULT_FN_ATTRS512
4115 _mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4116 {
4117  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4118  (__v8df)_mm512_unpackhi_pd(__A, __B),
4119  (__v8df)__W);
4120 }
4121 
4122 static __inline__ __m512d __DEFAULT_FN_ATTRS512
4123 _mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B)
4124 {
4125  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4126  (__v8df)_mm512_unpackhi_pd(__A, __B),
4127  (__v8df)_mm512_setzero_pd());
4128 }
4129 
4130 static __inline __m512d __DEFAULT_FN_ATTRS512
4131 _mm512_unpacklo_pd(__m512d __a, __m512d __b)
4132 {
4133  return (__m512d)__builtin_shufflevector((__v8df)__a, (__v8df)__b,
4134  0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
4135 }
4136 
4137 static __inline__ __m512d __DEFAULT_FN_ATTRS512
4138 _mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4139 {
4140  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4141  (__v8df)_mm512_unpacklo_pd(__A, __B),
4142  (__v8df)__W);
4143 }
4144 
4145 static __inline__ __m512d __DEFAULT_FN_ATTRS512
4146 _mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
4147 {
4148  return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4149  (__v8df)_mm512_unpacklo_pd(__A, __B),
4150  (__v8df)_mm512_setzero_pd());
4151 }
4152 
4153 static __inline __m512 __DEFAULT_FN_ATTRS512
4154 _mm512_unpackhi_ps(__m512 __a, __m512 __b)
4155 {
4156  return (__m512)__builtin_shufflevector((__v16sf)__a, (__v16sf)__b,
4157  2, 18, 3, 19,
4158  2+4, 18+4, 3+4, 19+4,
4159  2+8, 18+8, 3+8, 19+8,
4160  2+12, 18+12, 3+12, 19+12);
4161 }
4162 
4163 static __inline__ __m512 __DEFAULT_FN_ATTRS512
4164 _mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4165 {
4166  return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4167  (__v16sf)_mm512_unpackhi_ps(__A, __B),
4168  (__v16sf)__W);
4169 }
4170 
4171 static __inline__ __m512 __DEFAULT_FN_ATTRS512
4172 _mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
4173 {
4174  return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4175  (__v16sf)_mm512_unpackhi_ps(__A, __B),
4176  (__v16sf)_mm512_setzero_ps());
4177 }
4178 
4179 static __inline __m512 __DEFAULT_FN_ATTRS512
4180 _mm512_unpacklo_ps(__m512 __a, __m512 __b)
4181 {
4182  return (__m512)__builtin_shufflevector((__v16sf)__a, (__v16sf)__b,
4183  0, 16, 1, 17,
4184  0+4, 16+4, 1+4, 17+4,
4185  0+8, 16+8, 1+8, 17+8,
4186  0+12, 16+12, 1+12, 17+12);
4187 }
4188 
4189 static __inline__ __m512 __DEFAULT_FN_ATTRS512
4190 _mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4191 {
4192  return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4193  (__v16sf)_mm512_unpacklo_ps(__A, __B),
4194  (__v16sf)__W);
4195 }
4196 
4197 static __inline__ __m512 __DEFAULT_FN_ATTRS512
4198 _mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
4199 {
4200  return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4201  (__v16sf)_mm512_unpacklo_ps(__A, __B),
4202  (__v16sf)_mm512_setzero_ps());
4203 }
4204 
4205 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4206 _mm512_unpackhi_epi32(__m512i __A, __m512i __B)
4207 {
4208  return (__m512i)__builtin_shufflevector((__v16si)__A, (__v16si)__B,
4209  2, 18, 3, 19,
4210  2+4, 18+4, 3+4, 19+4,
4211  2+8, 18+8, 3+8, 19+8,
4212  2+12, 18+12, 3+12, 19+12);
4213 }
4214 
4215 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4216 _mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4217 {
4218  return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4219  (__v16si)_mm512_unpackhi_epi32(__A, __B),
4220  (__v16si)__W);
4221 }
4222 
4223 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4224 _mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B)
4225 {
4226  return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4227  (__v16si)_mm512_unpackhi_epi32(__A, __B),
4228  (__v16si)_mm512_setzero_si512());
4229 }
4230 
4231 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4232 _mm512_unpacklo_epi32(__m512i __A, __m512i __B)
4233 {
4234  return (__m512i)__builtin_shufflevector((__v16si)__A, (__v16si)__B,
4235  0, 16, 1, 17,
4236  0+4, 16+4, 1+4, 17+4,
4237  0+8, 16+8, 1+8, 17+8,
4238  0+12, 16+12, 1+12, 17+12);
4239 }
4240 
4241 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4242 _mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4243 {
4244  return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4245  (__v16si)_mm512_unpacklo_epi32(__A, __B),
4246  (__v16si)__W);
4247 }
4248 
4249 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4250 _mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B)
4251 {
4252  return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4253  (__v16si)_mm512_unpacklo_epi32(__A, __B),
4254  (__v16si)_mm512_setzero_si512());
4255 }
4256 
4257 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4258 _mm512_unpackhi_epi64(__m512i __A, __m512i __B)
4259 {
4260  return (__m512i)__builtin_shufflevector((__v8di)__A, (__v8di)__B,
4261  1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
4262 }
4263 
4264 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4265 _mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4266 {
4267  return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4268  (__v8di)_mm512_unpackhi_epi64(__A, __B),
4269  (__v8di)__W);
4270 }
4271 
4272 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4273 _mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B)
4274 {
4275  return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4276  (__v8di)_mm512_unpackhi_epi64(__A, __B),
4277  (__v8di)_mm512_setzero_si512());
4278 }
4279 
4280 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4281 _mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
4282 {
4283  return (__m512i)__builtin_shufflevector((__v8di)__A, (__v8di)__B,
4284  0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
4285 }
4286 
4287 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4288 _mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4289 {
4290  return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4291  (__v8di)_mm512_unpacklo_epi64(__A, __B),
4292  (__v8di)__W);
4293 }
4294 
4295 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4296 _mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4297 {
4298  return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4299  (__v8di)_mm512_unpacklo_epi64(__A, __B),
4300  (__v8di)_mm512_setzero_si512());
4301 }
4302 
4303 
4304 /* SIMD load ops */
4305 
4306 static __inline __m512i __DEFAULT_FN_ATTRS512
4308 {
4309  struct __loadu_si512 {
4310  __m512i_u __v;
4311  } __attribute__((__packed__, __may_alias__));
4312  return ((const struct __loadu_si512*)__P)->__v;
4313 }
4314 
4315 static __inline __m512i __DEFAULT_FN_ATTRS512
4317 {
4318  struct __loadu_epi32 {
4319  __m512i_u __v;
4320  } __attribute__((__packed__, __may_alias__));
4321  return ((const struct __loadu_epi32*)__P)->__v;
4322 }
4323 
4324 static __inline __m512i __DEFAULT_FN_ATTRS512
4325 _mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4326 {
4327  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
4328  (__v16si) __W,
4329  (__mmask16) __U);
4330 }
4331 
4332 
4333 static __inline __m512i __DEFAULT_FN_ATTRS512
4335 {
4336  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
4337  (__v16si)
4339  (__mmask16) __U);
4340 }
4341 
4342 static __inline __m512i __DEFAULT_FN_ATTRS512
4344 {
4345  struct __loadu_epi64 {
4346  __m512i_u __v;
4347  } __attribute__((__packed__, __may_alias__));
4348  return ((const struct __loadu_epi64*)__P)->__v;
4349 }
4350 
4351 static __inline __m512i __DEFAULT_FN_ATTRS512
4352 _mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4353 {
4354  return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
4355  (__v8di) __W,
4356  (__mmask8) __U);
4357 }
4358 
4359 static __inline __m512i __DEFAULT_FN_ATTRS512
4361 {
4362  return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
4363  (__v8di)
4365  (__mmask8) __U);
4366 }
4367 
4368 static __inline __m512 __DEFAULT_FN_ATTRS512
4369 _mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
4370 {
4371  return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
4372  (__v16sf) __W,
4373  (__mmask16) __U);
4374 }
4375 
4376 static __inline __m512 __DEFAULT_FN_ATTRS512
4378 {
4379  return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
4380  (__v16sf)
4381  _mm512_setzero_ps (),
4382  (__mmask16) __U);
4383 }
4384 
4385 static __inline __m512d __DEFAULT_FN_ATTRS512
4386 _mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
4387 {
4388  return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
4389  (__v8df) __W,
4390  (__mmask8) __U);
4391 }
4392 
4393 static __inline __m512d __DEFAULT_FN_ATTRS512
4395 {
4396  return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
4397  (__v8df)
4398  _mm512_setzero_pd (),
4399  (__mmask8) __U);
4400 }
4401 
4402 static __inline __m512d __DEFAULT_FN_ATTRS512
4403 _mm512_loadu_pd(void const *__p)
4404 {
4405  struct __loadu_pd {
4406  __m512d_u __v;
4407  } __attribute__((__packed__, __may_alias__));
4408  return ((const struct __loadu_pd*)__p)->__v;
4409 }
4410 
4411 static __inline __m512 __DEFAULT_FN_ATTRS512
4412 _mm512_loadu_ps(void const *__p)
4413 {
4414  struct __loadu_ps {
4415  __m512_u __v;
4416  } __attribute__((__packed__, __may_alias__));
4417  return ((const struct __loadu_ps*)__p)->__v;
4418 }
4419 
4420 static __inline __m512 __DEFAULT_FN_ATTRS512
4421 _mm512_load_ps(void const *__p)
4422 {
4423  return *(const __m512*)__p;
4424 }
4425 
4426 static __inline __m512 __DEFAULT_FN_ATTRS512
4427 _mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4428 {
4429  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4430  (__v16sf) __W,
4431  (__mmask16) __U);
4432 }
4433 
4434 static __inline __m512 __DEFAULT_FN_ATTRS512
4436 {
4437  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4438  (__v16sf)
4439  _mm512_setzero_ps (),
4440  (__mmask16) __U);
4441 }
4442 
4443 static __inline __m512d __DEFAULT_FN_ATTRS512
4444 _mm512_load_pd(void const *__p)
4445 {
4446  return *(const __m512d*)__p;
4447 }
4448 
4449 static __inline __m512d __DEFAULT_FN_ATTRS512
4450 _mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4451 {
4452  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4453  (__v8df) __W,
4454  (__mmask8) __U);
4455 }
4456 
4457 static __inline __m512d __DEFAULT_FN_ATTRS512
4459 {
4460  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4461  (__v8df)
4462  _mm512_setzero_pd (),
4463  (__mmask8) __U);
4464 }
4465 
4466 static __inline __m512i __DEFAULT_FN_ATTRS512
4467 _mm512_load_si512 (void const *__P)
4468 {
4469  return *(const __m512i *) __P;
4470 }
4471 
4472 static __inline __m512i __DEFAULT_FN_ATTRS512
4473 _mm512_load_epi32 (void const *__P)
4474 {
4475  return *(const __m512i *) __P;
4476 }
4477 
4478 static __inline __m512i __DEFAULT_FN_ATTRS512
4479 _mm512_load_epi64 (void const *__P)
4480 {
4481  return *(const __m512i *) __P;
4482 }
4483 
4484 /* SIMD store ops */
4485 
4486 static __inline void __DEFAULT_FN_ATTRS512
4487 _mm512_storeu_epi64 (void *__P, __m512i __A)
4488 {
4489  struct __storeu_epi64 {
4490  __m512i_u __v;
4491  } __attribute__((__packed__, __may_alias__));
4492  ((struct __storeu_epi64*)__P)->__v = __A;
4493 }
4494 
4495 static __inline void __DEFAULT_FN_ATTRS512
4496 _mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
4497 {
4498  __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
4499  (__mmask8) __U);
4500 }
4501 
4502 static __inline void __DEFAULT_FN_ATTRS512
4503 _mm512_storeu_si512 (void *__P, __m512i __A)
4504 {
4505  struct __storeu_si512 {
4506  __m512i_u __v;
4507  } __attribute__((__packed__, __may_alias__));
4508  ((struct __storeu_si512*)__P)->__v = __A;
4509 }
4510 
4511 static __inline void __DEFAULT_FN_ATTRS512
4512 _mm512_storeu_epi32 (void *__P, __m512i __A)
4513 {
4514  struct __storeu_epi32 {
4515  __m512i_u __v;
4516  } __attribute__((__packed__, __may_alias__));
4517  ((struct __storeu_epi32*)__P)->__v = __A;
4518 }
4519 
4520 static __inline void __DEFAULT_FN_ATTRS512
4521 _mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
4522 {
4523  __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
4524  (__mmask16) __U);
4525 }
4526 
4527 static __inline void __DEFAULT_FN_ATTRS512
4528 _mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
4529 {
4530  __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
4531 }
4532 
4533 static __inline void __DEFAULT_FN_ATTRS512
4534 _mm512_storeu_pd(void *__P, __m512d __A)
4535 {
4536  struct __storeu_pd {
4537  __m512d_u __v;
4538  } __attribute__((__packed__, __may_alias__));
4539  ((struct __storeu_pd*)__P)->__v = __A;
4540 }
4541 
4542 static __inline void __DEFAULT_FN_ATTRS512
4543 _mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
4544 {
4545  __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
4546  (__mmask16) __U);
4547 }
4548 
4549 static __inline void __DEFAULT_FN_ATTRS512
4550 _mm512_storeu_ps(void *__P, __m512 __A)
4551 {
4552  struct __storeu_ps {
4553  __m512_u __v;
4554  } __attribute__((__packed__, __may_alias__));
4555  ((struct __storeu_ps*)__P)->__v = __A;
4556 }
4557 
4558 static __inline void __DEFAULT_FN_ATTRS512
4559 _mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
4560 {
4561  __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
4562 }
4563 
4564 static __inline void __DEFAULT_FN_ATTRS512
4565 _mm512_store_pd(void *__P, __m512d __A)
4566 {
4567  *(__m512d*)__P = __A;
4568 }
4569 
4570 static __inline void __DEFAULT_FN_ATTRS512
4571 _mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4572 {
4573  __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4574  (__mmask16) __U);
4575 }
4576 
4577 static __inline void __DEFAULT_FN_ATTRS512
4578 _mm512_store_ps(void *__P, __m512 __A)
4579 {
4580  *(__m512*)__P = __A;
4581 }
4582 
4583 static __inline void __DEFAULT_FN_ATTRS512
4584 _mm512_store_si512 (void *__P, __m512i __A)
4585 {
4586  *(__m512i *) __P = __A;
4587 }
4588 
4589 static __inline void __DEFAULT_FN_ATTRS512
4590 _mm512_store_epi32 (void *__P, __m512i __A)
4591 {
4592  *(__m512i *) __P = __A;
4593 }
4594 
4595 static __inline void __DEFAULT_FN_ATTRS512
4596 _mm512_store_epi64 (void *__P, __m512i __A)
4597 {
4598  *(__m512i *) __P = __A;
4599 }
4600 
4601 /* Mask ops */
4602 
4603 static __inline __mmask16 __DEFAULT_FN_ATTRS
4605 {
4606  return __builtin_ia32_knothi(__M);
4607 }
4608 
4609 /* Integer compare */
4610 
4611 #define _mm512_cmpeq_epi32_mask(A, B) \
4612  _mm512_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
4613 #define _mm512_mask_cmpeq_epi32_mask(k, A, B) \
4614  _mm512_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
4615 #define _mm512_cmpge_epi32_mask(A, B) \
4616  _mm512_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
4617 #define _mm512_mask_cmpge_epi32_mask(k, A, B) \
4618  _mm512_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
4619 #define _mm512_cmpgt_epi32_mask(A, B) \
4620  _mm512_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
4621 #define _mm512_mask_cmpgt_epi32_mask(k, A, B) \
4622  _mm512_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
4623 #define _mm512_cmple_epi32_mask(A, B) \
4624  _mm512_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
4625 #define _mm512_mask_cmple_epi32_mask(k, A, B) \
4626  _mm512_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
4627 #define _mm512_cmplt_epi32_mask(A, B) \
4628  _mm512_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
4629 #define _mm512_mask_cmplt_epi32_mask(k, A, B) \
4630  _mm512_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
4631 #define _mm512_cmpneq_epi32_mask(A, B) \
4632  _mm512_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
4633 #define _mm512_mask_cmpneq_epi32_mask(k, A, B) \
4634  _mm512_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
4635 
4636 #define _mm512_cmpeq_epu32_mask(A, B) \
4637  _mm512_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
4638 #define _mm512_mask_cmpeq_epu32_mask(k, A, B) \
4639  _mm512_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
4640 #define _mm512_cmpge_epu32_mask(A, B) \
4641  _mm512_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
4642 #define _mm512_mask_cmpge_epu32_mask(k, A, B) \
4643  _mm512_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
4644 #define _mm512_cmpgt_epu32_mask(A, B) \
4645  _mm512_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
4646 #define _mm512_mask_cmpgt_epu32_mask(k, A, B) \
4647  _mm512_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
4648 #define _mm512_cmple_epu32_mask(A, B) \
4649  _mm512_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
4650 #define _mm512_mask_cmple_epu32_mask(k, A, B) \
4651  _mm512_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
4652 #define _mm512_cmplt_epu32_mask(A, B) \
4653  _mm512_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
4654 #define _mm512_mask_cmplt_epu32_mask(k, A, B) \
4655  _mm512_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
4656 #define _mm512_cmpneq_epu32_mask(A, B) \
4657  _mm512_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
4658 #define _mm512_mask_cmpneq_epu32_mask(k, A, B) \
4659  _mm512_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
4660 
4661 #define _mm512_cmpeq_epi64_mask(A, B) \
4662  _mm512_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
4663 #define _mm512_mask_cmpeq_epi64_mask(k, A, B) \
4664  _mm512_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
4665 #define _mm512_cmpge_epi64_mask(A, B) \
4666  _mm512_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
4667 #define _mm512_mask_cmpge_epi64_mask(k, A, B) \
4668  _mm512_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
4669 #define _mm512_cmpgt_epi64_mask(A, B) \
4670  _mm512_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
4671 #define _mm512_mask_cmpgt_epi64_mask(k, A, B) \
4672  _mm512_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
4673 #define _mm512_cmple_epi64_mask(A, B) \
4674  _mm512_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
4675 #define _mm512_mask_cmple_epi64_mask(k, A, B) \
4676  _mm512_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
4677 #define _mm512_cmplt_epi64_mask(A, B) \
4678  _mm512_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
4679 #define _mm512_mask_cmplt_epi64_mask(k, A, B) \
4680  _mm512_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
4681 #define _mm512_cmpneq_epi64_mask(A, B) \
4682  _mm512_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
4683 #define _mm512_mask_cmpneq_epi64_mask(k, A, B) \
4684  _mm512_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
4685 
4686 #define _mm512_cmpeq_epu64_mask(A, B) \
4687  _mm512_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
4688 #define _mm512_mask_cmpeq_epu64_mask(k, A, B) \
4689  _mm512_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
4690 #define _mm512_cmpge_epu64_mask(A, B) \
4691  _mm512_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
4692 #define _mm512_mask_cmpge_epu64_mask(k, A, B) \
4693  _mm512_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
4694 #define _mm512_cmpgt_epu64_mask(A, B) \
4695  _mm512_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
4696 #define _mm512_mask_cmpgt_epu64_mask(k, A, B) \
4697  _mm512_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
4698 #define _mm512_cmple_epu64_mask(A, B) \
4699  _mm512_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
4700 #define _mm512_mask_cmple_epu64_mask(k, A, B) \
4701  _mm512_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
4702 #define _mm512_cmplt_epu64_mask(A, B) \
4703  _mm512_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
4704 #define _mm512_mask_cmplt_epu64_mask(k, A, B) \
4705  _mm512_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
4706 #define _mm512_cmpneq_epu64_mask(A, B) \
4707  _mm512_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
4708 #define _mm512_mask_cmpneq_epu64_mask(k, A, B) \
4709  _mm512_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
4710 
4711 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4713 {
4714  /* This function always performs a signed extension, but __v16qi is a char
4715  which may be signed or unsigned, so use __v16qs. */
4716  return (__m512i)__builtin_convertvector((__v16qs)__A, __v16si);
4717 }
4718 
4719 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4720 _mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A)
4721 {
4722  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4723  (__v16si)_mm512_cvtepi8_epi32(__A),
4724  (__v16si)__W);
4725 }
4726 
4727 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4729 {
4730  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4731  (__v16si)_mm512_cvtepi8_epi32(__A),
4732  (__v16si)_mm512_setzero_si512());
4733 }
4734 
4735 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4737 {
4738  /* This function always performs a signed extension, but __v16qi is a char
4739  which may be signed or unsigned, so use __v16qs. */
4740  return (__m512i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__A, (__v16qs)__A, 0, 1, 2, 3, 4, 5, 6, 7), __v8di);
4741 }
4742 
4743 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4744 _mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4745 {
4746  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4747  (__v8di)_mm512_cvtepi8_epi64(__A),
4748  (__v8di)__W);
4749 }
4750 
4751 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4753 {
4754  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4755  (__v8di)_mm512_cvtepi8_epi64(__A),
4756  (__v8di)_mm512_setzero_si512 ());
4757 }
4758 
4759 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4761 {
4762  return (__m512i)__builtin_convertvector((__v8si)__X, __v8di);
4763 }
4764 
4765 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4766 _mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X)
4767 {
4768  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4769  (__v8di)_mm512_cvtepi32_epi64(__X),
4770  (__v8di)__W);
4771 }
4772 
4773 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4775 {
4776  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4777  (__v8di)_mm512_cvtepi32_epi64(__X),
4778  (__v8di)_mm512_setzero_si512());
4779 }
4780 
4781 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4783 {
4784  return (__m512i)__builtin_convertvector((__v16hi)__A, __v16si);
4785 }
4786 
4787 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4788 _mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A)
4789 {
4790  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4791  (__v16si)_mm512_cvtepi16_epi32(__A),
4792  (__v16si)__W);
4793 }
4794 
4795 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4797 {
4798  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4799  (__v16si)_mm512_cvtepi16_epi32(__A),
4800  (__v16si)_mm512_setzero_si512 ());
4801 }
4802 
4803 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4805 {
4806  return (__m512i)__builtin_convertvector((__v8hi)__A, __v8di);
4807 }
4808 
4809 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4810 _mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4811 {
4812  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4813  (__v8di)_mm512_cvtepi16_epi64(__A),
4814  (__v8di)__W);
4815 }
4816 
4817 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4819 {
4820  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4821  (__v8di)_mm512_cvtepi16_epi64(__A),
4822  (__v8di)_mm512_setzero_si512());
4823 }
4824 
4825 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4827 {
4828  return (__m512i)__builtin_convertvector((__v16qu)__A, __v16si);
4829 }
4830 
4831 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4832 _mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A)
4833 {
4834  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4835  (__v16si)_mm512_cvtepu8_epi32(__A),
4836  (__v16si)__W);
4837 }
4838 
4839 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4841 {
4842  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4843  (__v16si)_mm512_cvtepu8_epi32(__A),
4844  (__v16si)_mm512_setzero_si512());
4845 }
4846 
4847 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4849 {
4850  return (__m512i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__A, (__v16qu)__A, 0, 1, 2, 3, 4, 5, 6, 7), __v8di);
4851 }
4852 
4853 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4854 _mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4855 {
4856  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4857  (__v8di)_mm512_cvtepu8_epi64(__A),
4858  (__v8di)__W);
4859 }
4860 
4861 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4863 {
4864  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4865  (__v8di)_mm512_cvtepu8_epi64(__A),
4866  (__v8di)_mm512_setzero_si512());
4867 }
4868 
4869 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4871 {
4872  return (__m512i)__builtin_convertvector((__v8su)__X, __v8di);
4873 }
4874 
4875 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4876 _mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X)
4877 {
4878  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4879  (__v8di)_mm512_cvtepu32_epi64(__X),
4880  (__v8di)__W);
4881 }
4882 
4883 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4885 {
4886  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4887  (__v8di)_mm512_cvtepu32_epi64(__X),
4888  (__v8di)_mm512_setzero_si512());
4889 }
4890 
4891 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4893 {
4894  return (__m512i)__builtin_convertvector((__v16hu)__A, __v16si);
4895 }
4896 
4897 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4898 _mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A)
4899 {
4900  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4901  (__v16si)_mm512_cvtepu16_epi32(__A),
4902  (__v16si)__W);
4903 }
4904 
4905 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4907 {
4908  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
4909  (__v16si)_mm512_cvtepu16_epi32(__A),
4910  (__v16si)_mm512_setzero_si512());
4911 }
4912 
4913 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4915 {
4916  return (__m512i)__builtin_convertvector((__v8hu)__A, __v8di);
4917 }
4918 
4919 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4920 _mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4921 {
4922  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4923  (__v8di)_mm512_cvtepu16_epi64(__A),
4924  (__v8di)__W);
4925 }
4926 
4927 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4929 {
4930  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
4931  (__v8di)_mm512_cvtepu16_epi64(__A),
4932  (__v8di)_mm512_setzero_si512());
4933 }
4934 
4935 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4936 _mm512_rorv_epi32 (__m512i __A, __m512i __B)
4937 {
4938  return (__m512i)__builtin_ia32_prorvd512((__v16si)__A, (__v16si)__B);
4939 }
4940 
4941 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4942 _mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4943 {
4944  return (__m512i)__builtin_ia32_selectd_512(__U,
4945  (__v16si)_mm512_rorv_epi32(__A, __B),
4946  (__v16si)__W);
4947 }
4948 
4949 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4950 _mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4951 {
4952  return (__m512i)__builtin_ia32_selectd_512(__U,
4953  (__v16si)_mm512_rorv_epi32(__A, __B),
4954  (__v16si)_mm512_setzero_si512());
4955 }
4956 
4957 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4958 _mm512_rorv_epi64 (__m512i __A, __m512i __B)
4959 {
4960  return (__m512i)__builtin_ia32_prorvq512((__v8di)__A, (__v8di)__B);
4961 }
4962 
4963 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4964 _mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4965 {
4966  return (__m512i)__builtin_ia32_selectq_512(__U,
4967  (__v8di)_mm512_rorv_epi64(__A, __B),
4968  (__v8di)__W);
4969 }
4970 
4971 static __inline__ __m512i __DEFAULT_FN_ATTRS512
4972 _mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4973 {
4974  return (__m512i)__builtin_ia32_selectq_512(__U,
4975  (__v8di)_mm512_rorv_epi64(__A, __B),
4976  (__v8di)_mm512_setzero_si512());
4977 }
4978 
4979 
4980 
4981 #define _mm512_cmp_epi32_mask(a, b, p) \
4982  ((__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4983  (__v16si)(__m512i)(b), (int)(p), \
4984  (__mmask16)-1))
4985 
4986 #define _mm512_cmp_epu32_mask(a, b, p) \
4987  ((__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4988  (__v16si)(__m512i)(b), (int)(p), \
4989  (__mmask16)-1))
4990 
4991 #define _mm512_cmp_epi64_mask(a, b, p) \
4992  ((__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4993  (__v8di)(__m512i)(b), (int)(p), \
4994  (__mmask8)-1))
4995 
4996 #define _mm512_cmp_epu64_mask(a, b, p) \
4997  ((__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4998  (__v8di)(__m512i)(b), (int)(p), \
4999  (__mmask8)-1))
5000 
5001 #define _mm512_mask_cmp_epi32_mask(m, a, b, p) \
5002  ((__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
5003  (__v16si)(__m512i)(b), (int)(p), \
5004  (__mmask16)(m)))
5005 
5006 #define _mm512_mask_cmp_epu32_mask(m, a, b, p) \
5007  ((__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
5008  (__v16si)(__m512i)(b), (int)(p), \
5009  (__mmask16)(m)))
5010 
5011 #define _mm512_mask_cmp_epi64_mask(m, a, b, p) \
5012  ((__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
5013  (__v8di)(__m512i)(b), (int)(p), \
5014  (__mmask8)(m)))
5015 
5016 #define _mm512_mask_cmp_epu64_mask(m, a, b, p) \
5017  ((__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
5018  (__v8di)(__m512i)(b), (int)(p), \
5019  (__mmask8)(m)))
5020 
5021 #define _mm512_rol_epi32(a, b) \
5022  ((__m512i)__builtin_ia32_prold512((__v16si)(__m512i)(a), (int)(b)))
5023 
5024 #define _mm512_mask_rol_epi32(W, U, a, b) \
5025  ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
5026  (__v16si)_mm512_rol_epi32((a), (b)), \
5027  (__v16si)(__m512i)(W)))
5028 
5029 #define _mm512_maskz_rol_epi32(U, a, b) \
5030  ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
5031  (__v16si)_mm512_rol_epi32((a), (b)), \
5032  (__v16si)_mm512_setzero_si512()))
5033 
5034 #define _mm512_rol_epi64(a, b) \
5035  ((__m512i)__builtin_ia32_prolq512((__v8di)(__m512i)(a), (int)(b)))
5036 
5037 #define _mm512_mask_rol_epi64(W, U, a, b) \
5038  ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
5039  (__v8di)_mm512_rol_epi64((a), (b)), \
5040  (__v8di)(__m512i)(W)))
5041 
5042 #define _mm512_maskz_rol_epi64(U, a, b) \
5043  ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
5044  (__v8di)_mm512_rol_epi64((a), (b)), \
5045  (__v8di)_mm512_setzero_si512()))
5046 
5047 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5048 _mm512_rolv_epi32 (__m512i __A, __m512i __B)
5049 {
5050  return (__m512i)__builtin_ia32_prolvd512((__v16si)__A, (__v16si)__B);
5051 }
5052 
5053 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5054 _mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5055 {
5056  return (__m512i)__builtin_ia32_selectd_512(__U,
5057  (__v16si)_mm512_rolv_epi32(__A, __B),
5058  (__v16si)__W);
5059 }
5060 
5061 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5062 _mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5063 {
5064  return (__m512i)__builtin_ia32_selectd_512(__U,
5065  (__v16si)_mm512_rolv_epi32(__A, __B),
5066  (__v16si)_mm512_setzero_si512());
5067 }
5068 
5069 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5070 _mm512_rolv_epi64 (__m512i __A, __m512i __B)
5071 {
5072  return (__m512i)__builtin_ia32_prolvq512((__v8di)__A, (__v8di)__B);
5073 }
5074 
5075 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5076 _mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5077 {
5078  return (__m512i)__builtin_ia32_selectq_512(__U,
5079  (__v8di)_mm512_rolv_epi64(__A, __B),
5080  (__v8di)__W);
5081 }
5082 
5083 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5084 _mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5085 {
5086  return (__m512i)__builtin_ia32_selectq_512(__U,
5087  (__v8di)_mm512_rolv_epi64(__A, __B),
5088  (__v8di)_mm512_setzero_si512());
5089 }
5090 
5091 #define _mm512_ror_epi32(A, B) \
5092  ((__m512i)__builtin_ia32_prord512((__v16si)(__m512i)(A), (int)(B)))
5093 
5094 #define _mm512_mask_ror_epi32(W, U, A, B) \
5095  ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
5096  (__v16si)_mm512_ror_epi32((A), (B)), \
5097  (__v16si)(__m512i)(W)))
5098 
5099 #define _mm512_maskz_ror_epi32(U, A, B) \
5100  ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
5101  (__v16si)_mm512_ror_epi32((A), (B)), \
5102  (__v16si)_mm512_setzero_si512()))
5103 
5104 #define _mm512_ror_epi64(A, B) \
5105  ((__m512i)__builtin_ia32_prorq512((__v8di)(__m512i)(A), (int)(B)))
5106 
5107 #define _mm512_mask_ror_epi64(W, U, A, B) \
5108  ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
5109  (__v8di)_mm512_ror_epi64((A), (B)), \
5110  (__v8di)(__m512i)(W)))
5111 
5112 #define _mm512_maskz_ror_epi64(U, A, B) \
5113  ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
5114  (__v8di)_mm512_ror_epi64((A), (B)), \
5115  (__v8di)_mm512_setzero_si512()))
5116 
5117 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5118 _mm512_slli_epi32(__m512i __A, unsigned int __B)
5119 {
5120  return (__m512i)__builtin_ia32_pslldi512((__v16si)__A, (int)__B);
5121 }
5122 
5123 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5124 _mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A,
5125  unsigned int __B)
5126 {
5127  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
5128  (__v16si)_mm512_slli_epi32(__A, __B),
5129  (__v16si)__W);
5130 }
5131 
5132 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5133 _mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A, unsigned int __B) {
5134  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
5135  (__v16si)_mm512_slli_epi32(__A, __B),
5136  (__v16si)_mm512_setzero_si512());
5137 }
5138 
5139 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5140 _mm512_slli_epi64(__m512i __A, unsigned int __B)
5141 {
5142  return (__m512i)__builtin_ia32_psllqi512((__v8di)__A, (int)__B);
5143 }
5144 
5145 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5146 _mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B)
5147 {
5148  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
5149  (__v8di)_mm512_slli_epi64(__A, __B),
5150  (__v8di)__W);
5151 }
5152 
5153 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5154 _mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A, unsigned int __B)
5155 {
5156  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
5157  (__v8di)_mm512_slli_epi64(__A, __B),
5158  (__v8di)_mm512_setzero_si512());
5159 }
5160 
5161 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5162 _mm512_srli_epi32(__m512i __A, unsigned int __B)
5163 {
5164  return (__m512i)__builtin_ia32_psrldi512((__v16si)__A, (int)__B);
5165 }
5166 
5167 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5168 _mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A,
5169  unsigned int __B)
5170 {
5171  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
5172  (__v16si)_mm512_srli_epi32(__A, __B),
5173  (__v16si)__W);
5174 }
5175 
5176 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5177 _mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A, unsigned int __B) {
5178  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
5179  (__v16si)_mm512_srli_epi32(__A, __B),
5180  (__v16si)_mm512_setzero_si512());
5181 }
5182 
5183 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5184 _mm512_srli_epi64(__m512i __A, unsigned int __B)
5185 {
5186  return (__m512i)__builtin_ia32_psrlqi512((__v8di)__A, (int)__B);
5187 }
5188 
5189 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5190 _mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A,
5191  unsigned int __B)
5192 {
5193  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
5194  (__v8di)_mm512_srli_epi64(__A, __B),
5195  (__v8di)__W);
5196 }
5197 
5198 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5200  unsigned int __B)
5201 {
5202  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
5203  (__v8di)_mm512_srli_epi64(__A, __B),
5204  (__v8di)_mm512_setzero_si512());
5205 }
5206 
5207 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5208 _mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
5209 {
5210  return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5211  (__v16si) __W,
5212  (__mmask16) __U);
5213 }
5214 
5215 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5217 {
5218  return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5219  (__v16si)
5221  (__mmask16) __U);
5222 }
5223 
5224 static __inline__ void __DEFAULT_FN_ATTRS512
5225 _mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5226 {
5227  __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5228  (__mmask16) __U);
5229 }
5230 
5231 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5232 _mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5233 {
5234  return (__m512i) __builtin_ia32_selectd_512 ((__mmask16) __U,
5235  (__v16si) __A,
5236  (__v16si) __W);
5237 }
5238 
5239 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5241 {
5242  return (__m512i) __builtin_ia32_selectd_512 ((__mmask16) __U,
5243  (__v16si) __A,
5244  (__v16si) _mm512_setzero_si512 ());
5245 }
5246 
5247 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5248 _mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5249 {
5250  return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __U,
5251  (__v8di) __A,
5252  (__v8di) __W);
5253 }
5254 
5255 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5257 {
5258  return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __U,
5259  (__v8di) __A,
5260  (__v8di) _mm512_setzero_si512 ());
5261 }
5262 
5263 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5264 _mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5265 {
5266  return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5267  (__v8di) __W,
5268  (__mmask8) __U);
5269 }
5270 
5271 static __inline__ __m512i __DEFAULT_FN_ATTRS512
5273 {
5274  return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5275  (__v8di)
5277  (__mmask8) __U);
5278 }
5279 
5280 static __inline__ void __DEFAULT_FN_ATTRS512
5281 _mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5282 {
5283  __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5284  (__mmask8) __U);
5285 }
5286 
5287 static __inline__ __m512d __DEFAULT_FN_ATTRS512
5288 _mm512_movedup_pd (__m512d __A)
5289 {
5290  return (__m512d)__builtin_shufflevector((__v8df)__A, (__v8df)__A,
5291  0, 0, 2, 2, 4, 4, 6, 6);
5292 }
5293 
5294 static __inline__ __m512d __DEFAULT_FN_ATTRS512
5295 _mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5296 {
5297  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
5298  (__v8df)_mm512_movedup_pd(__A),
5299  (__v8df)__W);
5300 }
5301 
5302 static __inline__ __m512d __DEFAULT_FN_ATTRS512
5304 {
5305  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
5306  (__v8df)_mm512_movedup_pd(__A),
5307  (__v8df)_mm512_setzero_pd());
5308 }
5309 
5310 #define _mm512_fixupimm_round_pd(A, B, C, imm, R) \
5311  ((__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5312  (__v8df)(__m512d)(B), \
5313  (__v8di)(__m512i)(C), (int)(imm), \
5314  (__mmask8)-1, (int)(R)))
5315 
5316 #define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) \
5317  ((__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5318  (__v8df)(__m512d)(B), \
5319  (__v8di)(__m512i)(C), (int)(imm), \
5320  (__mmask8)(U), (int)(R)))
5321 
5322 #define _mm512_fixupimm_pd(A, B, C, imm) \
5323  ((__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5324  (__v8df)(__m512d)(B), \
5325  (__v8di)(__m512i)(C), (int)(imm), \
5326  (__mmask8)-1, \
5327  _MM_FROUND_CUR_DIRECTION))
5328 
5329 #define _mm512_mask_fixupimm_pd(A, U, B, C, imm) \
5330  ((__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5331  (__v8df)(__m512d)(B), \
5332  (__v8di)(__m512i)(C), (int)(imm), \
5333  (__mmask8)(U), \
5334  _MM_FROUND_CUR_DIRECTION))
5335 
5336 #define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) \
5337  ((__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5338  (__v8df)(__m512d)(B), \
5339  (__v8di)(__m512i)(C), \
5340  (int)(imm), (__mmask8)(U), \
5341  (int)(R)))
5342 
5343 #define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) \
5344  ((__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5345  (__v8df)(__m512d)(B), \
5346  (__v8di)(__m512i)(C), \
5347  (int)(imm), (__mmask8)(U), \
5348  _MM_FROUND_CUR_DIRECTION))
5349 
5350 #define _mm512_fixupimm_round_ps(A, B, C, imm, R) \
5351  ((__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5352  (__v16sf)(__m512)(B), \
5353  (__v16si)(__m512i)(C), (int)(imm), \
5354  (__mmask16)-1, (int)(R)))
5355 
5356 #define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) \
5357  ((__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5358  (__v16sf)(__m512)(B), \
5359  (__v16si)(__m512i)(C), (int)(imm), \
5360  (__mmask16)(U), (int)(R)))
5361 
5362 #define _mm512_fixupimm_ps(A, B, C, imm) \
5363  ((__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5364  (__v16sf)(__m512)(B), \
5365  (__v16si)(__m512i)(C), (int)(imm), \
5366  (__mmask16)-1, \
5367  _MM_FROUND_CUR_DIRECTION))
5368 
5369 #define _mm512_mask_fixupimm_ps(A, U, B, C, imm) \
5370  ((__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5371  (__v16sf)(__m512)(B), \
5372  (__v16si)(__m512i)(C), (int)(imm), \
5373  (__mmask16)(U), \
5374  _MM_FROUND_CUR_DIRECTION))
5375 
5376 #define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) \
5377  ((__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5378  (__v16sf)(__m512)(B), \
5379  (__v16si)(__m512i)(C), \
5380  (int)(imm), (__mmask16)(U), \
5381  (int)(R)))
5382 
5383 #define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) \
5384  ((__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5385  (__v16sf)(__m512)(B), \
5386  (__v16si)(__m512i)(C), \
5387  (int)(imm), (__mmask16)(U), \
5388  _MM_FROUND_CUR_DIRECTION))
5389 
5390 #define _mm_fixupimm_round_sd(A, B, C, imm, R) \
5391  ((__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5392  (__v2df)(__m128d)(B), \
5393  (__v2di)(__m128i)(C), (int)(imm), \
5394  (__mmask8)-1, (int)(R)))
5395