]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512dqintrin.h
Update clang to trunk r256633.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / lib / Headers / avx512dqintrin.h
1 /*===---- avx512dqintrin.h - AVX512DQ 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
24 #ifndef __IMMINTRIN_H
25 #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef __AVX512DQINTRIN_H
29 #define __AVX512DQINTRIN_H
30
31 /* Define the default attributes for the functions in this file. */
32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
33
34 static __inline__ __m512i __DEFAULT_FN_ATTRS
35 _mm512_mullo_epi64 (__m512i __A, __m512i __B) {
36   return (__m512i) ((__v8di) __A * (__v8di) __B);
37 }
38
39 static __inline__ __m512i __DEFAULT_FN_ATTRS
40 _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
41   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
42               (__v8di) __B,
43               (__v8di) __W,
44               (__mmask8) __U);
45 }
46
47 static __inline__ __m512i __DEFAULT_FN_ATTRS
48 _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
49   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
50               (__v8di) __B,
51               (__v8di)
52               _mm512_setzero_si512 (),
53               (__mmask8) __U);
54 }
55
56 static __inline__ __m512d __DEFAULT_FN_ATTRS
57 _mm512_xor_pd (__m512d __A, __m512d __B) {
58   return (__m512d) ((__v8di) __A ^ (__v8di) __B);
59 }
60
61 static __inline__ __m512d __DEFAULT_FN_ATTRS
62 _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
63   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
64              (__v8df) __B,
65              (__v8df) __W,
66              (__mmask8) __U);
67 }
68
69 static __inline__ __m512d __DEFAULT_FN_ATTRS
70 _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
71   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
72              (__v8df) __B,
73              (__v8df)
74              _mm512_setzero_pd (),
75              (__mmask8) __U);
76 }
77
78 static __inline__ __m512 __DEFAULT_FN_ATTRS
79 _mm512_xor_ps (__m512 __A, __m512 __B) {
80   return (__m512) ((__v16si) __A ^ (__v16si) __B);
81 }
82
83 static __inline__ __m512 __DEFAULT_FN_ATTRS
84 _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
85   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
86             (__v16sf) __B,
87             (__v16sf) __W,
88             (__mmask16) __U);
89 }
90
91 static __inline__ __m512 __DEFAULT_FN_ATTRS
92 _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
93   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
94             (__v16sf) __B,
95             (__v16sf)
96             _mm512_setzero_ps (),
97             (__mmask16) __U);
98 }
99
100 static __inline__ __m512d __DEFAULT_FN_ATTRS
101 _mm512_or_pd (__m512d __A, __m512d __B) {
102   return (__m512d) ((__v8di) __A | (__v8di) __B);
103 }
104
105 static __inline__ __m512d __DEFAULT_FN_ATTRS
106 _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
107   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
108             (__v8df) __B,
109             (__v8df) __W,
110             (__mmask8) __U);
111 }
112
113 static __inline__ __m512d __DEFAULT_FN_ATTRS
114 _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
115   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
116             (__v8df) __B,
117             (__v8df)
118             _mm512_setzero_pd (),
119             (__mmask8) __U);
120 }
121
122 static __inline__ __m512 __DEFAULT_FN_ATTRS
123 _mm512_or_ps (__m512 __A, __m512 __B) {
124   return (__m512) ((__v16si) __A | (__v16si) __B);
125 }
126
127 static __inline__ __m512 __DEFAULT_FN_ATTRS
128 _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
129   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
130                  (__v16sf) __B,
131                  (__v16sf) __W,
132                  (__mmask16) __U);
133 }
134
135 static __inline__ __m512 __DEFAULT_FN_ATTRS
136 _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
137   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
138                  (__v16sf) __B,
139                  (__v16sf)
140                  _mm512_setzero_ps (),
141                  (__mmask16) __U);
142 }
143
144 static __inline__ __m512d __DEFAULT_FN_ATTRS
145 _mm512_and_pd (__m512d __A, __m512d __B) {
146   return (__m512d) ((__v8di) __A & (__v8di) __B);
147 }
148
149 static __inline__ __m512d __DEFAULT_FN_ATTRS
150 _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
151   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
152              (__v8df) __B,
153              (__v8df) __W,
154              (__mmask8) __U);
155 }
156
157 static __inline__ __m512d __DEFAULT_FN_ATTRS
158 _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
159   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
160              (__v8df) __B,
161              (__v8df)
162              _mm512_setzero_pd (),
163              (__mmask8) __U);
164 }
165
166 static __inline__ __m512 __DEFAULT_FN_ATTRS
167 _mm512_and_ps (__m512 __A, __m512 __B) {
168   return (__m512) ((__v16si) __A & (__v16si) __B);
169 }
170
171 static __inline__ __m512 __DEFAULT_FN_ATTRS
172 _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
173   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
174             (__v16sf) __B,
175             (__v16sf) __W,
176             (__mmask16) __U);
177 }
178
179 static __inline__ __m512 __DEFAULT_FN_ATTRS
180 _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
181   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
182             (__v16sf) __B,
183             (__v16sf)
184             _mm512_setzero_ps (),
185             (__mmask16) __U);
186 }
187
188 static __inline__ __m512d __DEFAULT_FN_ATTRS
189 _mm512_andnot_pd (__m512d __A, __m512d __B) {
190   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
191               (__v8df) __B,
192               (__v8df)
193               _mm512_setzero_pd (),
194               (__mmask8) -1);
195 }
196
197 static __inline__ __m512d __DEFAULT_FN_ATTRS
198 _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
199   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
200               (__v8df) __B,
201               (__v8df) __W,
202               (__mmask8) __U);
203 }
204
205 static __inline__ __m512d __DEFAULT_FN_ATTRS
206 _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
207   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
208               (__v8df) __B,
209               (__v8df)
210               _mm512_setzero_pd (),
211               (__mmask8) __U);
212 }
213
214 static __inline__ __m512 __DEFAULT_FN_ATTRS
215 _mm512_andnot_ps (__m512 __A, __m512 __B) {
216   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
217              (__v16sf) __B,
218              (__v16sf)
219              _mm512_setzero_ps (),
220              (__mmask16) -1);
221 }
222
223 static __inline__ __m512 __DEFAULT_FN_ATTRS
224 _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
225   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
226              (__v16sf) __B,
227              (__v16sf) __W,
228              (__mmask16) __U);
229 }
230
231 static __inline__ __m512 __DEFAULT_FN_ATTRS
232 _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
233   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
234              (__v16sf) __B,
235              (__v16sf)
236              _mm512_setzero_ps (),
237              (__mmask16) __U);
238 }
239
240 static __inline__ __m512i __DEFAULT_FN_ATTRS
241 _mm512_cvtpd_epi64 (__m512d __A) {
242   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
243                 (__v8di) _mm512_setzero_si512(),
244                 (__mmask8) -1,
245                 _MM_FROUND_CUR_DIRECTION);
246 }
247
248 static __inline__ __m512i __DEFAULT_FN_ATTRS
249 _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
250   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
251                 (__v8di) __W,
252                 (__mmask8) __U,
253                 _MM_FROUND_CUR_DIRECTION);
254 }
255
256 static __inline__ __m512i __DEFAULT_FN_ATTRS
257 _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A) {
258   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
259                 (__v8di) _mm512_setzero_si512(),
260                 (__mmask8) __U,
261                 _MM_FROUND_CUR_DIRECTION);
262 }
263
264 #define _mm512_cvt_roundpd_epi64(__A, __R) __extension__ ({              \
265   (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,               \
266                 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
267
268 #define _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, __R) __extension__ ({ \
269   (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,                 \
270                 (__v8di) __W, (__mmask8) __U, __R);})
271
272 #define _mm512_maskz_cvt_roundpd_epi64(__U, __A, __R) __extension__ ({   \
273   (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,        \
274                 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R); })
275
276 static __inline__ __m512i __DEFAULT_FN_ATTRS
277 _mm512_cvtpd_epu64 (__m512d __A) {
278   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
279                  (__v8di) _mm512_setzero_si512(),
280                  (__mmask8) -1,
281                  _MM_FROUND_CUR_DIRECTION);
282 }
283
284 static __inline__ __m512i __DEFAULT_FN_ATTRS
285 _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
286   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
287                  (__v8di) __W,
288                  (__mmask8) __U,
289                  _MM_FROUND_CUR_DIRECTION);
290 }
291
292 static __inline__ __m512i __DEFAULT_FN_ATTRS
293 _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A) {
294   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
295                  (__v8di) _mm512_setzero_si512(),
296                  (__mmask8) __U,
297                  _MM_FROUND_CUR_DIRECTION);
298 }
299
300 #define _mm512_cvt_roundpd_epu64(__A, __R) __extension__ ({               \
301   (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,               \
302                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
303
304 #define _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, __R) __extension__ ({ \
305   (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,                \
306                  (__v8di) __W, (__mmask8) __U, __R);})
307
308 #define _mm512_maskz_cvt_roundpd_epu64(__U, __A, __R) __extension__ ({     \
309   (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,                \
310                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
311
312 static __inline__ __m512i __DEFAULT_FN_ATTRS
313 _mm512_cvtps_epi64 (__m256 __A) {
314   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
315                 (__v8di) _mm512_setzero_si512(),
316                 (__mmask8) -1,
317                 _MM_FROUND_CUR_DIRECTION);
318 }
319
320 static __inline__ __m512i __DEFAULT_FN_ATTRS
321 _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
322   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
323                 (__v8di) __W,
324                 (__mmask8) __U,
325                 _MM_FROUND_CUR_DIRECTION);
326 }
327
328 static __inline__ __m512i __DEFAULT_FN_ATTRS
329 _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A) {
330   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
331                 (__v8di) _mm512_setzero_si512(),
332                 (__mmask8) __U,
333                 _MM_FROUND_CUR_DIRECTION);
334 }
335
336 #define _mm512_cvt_roundps_epi64(__A, __R) __extension__ ({             \
337   (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,              \
338                 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
339
340 #define _mm512_mask_cvt_roundps_epi64(__W, __U, __A, __R) __extension__ ({ \
341   (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,                 \
342                 (__v8di) __W, (__mmask8) __U, __R);})
343
344 #define _mm512_maskz_cvt_roundps_epi64(__U, __A, __R) __extension__ ({   \
345   (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,               \
346                 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
347
348 static __inline__ __m512i __DEFAULT_FN_ATTRS
349 _mm512_cvtps_epu64 (__m256 __A) {
350   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
351                  (__v8di) _mm512_setzero_si512(),
352                  (__mmask8) -1,
353                  _MM_FROUND_CUR_DIRECTION);
354 }
355
356 static __inline__ __m512i __DEFAULT_FN_ATTRS
357 _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
358   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
359                  (__v8di) __W,
360                  (__mmask8) __U,
361                  _MM_FROUND_CUR_DIRECTION);
362 }
363
364 static __inline__ __m512i __DEFAULT_FN_ATTRS
365 _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A) {
366   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
367                  (__v8di) _mm512_setzero_si512(),
368                  (__mmask8) __U,
369                  _MM_FROUND_CUR_DIRECTION);
370 }
371
372 #define _mm512_cvt_roundps_epu64(__A, __R) __extension__ ({              \
373   (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,              \
374                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
375
376 #define _mm512_mask_cvt_roundps_epu64(__W, __U, __A, __R) __extension__ ({ \
377   (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,                \
378                  (__v8di) __W, (__mmask8) __U, __R);})
379
380 #define _mm512_maskz_cvt_roundps_epu64(__U, __A, __R) __extension__ ({   \
381   (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,              \
382                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
383
384
385 static __inline__ __m512d __DEFAULT_FN_ATTRS
386 _mm512_cvtepi64_pd (__m512i __A) {
387   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
388                 (__v8df) _mm512_setzero_pd(),
389                 (__mmask8) -1,
390                 _MM_FROUND_CUR_DIRECTION);
391 }
392
393 static __inline__ __m512d __DEFAULT_FN_ATTRS
394 _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
395   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
396                 (__v8df) __W,
397                 (__mmask8) __U,
398                 _MM_FROUND_CUR_DIRECTION);
399 }
400
401 static __inline__ __m512d __DEFAULT_FN_ATTRS
402 _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
403   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
404                 (__v8df) _mm512_setzero_pd(),
405                 (__mmask8) __U,
406                 _MM_FROUND_CUR_DIRECTION);
407 }
408
409 #define _mm512_cvt_roundepi64_pd(__A, __R) __extension__ ({          \
410   (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,           \
411                 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
412
413 #define _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, __R) __extension__ ({ \
414   (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,                 \
415                 (__v8df) __W, (__mmask8) __U, __R);})
416
417 #define _mm512_maskz_cvt_roundepi64_pd(__U, __A, __R) __extension__ ({ \
418   (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,             \
419                 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
420
421 static __inline__ __m256 __DEFAULT_FN_ATTRS
422 _mm512_cvtepi64_ps (__m512i __A) {
423   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
424                (__v8sf) _mm256_setzero_ps(),
425                (__mmask8) -1,
426                _MM_FROUND_CUR_DIRECTION);
427 }
428
429 static __inline__ __m256 __DEFAULT_FN_ATTRS
430 _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
431   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
432                (__v8sf) __W,
433                (__mmask8) __U,
434                _MM_FROUND_CUR_DIRECTION);
435 }
436
437 static __inline__ __m256 __DEFAULT_FN_ATTRS
438 _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
439   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
440                (__v8sf) _mm256_setzero_ps(),
441                (__mmask8) __U,
442                _MM_FROUND_CUR_DIRECTION);
443 }
444
445 #define _mm512_cvt_roundepi64_ps(__A, __R) __extension__ ({        \
446   (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,          \
447                (__v8sf) _mm256_setzero_ps(), (__mmask8) -1, __R);})
448
449 #define _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, __R) __extension__ ({ \
450   (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,                  \
451                (__v8sf) __W, (__mmask8) __U, __R);})
452
453 #define _mm512_maskz_cvt_roundepi64_ps(__U, __A, __R) __extension__ ({ \
454   (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,              \
455                (__v8sf) _mm256_setzero_ps(), (__mmask8) __U, __R);})
456
457
458 static __inline__ __m512i __DEFAULT_FN_ATTRS
459 _mm512_cvttpd_epi64 (__m512d __A) {
460   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
461                  (__v8di) _mm512_setzero_si512(),
462                  (__mmask8) -1,
463                  _MM_FROUND_CUR_DIRECTION);
464 }
465
466 static __inline__ __m512i __DEFAULT_FN_ATTRS
467 _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
468   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
469                  (__v8di) __W,
470                  (__mmask8) __U,
471                  _MM_FROUND_CUR_DIRECTION);
472 }
473
474 static __inline__ __m512i __DEFAULT_FN_ATTRS
475 _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
476   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
477                  (__v8di) _mm512_setzero_si512(),
478                  (__mmask8) __U,
479                  _MM_FROUND_CUR_DIRECTION);
480 }
481
482 #define _mm512_cvtt_roundpd_epi64(__A, __R) __extension__ ({             \
483   (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,              \
484                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
485
486 #define _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, __R) __extension__ ({ \
487   (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,                 \
488                  (__v8di) __W, (__mmask8) __U, __R);})
489
490 #define _mm512_maskz_cvtt_roundpd_epi64(__U, __A, __R) __extension__ ({ \
491   (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,             \
492                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
493
494 static __inline__ __m512i __DEFAULT_FN_ATTRS
495 _mm512_cvttpd_epu64 (__m512d __A) {
496   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
497                   (__v8di) _mm512_setzero_si512(),
498                   (__mmask8) -1,
499                   _MM_FROUND_CUR_DIRECTION);
500 }
501
502 static __inline__ __m512i __DEFAULT_FN_ATTRS
503 _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
504   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
505                   (__v8di) __W,
506                   (__mmask8) __U,
507                   _MM_FROUND_CUR_DIRECTION);
508 }
509
510 static __inline__ __m512i __DEFAULT_FN_ATTRS
511 _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
512   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
513                   (__v8di) _mm512_setzero_si512(),
514                   (__mmask8) __U,
515                   _MM_FROUND_CUR_DIRECTION);
516 }
517
518 #define _mm512_cvtt_roundpd_epu64(__A, __R) __extension__ ({              \
519   (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,              \
520                   (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
521
522 #define _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, __R) __extension__ ({ \
523   (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,                \
524                   (__v8di) __W, (__mmask8) __U, __R);})
525
526 #define _mm512_maskz_cvtt_roundpd_epu64(__U, __A, __R) __extension__ ({   \
527   (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,              \
528                   (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
529
530 static __inline__ __m512i __DEFAULT_FN_ATTRS
531 _mm512_cvttps_epi64 (__m256 __A) {
532   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
533                  (__v8di) _mm512_setzero_si512(),
534                  (__mmask8) -1,
535                  _MM_FROUND_CUR_DIRECTION);
536 }
537
538 static __inline__ __m512i __DEFAULT_FN_ATTRS
539 _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
540   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
541                  (__v8di) __W,
542                  (__mmask8) __U,
543                  _MM_FROUND_CUR_DIRECTION);
544 }
545
546 static __inline__ __m512i __DEFAULT_FN_ATTRS
547 _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
548   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
549                  (__v8di) _mm512_setzero_si512(),
550                  (__mmask8) __U,
551                  _MM_FROUND_CUR_DIRECTION);
552 }
553
554 #define _mm512_cvtt_roundps_epi64(__A, __R) __extension__ ({            \
555   (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,             \
556                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
557
558 #define _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, __R) __extension__ ({ \
559   (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,                 \
560                  (__v8di) __W, (__mmask8) __U, __R);})
561
562 #define _mm512_maskz_cvtt_roundps_epi64(__U, __A, __R) __extension__ ({  \
563   (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,              \
564                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
565
566 static __inline__ __m512i __DEFAULT_FN_ATTRS
567 _mm512_cvttps_epu64 (__m256 __A) {
568   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
569                   (__v8di) _mm512_setzero_si512(),
570                   (__mmask8) -1,
571                   _MM_FROUND_CUR_DIRECTION);
572 }
573
574 static __inline__ __m512i __DEFAULT_FN_ATTRS
575 _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
576   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
577                   (__v8di) __W,
578                   (__mmask8) __U,
579                   _MM_FROUND_CUR_DIRECTION);
580 }
581
582 static __inline__ __m512i __DEFAULT_FN_ATTRS
583 _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
584   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
585                   (__v8di) _mm512_setzero_si512(),
586                   (__mmask8) __U,
587                   _MM_FROUND_CUR_DIRECTION);
588 }
589
590 #define _mm512_cvtt_roundps_epu64(__A, __R) __extension__ ({            \
591   (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,            \
592                   (__v8di) _mm512_setzero_si512(),(__mmask8) -1, __R);})
593
594 #define _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, __R) __extension__ ({ \
595   (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,                \
596                   (__v8di) __W, (__mmask8) __U, __R);})
597
598 #define _mm512_maskz_cvtt_roundps_epu64(__U, __A, __R) __extension__ ({  \
599   (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,             \
600                   (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
601
602 static __inline__ __m512d __DEFAULT_FN_ATTRS
603 _mm512_cvtepu64_pd (__m512i __A) {
604   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
605                  (__v8df) _mm512_setzero_pd(),
606                  (__mmask8) -1,
607                  _MM_FROUND_CUR_DIRECTION);
608 }
609
610 static __inline__ __m512d __DEFAULT_FN_ATTRS
611 _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
612   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
613                  (__v8df) __W,
614                  (__mmask8) __U,
615                  _MM_FROUND_CUR_DIRECTION);
616 }
617
618 static __inline__ __m512d __DEFAULT_FN_ATTRS
619 _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
620   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
621                  (__v8df) _mm512_setzero_pd(),
622                  (__mmask8) __U,
623                  _MM_FROUND_CUR_DIRECTION);
624 }
625
626 #define _mm512_cvt_roundepu64_pd(__A, __R) __extension__ ({          \
627   (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,          \
628                  (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
629
630 #define _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, __R) __extension__ ({ \
631   (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,                \
632                  (__v8df) __W, (__mmask8) __U, __R);})
633
634
635 #define _mm512_maskz_cvt_roundepu64_pd(__U, __A, __R) __extension__ ({ \
636   (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,            \
637                  (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
638
639
640 static __inline__ __m256 __DEFAULT_FN_ATTRS
641 _mm512_cvtepu64_ps (__m512i __A) {
642   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
643                 (__v8sf) _mm256_setzero_ps(),
644                 (__mmask8) -1,
645                 _MM_FROUND_CUR_DIRECTION);
646 }
647
648 static __inline__ __m256 __DEFAULT_FN_ATTRS
649 _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
650   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
651                 (__v8sf) __W,
652                 (__mmask8) __U,
653                 _MM_FROUND_CUR_DIRECTION);
654 }
655
656 static __inline__ __m256 __DEFAULT_FN_ATTRS
657 _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
658   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
659                 (__v8sf) _mm256_setzero_ps(),
660                 (__mmask8) __U,
661                 _MM_FROUND_CUR_DIRECTION);
662 }
663
664 #define _mm512_cvt_roundepu64_ps(__A, __R) __extension__ ({         \
665   (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,          \
666                 (__v8sf) _mm256_setzero_ps(), (__mmask8) -1, __R);})
667
668 #define _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, __R) __extension__ ({ \
669   (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,                 \
670                 (__v8sf) __W, (__mmask8) __U, __R);})
671
672 #define _mm512_maskz_cvt_roundepu64_ps(__U, __A, __R) __extension__ ({ \
673   (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,             \
674                 (__v8sf) _mm256_setzero_ps(), (__mmask8) __U, __R);})
675
676 #define _mm512_range_pd(__A, __B, __C) __extension__ ({                     \
677   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,\
678                (__v8df) _mm512_setzero_pd(), (__mmask8) -1,                 \
679                _MM_FROUND_CUR_DIRECTION);})
680
681 #define _mm512_mask_range_pd(__W, __U, __A, __B, __C) __extension__ ({      \
682   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,\
683                (__v8df) __W, (__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
684
685 #define _mm512_maskz_range_pd(__U, __A, __B, __C) __extension__ ({           \
686   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
687                (__v8df) _mm512_setzero_pd(), (__mmask8) __U,                 \
688                _MM_FROUND_CUR_DIRECTION);})
689
690 #define _mm512_range_round_pd(__A, __B, __C, __R) __extension__ ({           \
691   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
692                (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
693
694 #define _mm512_mask_range_round_pd(__W, __U, __A, __B, __C, __R) __extension__ ({ \
695   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,      \
696                (__v8df) __W, (__mmask8) __U, __R);})
697
698 #define _mm512_maskz_range_round_pd(__U, __A, __B, __C, __R) __extension__ ({ \
699   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,   \
700                (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
701
702 #define _mm512_range_ps(__A, __B, __C) __extension__ ({                       \
703   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, __C, \
704                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1,                 \
705                _MM_FROUND_CUR_DIRECTION);})
706
707 #define _mm512_mask_range_ps(__W, __U, __A, __B, __C) __extension__ ({         \
708   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,       \
709                __C, (__v16sf) __W, (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
710
711 #define _mm512_maskz_range_ps(__U, __A, __B, __C) __extension__ ({      \
712   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,(__v16sf) __B, \
713               __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) __U,      \
714               _MM_FROUND_CUR_DIRECTION);})
715
716 #define _mm512_range_round_ps(__A, __B, __C, __R) __extension__ ({         \
717   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,   \
718                 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R);})
719
720 #define _mm512_mask_range_round_ps(__W, __U, __A, __B, __C, __R) __extension__ ({ \
721   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,          \
722                 __C, (__v16sf) __W, (__mmask16) __U, __R);})
723
724 #define _mm512_maskz_range_round_ps(__U, __A, __B, __C, __R) __extension__ ({ \
725   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,      \
726                 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, __R);})
727
728 #define _mm512_reduce_pd(__A, __B) __extension__ ({             \
729   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
730                 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);})
731
732 #define _mm512_mask_reduce_pd(__W, __U, __A, __B) __extension__ ({ \
733   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,    \
734                 (__v8df) __W,(__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
735
736 #define _mm512_maskz_reduce_pd(__U, __A, __B) __extension__ ({  \
737   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
738                 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
739
740 #define _mm512_reduce_ps(__A, __B) __extension__ ({              \
741   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,  \
742                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);})
743
744 #define _mm512_mask_reduce_ps(__W, __U, __A, __B) __extension__ ({   \
745   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
746                (__v16sf) __W, (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
747
748 #define _mm512_maskz_reduce_ps(__U, __A, __B) __extension__ ({       \
749   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
750                (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
751
752 #define _mm512_reduce_round_pd(__A, __B, __R) __extension__ ({\
753   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
754                 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
755
756 #define _mm512_mask_reduce_round_pd(__W, __U, __A, __B, __R) __extension__ ({\
757   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,    \
758                 (__v8df) __W,(__mmask8) __U, __R);})
759
760 #define _mm512_maskz_reduce_round_pd(__U, __A, __B, __R) __extension__ ({\
761   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
762                 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
763
764 #define _mm512_reduce_round_ps(__A, __B, __R) __extension__ ({\
765   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,  \
766                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R);})
767
768 #define _mm512_mask_reduce_round_ps(__W, __U, __A, __B, __R) __extension__ ({\
769   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
770                (__v16sf) __W, (__mmask16) __U, __R);})
771
772 #define _mm512_maskz_reduce_round_ps(__U, __A, __B, __R) __extension__ ({\
773   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
774                (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, __R);})
775
776 #undef __DEFAULT_FN_ATTRS
777
778 #endif