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