gcc50: Disconnect from buildworld.
[dragonfly.git] / contrib / gcc-5.0 / gcc / config / i386 / avx512dqintrin.h
1 /* Copyright (C) 2014-2015 Free Software Foundation, Inc.
2
3    This file is part of GCC.
4
5    GCC is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3, or (at your option)
8    any later version.
9
10    GCC is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    Under Section 7 of GPL version 3, you are granted additional
16    permissions described in the GCC Runtime Library Exception, version
17    3.1, as published by the Free Software Foundation.
18
19    You should have received a copy of the GNU General Public License and
20    a copy of the GCC Runtime Library Exception along with this program;
21    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22    <http://www.gnu.org/licenses/>.  */
23
24 #ifndef _IMMINTRIN_H_INCLUDED
25 #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef _AVX512DQINTRIN_H_INCLUDED
29 #define _AVX512DQINTRIN_H_INCLUDED
30
31 #ifndef __AVX512DQ__
32 #pragma GCC push_options
33 #pragma GCC target("avx512dq")
34 #define __DISABLE_AVX512DQ__
35 #endif /* __AVX512DQ__ */
36
37 extern __inline __m512d
38 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
39 _mm512_broadcast_f64x2 (__m128d __A)
40 {
41   return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
42                                                            __A,
43                                                            _mm512_undefined_pd(),
44                                                            (__mmask8) -1);
45 }
46
47 extern __inline __m512d
48 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
49 _mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
50 {
51   return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
52                                                            __A,
53                                                            (__v8df)
54                                                            __O, __M);
55 }
56
57 extern __inline __m512d
58 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
59 _mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
60 {
61   return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
62                                                            __A,
63                                                            (__v8df)
64                                                            _mm512_setzero_ps (),
65                                                            __M);
66 }
67
68 extern __inline __m512i
69 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
70 _mm512_broadcast_i64x2 (__m128i __A)
71 {
72   return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
73                                                            __A,
74                                                            _mm512_undefined_epi32(),
75                                                            (__mmask8) -1);
76 }
77
78 extern __inline __m512i
79 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
80 _mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
81 {
82   return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
83                                                            __A,
84                                                            (__v8di)
85                                                            __O, __M);
86 }
87
88 extern __inline __m512i
89 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
90 _mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
91 {
92   return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
93                                                            __A,
94                                                            (__v8di)
95                                                            _mm512_setzero_si512 (),
96                                                            __M);
97 }
98
99 extern __inline __m512
100 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
101 _mm512_broadcast_f32x2 (__m128 __A)
102 {
103   return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
104                                                           (__v16sf)_mm512_undefined_ps(),
105                                                           (__mmask16) -1);
106 }
107
108 extern __inline __m512
109 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
110 _mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
111 {
112   return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
113                                                           (__v16sf)
114                                                           __O, __M);
115 }
116
117 extern __inline __m512
118 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
119 _mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
120 {
121   return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
122                                                           (__v16sf)
123                                                           _mm512_setzero_ps (),
124                                                           __M);
125 }
126
127 extern __inline __m512i
128 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
129 _mm512_broadcast_i32x2 (__m128i __A)
130 {
131   return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
132                                                            __A,
133                                                            (__v16si)_mm512_undefined_epi32(),
134                                                            (__mmask16) -1);
135 }
136
137 extern __inline __m512i
138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
139 _mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
140 {
141   return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
142                                                            __A,
143                                                            (__v16si)
144                                                            __O, __M);
145 }
146
147 extern __inline __m512i
148 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
149 _mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
150 {
151   return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
152                                                            __A,
153                                                            (__v16si)
154                                                            _mm512_setzero_si512 (),
155                                                            __M);
156 }
157
158 extern __inline __m512
159 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
160 _mm512_broadcast_f32x8 (__m256 __A)
161 {
162   return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
163                                                           _mm512_undefined_ps(),
164                                                           (__mmask16) -1);
165 }
166
167 extern __inline __m512
168 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
169 _mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
170 {
171   return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
172                                                           (__v16sf)__O,
173                                                           __M);
174 }
175
176 extern __inline __m512
177 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
178 _mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
179 {
180   return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
181                                                           (__v16sf)
182                                                           _mm512_setzero_ps (),
183                                                           __M);
184 }
185
186 extern __inline __m512i
187 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
188 _mm512_broadcast_i32x8 (__m256i __A)
189 {
190   return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
191                                                            __A,
192                                                            (__v16si)_mm512_undefined_epi32(),
193                                                            (__mmask16) -1);
194 }
195
196 extern __inline __m512i
197 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
198 _mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
199 {
200   return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
201                                                            __A,
202                                                            (__v16si)__O,
203                                                            __M);
204 }
205
206 extern __inline __m512i
207 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
208 _mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
209 {
210   return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
211                                                            __A,
212                                                            (__v16si)
213                                                            _mm512_setzero_si512 (),
214                                                            __M);
215 }
216
217 extern __inline __m512i
218 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
219 _mm512_mullo_epi64 (__m512i __A, __m512i __B)
220 {
221   return (__m512i) ((__v8du) __A * (__v8du) __B);
222 }
223
224 extern __inline __m512i
225 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
226 _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
227                          __m512i __B)
228 {
229   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
230                                                   (__v8di) __B,
231                                                   (__v8di) __W,
232                                                   (__mmask8) __U);
233 }
234
235 extern __inline __m512i
236 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
237 _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
238 {
239   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
240                                                   (__v8di) __B,
241                                                   (__v8di)
242                                                   _mm512_setzero_si512 (),
243                                                   (__mmask8) __U);
244 }
245
246 extern __inline __m512d
247 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
248 _mm512_xor_pd (__m512d __A, __m512d __B)
249 {
250   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
251                                                  (__v8df) __B,
252                                                  (__v8df)
253                                                  _mm512_setzero_pd (),
254                                                  (__mmask8) -1);
255 }
256
257 extern __inline __m512d
258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
259 _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A,
260                     __m512d __B)
261 {
262   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
263                                                  (__v8df) __B,
264                                                  (__v8df) __W,
265                                                  (__mmask8) __U);
266 }
267
268 extern __inline __m512d
269 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
270 _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B)
271 {
272   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
273                                                  (__v8df) __B,
274                                                  (__v8df)
275                                                  _mm512_setzero_pd (),
276                                                  (__mmask8) __U);
277 }
278
279 extern __inline __m512
280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
281 _mm512_xor_ps (__m512 __A, __m512 __B)
282 {
283   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
284                                                 (__v16sf) __B,
285                                                 (__v16sf)
286                                                 _mm512_setzero_ps (),
287                                                 (__mmask16) -1);
288 }
289
290 extern __inline __m512
291 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
292 _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
293 {
294   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
295                                                 (__v16sf) __B,
296                                                 (__v16sf) __W,
297                                                 (__mmask16) __U);
298 }
299
300 extern __inline __m512
301 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
302 _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B)
303 {
304   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
305                                                 (__v16sf) __B,
306                                                 (__v16sf)
307                                                 _mm512_setzero_ps (),
308                                                 (__mmask16) __U);
309 }
310
311 extern __inline __m512d
312 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
313 _mm512_or_pd (__m512d __A, __m512d __B)
314 {
315   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
316                                                 (__v8df) __B,
317                                                 (__v8df)
318                                                 _mm512_setzero_pd (),
319                                                 (__mmask8) -1);
320 }
321
322 extern __inline __m512d
323 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
324 _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
325 {
326   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
327                                                 (__v8df) __B,
328                                                 (__v8df) __W,
329                                                 (__mmask8) __U);
330 }
331
332 extern __inline __m512d
333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
334 _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B)
335 {
336   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
337                                                 (__v8df) __B,
338                                                 (__v8df)
339                                                 _mm512_setzero_pd (),
340                                                 (__mmask8) __U);
341 }
342
343 extern __inline __m512
344 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
345 _mm512_or_ps (__m512 __A, __m512 __B)
346 {
347   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
348                                                (__v16sf) __B,
349                                                (__v16sf)
350                                                _mm512_setzero_ps (),
351                                                (__mmask16) -1);
352 }
353
354 extern __inline __m512
355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
356 _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
357 {
358   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
359                                                (__v16sf) __B,
360                                                (__v16sf) __W,
361                                                (__mmask16) __U);
362 }
363
364 extern __inline __m512
365 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
366 _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B)
367 {
368   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
369                                                (__v16sf) __B,
370                                                (__v16sf)
371                                                _mm512_setzero_ps (),
372                                                (__mmask16) __U);
373 }
374
375 extern __inline __m512d
376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
377 _mm512_and_pd (__m512d __A, __m512d __B)
378 {
379   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
380                                                  (__v8df) __B,
381                                                  (__v8df)
382                                                  _mm512_setzero_pd (),
383                                                  (__mmask8) -1);
384 }
385
386 extern __inline __m512d
387 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
388 _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A,
389                     __m512d __B)
390 {
391   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
392                                                  (__v8df) __B,
393                                                  (__v8df) __W,
394                                                  (__mmask8) __U);
395 }
396
397 extern __inline __m512d
398 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
399 _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B)
400 {
401   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
402                                                  (__v8df) __B,
403                                                  (__v8df)
404                                                  _mm512_setzero_pd (),
405                                                  (__mmask8) __U);
406 }
407
408 extern __inline __m512
409 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
410 _mm512_and_ps (__m512 __A, __m512 __B)
411 {
412   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
413                                                 (__v16sf) __B,
414                                                 (__v16sf)
415                                                 _mm512_setzero_ps (),
416                                                 (__mmask16) -1);
417 }
418
419 extern __inline __m512
420 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
421 _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
422 {
423   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
424                                                 (__v16sf) __B,
425                                                 (__v16sf) __W,
426                                                 (__mmask16) __U);
427 }
428
429 extern __inline __m512
430 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
431 _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B)
432 {
433   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
434                                                 (__v16sf) __B,
435                                                 (__v16sf)
436                                                 _mm512_setzero_ps (),
437                                                 (__mmask16) __U);
438 }
439
440 extern __inline __m512d
441 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
442 _mm512_andnot_pd (__m512d __A, __m512d __B)
443 {
444   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
445                                                   (__v8df) __B,
446                                                   (__v8df)
447                                                   _mm512_setzero_pd (),
448                                                   (__mmask8) -1);
449 }
450
451 extern __inline __m512d
452 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
453 _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A,
454                        __m512d __B)
455 {
456   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
457                                                   (__v8df) __B,
458                                                   (__v8df) __W,
459                                                   (__mmask8) __U);
460 }
461
462 extern __inline __m512d
463 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
464 _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B)
465 {
466   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
467                                                   (__v8df) __B,
468                                                   (__v8df)
469                                                   _mm512_setzero_pd (),
470                                                   (__mmask8) __U);
471 }
472
473 extern __inline __m512
474 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
475 _mm512_andnot_ps (__m512 __A, __m512 __B)
476 {
477   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
478                                                  (__v16sf) __B,
479                                                  (__v16sf)
480                                                  _mm512_setzero_ps (),
481                                                  (__mmask16) -1);
482 }
483
484 extern __inline __m512
485 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
486 _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A,
487                        __m512 __B)
488 {
489   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
490                                                  (__v16sf) __B,
491                                                  (__v16sf) __W,
492                                                  (__mmask16) __U);
493 }
494
495 extern __inline __m512
496 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
497 _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B)
498 {
499   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
500                                                  (__v16sf) __B,
501                                                  (__v16sf)
502                                                  _mm512_setzero_ps (),
503                                                  (__mmask16) __U);
504 }
505
506 extern __inline __mmask16
507 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
508 _mm512_movepi32_mask (__m512i __A)
509 {
510   return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
511 }
512
513 extern __inline __mmask8
514 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
515 _mm512_movepi64_mask (__m512i __A)
516 {
517   return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
518 }
519
520 extern __inline __m512i
521 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
522 _mm512_movm_epi32 (__mmask16 __A)
523 {
524   return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
525 }
526
527 extern __inline __m512i
528 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
529 _mm512_movm_epi64 (__mmask8 __A)
530 {
531   return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
532 }
533
534 extern __inline __m512i
535 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
536 _mm512_cvttpd_epi64 (__m512d __A)
537 {
538   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
539                                                      (__v8di)
540                                                      _mm512_setzero_si512 (),
541                                                      (__mmask8) -1,
542                                                      _MM_FROUND_CUR_DIRECTION);
543 }
544
545 extern __inline __m512i
546 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
547 _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
548 {
549   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
550                                                      (__v8di) __W,
551                                                      (__mmask8) __U,
552                                                      _MM_FROUND_CUR_DIRECTION);
553 }
554
555 extern __inline __m512i
556 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
557 _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A)
558 {
559   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
560                                                      (__v8di)
561                                                      _mm512_setzero_si512 (),
562                                                      (__mmask8) __U,
563                                                      _MM_FROUND_CUR_DIRECTION);
564 }
565
566 extern __inline __m512i
567 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
568 _mm512_cvttpd_epu64 (__m512d __A)
569 {
570   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
571                                                       (__v8di)
572                                                       _mm512_setzero_si512 (),
573                                                       (__mmask8) -1,
574                                                       _MM_FROUND_CUR_DIRECTION);
575 }
576
577 extern __inline __m512i
578 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
579 _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
580 {
581   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
582                                                       (__v8di) __W,
583                                                       (__mmask8) __U,
584                                                       _MM_FROUND_CUR_DIRECTION);
585 }
586
587 extern __inline __m512i
588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
589 _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A)
590 {
591   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
592                                                       (__v8di)
593                                                       _mm512_setzero_si512 (),
594                                                       (__mmask8) __U,
595                                                       _MM_FROUND_CUR_DIRECTION);
596 }
597
598 extern __inline __m512i
599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
600 _mm512_cvttps_epi64 (__m256 __A)
601 {
602   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
603                                                      (__v8di)
604                                                      _mm512_setzero_si512 (),
605                                                      (__mmask8) -1,
606                                                      _MM_FROUND_CUR_DIRECTION);
607 }
608
609 extern __inline __m512i
610 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
611 _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
612 {
613   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
614                                                      (__v8di) __W,
615                                                      (__mmask8) __U,
616                                                      _MM_FROUND_CUR_DIRECTION);
617 }
618
619 extern __inline __m512i
620 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
621 _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A)
622 {
623   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
624                                                      (__v8di)
625                                                      _mm512_setzero_si512 (),
626                                                      (__mmask8) __U,
627                                                      _MM_FROUND_CUR_DIRECTION);
628 }
629
630 extern __inline __m512i
631 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
632 _mm512_cvttps_epu64 (__m256 __A)
633 {
634   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
635                                                       (__v8di)
636                                                       _mm512_setzero_si512 (),
637                                                       (__mmask8) -1,
638                                                       _MM_FROUND_CUR_DIRECTION);
639 }
640
641 extern __inline __m512i
642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
643 _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
644 {
645   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
646                                                       (__v8di) __W,
647                                                       (__mmask8) __U,
648                                                       _MM_FROUND_CUR_DIRECTION);
649 }
650
651 extern __inline __m512i
652 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
653 _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A)
654 {
655   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
656                                                       (__v8di)
657                                                       _mm512_setzero_si512 (),
658                                                       (__mmask8) __U,
659                                                       _MM_FROUND_CUR_DIRECTION);
660 }
661
662 extern __inline __m512i
663 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
664 _mm512_cvtpd_epi64 (__m512d __A)
665 {
666   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
667                                                     (__v8di)
668                                                     _mm512_setzero_si512 (),
669                                                     (__mmask8) -1,
670                                                     _MM_FROUND_CUR_DIRECTION);
671 }
672
673 extern __inline __m512i
674 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
675 _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
676 {
677   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
678                                                     (__v8di) __W,
679                                                     (__mmask8) __U,
680                                                     _MM_FROUND_CUR_DIRECTION);
681 }
682
683 extern __inline __m512i
684 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
685 _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A)
686 {
687   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
688                                                     (__v8di)
689                                                     _mm512_setzero_si512 (),
690                                                     (__mmask8) __U,
691                                                     _MM_FROUND_CUR_DIRECTION);
692 }
693
694 extern __inline __m512i
695 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
696 _mm512_cvtpd_epu64 (__m512d __A)
697 {
698   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
699                                                      (__v8di)
700                                                      _mm512_setzero_si512 (),
701                                                      (__mmask8) -1,
702                                                      _MM_FROUND_CUR_DIRECTION);
703 }
704
705 extern __inline __m512i
706 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
707 _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
708 {
709   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
710                                                      (__v8di) __W,
711                                                      (__mmask8) __U,
712                                                      _MM_FROUND_CUR_DIRECTION);
713 }
714
715 extern __inline __m512i
716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
717 _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A)
718 {
719   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
720                                                      (__v8di)
721                                                      _mm512_setzero_si512 (),
722                                                      (__mmask8) __U,
723                                                      _MM_FROUND_CUR_DIRECTION);
724 }
725
726 extern __inline __m512i
727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
728 _mm512_cvtps_epi64 (__m256 __A)
729 {
730   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
731                                                     (__v8di)
732                                                     _mm512_setzero_si512 (),
733                                                     (__mmask8) -1,
734                                                     _MM_FROUND_CUR_DIRECTION);
735 }
736
737 extern __inline __m512i
738 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
739 _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
740 {
741   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
742                                                     (__v8di) __W,
743                                                     (__mmask8) __U,
744                                                     _MM_FROUND_CUR_DIRECTION);
745 }
746
747 extern __inline __m512i
748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
749 _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A)
750 {
751   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
752                                                     (__v8di)
753                                                     _mm512_setzero_si512 (),
754                                                     (__mmask8) __U,
755                                                     _MM_FROUND_CUR_DIRECTION);
756 }
757
758 extern __inline __m512i
759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
760 _mm512_cvtps_epu64 (__m256 __A)
761 {
762   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
763                                                      (__v8di)
764                                                      _mm512_setzero_si512 (),
765                                                      (__mmask8) -1,
766                                                      _MM_FROUND_CUR_DIRECTION);
767 }
768
769 extern __inline __m512i
770 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
771 _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
772 {
773   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
774                                                      (__v8di) __W,
775                                                      (__mmask8) __U,
776                                                      _MM_FROUND_CUR_DIRECTION);
777 }
778
779 extern __inline __m512i
780 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
781 _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A)
782 {
783   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
784                                                      (__v8di)
785                                                      _mm512_setzero_si512 (),
786                                                      (__mmask8) __U,
787                                                      _MM_FROUND_CUR_DIRECTION);
788 }
789
790 extern __inline __m256
791 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
792 _mm512_cvtepi64_ps (__m512i __A)
793 {
794   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
795                                                    (__v8sf)
796                                                    _mm256_setzero_ps (),
797                                                    (__mmask8) -1,
798                                                    _MM_FROUND_CUR_DIRECTION);
799 }
800
801 extern __inline __m256
802 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
803 _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A)
804 {
805   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
806                                                    (__v8sf) __W,
807                                                    (__mmask8) __U,
808                                                    _MM_FROUND_CUR_DIRECTION);
809 }
810
811 extern __inline __m256
812 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
813 _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A)
814 {
815   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
816                                                    (__v8sf)
817                                                    _mm256_setzero_ps (),
818                                                    (__mmask8) __U,
819                                                    _MM_FROUND_CUR_DIRECTION);
820 }
821
822 extern __inline __m256
823 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
824 _mm512_cvtepu64_ps (__m512i __A)
825 {
826   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
827                                                     (__v8sf)
828                                                     _mm256_setzero_ps (),
829                                                     (__mmask8) -1,
830                                                     _MM_FROUND_CUR_DIRECTION);
831 }
832
833 extern __inline __m256
834 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
835 _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A)
836 {
837   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
838                                                     (__v8sf) __W,
839                                                     (__mmask8) __U,
840                                                     _MM_FROUND_CUR_DIRECTION);
841 }
842
843 extern __inline __m256
844 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
845 _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A)
846 {
847   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
848                                                     (__v8sf)
849                                                     _mm256_setzero_ps (),
850                                                     (__mmask8) __U,
851                                                     _MM_FROUND_CUR_DIRECTION);
852 }
853
854 extern __inline __m512d
855 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
856 _mm512_cvtepi64_pd (__m512i __A)
857 {
858   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
859                                                     (__v8df)
860                                                     _mm512_setzero_pd (),
861                                                     (__mmask8) -1,
862                                                     _MM_FROUND_CUR_DIRECTION);
863 }
864
865 extern __inline __m512d
866 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
867 _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A)
868 {
869   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
870                                                     (__v8df) __W,
871                                                     (__mmask8) __U,
872                                                     _MM_FROUND_CUR_DIRECTION);
873 }
874
875 extern __inline __m512d
876 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
877 _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A)
878 {
879   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
880                                                     (__v8df)
881                                                     _mm512_setzero_pd (),
882                                                     (__mmask8) __U,
883                                                     _MM_FROUND_CUR_DIRECTION);
884 }
885
886 extern __inline __m512d
887 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
888 _mm512_cvtepu64_pd (__m512i __A)
889 {
890   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
891                                                      (__v8df)
892                                                      _mm512_setzero_pd (),
893                                                      (__mmask8) -1,
894                                                      _MM_FROUND_CUR_DIRECTION);
895 }
896
897 extern __inline __m512d
898 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
899 _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A)
900 {
901   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
902                                                      (__v8df) __W,
903                                                      (__mmask8) __U,
904                                                      _MM_FROUND_CUR_DIRECTION);
905 }
906
907 extern __inline __m512d
908 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
909 _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A)
910 {
911   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
912                                                      (__v8df)
913                                                      _mm512_setzero_pd (),
914                                                      (__mmask8) __U,
915                                                      _MM_FROUND_CUR_DIRECTION);
916 }
917
918 #ifdef __OPTIMIZE__
919 extern __inline __m512d
920 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
921 _mm512_range_pd (__m512d __A, __m512d __B, int __C)
922 {
923   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
924                                                    (__v8df) __B, __C,
925                                                    (__v8df)
926                                                    _mm512_setzero_pd (),
927                                                    (__mmask8) -1,
928                                                    _MM_FROUND_CUR_DIRECTION);
929 }
930
931 extern __inline __m512d
932 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
933 _mm512_mask_range_pd (__m512d __W, __mmask8 __U,
934                       __m512d __A, __m512d __B, int __C)
935 {
936   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
937                                                    (__v8df) __B, __C,
938                                                    (__v8df) __W,
939                                                    (__mmask8) __U,
940                                                    _MM_FROUND_CUR_DIRECTION);
941 }
942
943 extern __inline __m512d
944 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
945 _mm512_maskz_range_pd (__mmask8 __U, __m512d __A, __m512d __B, int __C)
946 {
947   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
948                                                    (__v8df) __B, __C,
949                                                    (__v8df)
950                                                    _mm512_setzero_pd (),
951                                                    (__mmask8) __U,
952                                                    _MM_FROUND_CUR_DIRECTION);
953 }
954
955 extern __inline __m512
956 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
957 _mm512_range_ps (__m512 __A, __m512 __B, int __C)
958 {
959   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
960                                                   (__v16sf) __B, __C,
961                                                   (__v16sf)
962                                                   _mm512_setzero_ps (),
963                                                   (__mmask16) -1,
964                                                   _MM_FROUND_CUR_DIRECTION);
965 }
966
967 extern __inline __m512
968 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
969 _mm512_mask_range_ps (__m512 __W, __mmask16 __U,
970                       __m512 __A, __m512 __B, int __C)
971 {
972   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
973                                                   (__v16sf) __B, __C,
974                                                   (__v16sf) __W,
975                                                   (__mmask16) __U,
976                                                   _MM_FROUND_CUR_DIRECTION);
977 }
978
979 extern __inline __m512
980 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
981 _mm512_maskz_range_ps (__mmask16 __U, __m512 __A, __m512 __B, int __C)
982 {
983   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
984                                                   (__v16sf) __B, __C,
985                                                   (__v16sf)
986                                                   _mm512_setzero_ps (),
987                                                   (__mmask16) __U,
988                                                   _MM_FROUND_CUR_DIRECTION);
989 }
990
991 extern __inline __m128d
992 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
993 _mm_reduce_sd (__m128d __A, __m128d __B, int __C)
994 {
995   return (__m128d) __builtin_ia32_reducesd ((__v2df) __A,
996                                                  (__v2df) __B, __C);
997 }
998
999 extern __inline __m128
1000 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1001 _mm_reduce_ss (__m128 __A, __m128 __B, int __C)
1002 {
1003   return (__m128) __builtin_ia32_reducess ((__v4sf) __A,
1004                                                 (__v4sf) __B, __C);
1005 }
1006
1007 extern __inline __m128d
1008 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1009 _mm_range_sd (__m128d __A, __m128d __B, int __C)
1010 {
1011   return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A,
1012                                                    (__v2df) __B, __C,
1013                                                    _MM_FROUND_CUR_DIRECTION);
1014 }
1015
1016
1017 extern __inline __m128
1018 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1019 _mm_range_ss (__m128 __A, __m128 __B, int __C)
1020 {
1021   return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A,
1022                                                   (__v4sf) __B, __C,
1023                                                   _MM_FROUND_CUR_DIRECTION);
1024 }
1025
1026 extern __inline __m128d
1027 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1028 _mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
1029 {
1030   return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A,
1031                                                    (__v2df) __B, __C,
1032                                                    __R);
1033 }
1034
1035 extern __inline __m128
1036 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1037 _mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
1038 {
1039   return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A,
1040                                                   (__v4sf) __B, __C,
1041                                                   __R);
1042 }
1043
1044 extern __inline __mmask8
1045 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1046 _mm_fpclass_ss_mask (__m128 __A, const int __imm)
1047 {
1048   return (__mmask8) __builtin_ia32_fpclassss ((__v4sf) __A, __imm);
1049 }
1050
1051 extern __inline __mmask8
1052 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1053 _mm_fpclass_sd_mask (__m128d __A, const int __imm)
1054 {
1055   return (__mmask8) __builtin_ia32_fpclasssd ((__v2df) __A, __imm);
1056 }
1057
1058 extern __inline __m512i
1059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1060 _mm512_cvtt_roundpd_epi64 (__m512d __A, const int __R)
1061 {
1062   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1063                                                      (__v8di)
1064                                                      _mm512_setzero_si512 (),
1065                                                      (__mmask8) -1,
1066                                                      __R);
1067 }
1068
1069 extern __inline __m512i
1070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1071 _mm512_mask_cvtt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
1072                                 const int __R)
1073 {
1074   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1075                                                      (__v8di) __W,
1076                                                      (__mmask8) __U,
1077                                                      __R);
1078 }
1079
1080 extern __inline __m512i
1081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1082 _mm512_maskz_cvtt_roundpd_epi64 (__mmask8 __U, __m512d __A,
1083                                  const int __R)
1084 {
1085   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1086                                                      (__v8di)
1087                                                      _mm512_setzero_si512 (),
1088                                                      (__mmask8) __U,
1089                                                      __R);
1090 }
1091
1092 extern __inline __m512i
1093 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1094 _mm512_cvtt_roundpd_epu64 (__m512d __A, const int __R)
1095 {
1096   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1097                                                       (__v8di)
1098                                                       _mm512_setzero_si512 (),
1099                                                       (__mmask8) -1,
1100                                                       __R);
1101 }
1102
1103 extern __inline __m512i
1104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1105 _mm512_mask_cvtt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
1106                                 const int __R)
1107 {
1108   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1109                                                       (__v8di) __W,
1110                                                       (__mmask8) __U,
1111                                                       __R);
1112 }
1113
1114 extern __inline __m512i
1115 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1116 _mm512_maskz_cvtt_roundpd_epu64 (__mmask8 __U, __m512d __A,
1117                                  const int __R)
1118 {
1119   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1120                                                       (__v8di)
1121                                                       _mm512_setzero_si512 (),
1122                                                       (__mmask8) __U,
1123                                                       __R);
1124 }
1125
1126 extern __inline __m512i
1127 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1128 _mm512_cvtt_roundps_epi64 (__m256 __A, const int __R)
1129 {
1130   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1131                                                      (__v8di)
1132                                                      _mm512_setzero_si512 (),
1133                                                      (__mmask8) -1,
1134                                                      __R);
1135 }
1136
1137 extern __inline __m512i
1138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1139 _mm512_mask_cvtt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
1140                                 const int __R)
1141 {
1142   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1143                                                      (__v8di) __W,
1144                                                      (__mmask8) __U,
1145                                                      __R);
1146 }
1147
1148 extern __inline __m512i
1149 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1150 _mm512_maskz_cvtt_roundps_epi64 (__mmask8 __U, __m256 __A,
1151                                  const int __R)
1152 {
1153   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1154                                                      (__v8di)
1155                                                      _mm512_setzero_si512 (),
1156                                                      (__mmask8) __U,
1157                                                      __R);
1158 }
1159
1160 extern __inline __m512i
1161 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1162 _mm512_cvtt_roundps_epu64 (__m256 __A, const int __R)
1163 {
1164   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1165                                                       (__v8di)
1166                                                       _mm512_setzero_si512 (),
1167                                                       (__mmask8) -1,
1168                                                       __R);
1169 }
1170
1171 extern __inline __m512i
1172 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1173 _mm512_mask_cvtt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
1174                                 const int __R)
1175 {
1176   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1177                                                       (__v8di) __W,
1178                                                       (__mmask8) __U,
1179                                                       __R);
1180 }
1181
1182 extern __inline __m512i
1183 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1184 _mm512_maskz_cvtt_roundps_epu64 (__mmask8 __U, __m256 __A,
1185                                  const int __R)
1186 {
1187   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1188                                                       (__v8di)
1189                                                       _mm512_setzero_si512 (),
1190                                                       (__mmask8) __U,
1191                                                       __R);
1192 }
1193
1194 extern __inline __m512i
1195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1196 _mm512_cvt_roundpd_epi64 (__m512d __A, const int __R)
1197 {
1198   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1199                                                     (__v8di)
1200                                                     _mm512_setzero_si512 (),
1201                                                     (__mmask8) -1,
1202                                                     __R);
1203 }
1204
1205 extern __inline __m512i
1206 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1207 _mm512_mask_cvt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
1208                                const int __R)
1209 {
1210   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1211                                                     (__v8di) __W,
1212                                                     (__mmask8) __U,
1213                                                     __R);
1214 }
1215
1216 extern __inline __m512i
1217 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1218 _mm512_maskz_cvt_roundpd_epi64 (__mmask8 __U, __m512d __A,
1219                                 const int __R)
1220 {
1221   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1222                                                     (__v8di)
1223                                                     _mm512_setzero_si512 (),
1224                                                     (__mmask8) __U,
1225                                                     __R);
1226 }
1227
1228 extern __inline __m512i
1229 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1230 _mm512_cvt_roundpd_epu64 (__m512d __A, const int __R)
1231 {
1232   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1233                                                      (__v8di)
1234                                                      _mm512_setzero_si512 (),
1235                                                      (__mmask8) -1,
1236                                                      __R);
1237 }
1238
1239 extern __inline __m512i
1240 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1241 _mm512_mask_cvt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
1242                                const int __R)
1243 {
1244   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1245                                                      (__v8di) __W,
1246                                                      (__mmask8) __U,
1247                                                      __R);
1248 }
1249
1250 extern __inline __m512i
1251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1252 _mm512_maskz_cvt_roundpd_epu64 (__mmask8 __U, __m512d __A,
1253                                 const int __R)
1254 {
1255   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1256                                                      (__v8di)
1257                                                      _mm512_setzero_si512 (),
1258                                                      (__mmask8) __U,
1259                                                      __R);
1260 }
1261
1262 extern __inline __m512i
1263 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1264 _mm512_cvt_roundps_epi64 (__m256 __A, const int __R)
1265 {
1266   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1267                                                     (__v8di)
1268                                                     _mm512_setzero_si512 (),
1269                                                     (__mmask8) -1,
1270                                                     __R);
1271 }
1272
1273 extern __inline __m512i
1274 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1275 _mm512_mask_cvt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
1276                                const int __R)
1277 {
1278   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1279                                                     (__v8di) __W,
1280                                                     (__mmask8) __U,
1281                                                     __R);
1282 }
1283
1284 extern __inline __m512i
1285 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1286 _mm512_maskz_cvt_roundps_epi64 (__mmask8 __U, __m256 __A,
1287                                 const int __R)
1288 {
1289   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1290                                                     (__v8di)
1291                                                     _mm512_setzero_si512 (),
1292                                                     (__mmask8) __U,
1293                                                     __R);
1294 }
1295
1296 extern __inline __m512i
1297 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1298 _mm512_cvt_roundps_epu64 (__m256 __A, const int __R)
1299 {
1300   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1301                                                      (__v8di)
1302                                                      _mm512_setzero_si512 (),
1303                                                      (__mmask8) -1,
1304                                                      __R);
1305 }
1306
1307 extern __inline __m512i
1308 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1309 _mm512_mask_cvt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
1310                                const int __R)
1311 {
1312   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1313                                                      (__v8di) __W,
1314                                                      (__mmask8) __U,
1315                                                      __R);
1316 }
1317
1318 extern __inline __m512i
1319 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1320 _mm512_maskz_cvt_roundps_epu64 (__mmask8 __U, __m256 __A,
1321                                 const int __R)
1322 {
1323   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1324                                                      (__v8di)
1325                                                      _mm512_setzero_si512 (),
1326                                                      (__mmask8) __U,
1327                                                      __R);
1328 }
1329
1330 extern __inline __m256
1331 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1332 _mm512_cvt_roundepi64_ps (__m512i __A, const int __R)
1333 {
1334   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1335                                                    (__v8sf)
1336                                                    _mm256_setzero_ps (),
1337                                                    (__mmask8) -1,
1338                                                    __R);
1339 }
1340
1341 extern __inline __m256
1342 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1343 _mm512_mask_cvt_roundepi64_ps (__m256 __W, __mmask8 __U, __m512i __A,
1344                                const int __R)
1345 {
1346   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1347                                                    (__v8sf) __W,
1348                                                    (__mmask8) __U,
1349                                                    __R);
1350 }
1351
1352 extern __inline __m256
1353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1354 _mm512_maskz_cvt_roundepi64_ps (__mmask8 __U, __m512i __A,
1355                                 const int __R)
1356 {
1357   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1358                                                    (__v8sf)
1359                                                    _mm256_setzero_ps (),
1360                                                    (__mmask8) __U,
1361                                                    __R);
1362 }
1363
1364 extern __inline __m256
1365 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1366 _mm512_cvt_roundepu64_ps (__m512i __A, const int __R)
1367 {
1368   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1369                                                     (__v8sf)
1370                                                     _mm256_setzero_ps (),
1371                                                     (__mmask8) -1,
1372                                                     __R);
1373 }
1374
1375 extern __inline __m256
1376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1377 _mm512_mask_cvt_roundepu64_ps (__m256 __W, __mmask8 __U, __m512i __A,
1378                                const int __R)
1379 {
1380   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1381                                                     (__v8sf) __W,
1382                                                     (__mmask8) __U,
1383                                                     __R);
1384 }
1385
1386 extern __inline __m256
1387 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1388 _mm512_maskz_cvt_roundepu64_ps (__mmask8 __U, __m512i __A,
1389                                 const int __R)
1390 {
1391   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1392                                                     (__v8sf)
1393                                                     _mm256_setzero_ps (),
1394                                                     (__mmask8) __U,
1395                                                     __R);
1396 }
1397
1398 extern __inline __m512d
1399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1400 _mm512_cvt_roundepi64_pd (__m512i __A, const int __R)
1401 {
1402   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1403                                                     (__v8df)
1404                                                     _mm512_setzero_pd (),
1405                                                     (__mmask8) -1,
1406                                                     __R);
1407 }
1408
1409 extern __inline __m512d
1410 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1411 _mm512_mask_cvt_roundepi64_pd (__m512d __W, __mmask8 __U, __m512i __A,
1412                                const int __R)
1413 {
1414   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1415                                                     (__v8df) __W,
1416                                                     (__mmask8) __U,
1417                                                     __R);
1418 }
1419
1420 extern __inline __m512d
1421 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1422 _mm512_maskz_cvt_roundepi64_pd (__mmask8 __U, __m512i __A,
1423                                 const int __R)
1424 {
1425   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1426                                                     (__v8df)
1427                                                     _mm512_setzero_pd (),
1428                                                     (__mmask8) __U,
1429                                                     __R);
1430 }
1431
1432 extern __inline __m512d
1433 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1434 _mm512_cvt_roundepu64_pd (__m512i __A, const int __R)
1435 {
1436   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1437                                                      (__v8df)
1438                                                      _mm512_setzero_pd (),
1439                                                      (__mmask8) -1,
1440                                                      __R);
1441 }
1442
1443 extern __inline __m512d
1444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1445 _mm512_mask_cvt_roundepu64_pd (__m512d __W, __mmask8 __U, __m512i __A,
1446                                const int __R)
1447 {
1448   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1449                                                      (__v8df) __W,
1450                                                      (__mmask8) __U,
1451                                                      __R);
1452 }
1453
1454 extern __inline __m512d
1455 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1456 _mm512_maskz_cvt_roundepu64_pd (__mmask8 __U, __m512i __A,
1457                                 const int __R)
1458 {
1459   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1460                                                      (__v8df)
1461                                                      _mm512_setzero_pd (),
1462                                                      (__mmask8) __U,
1463                                                      __R);
1464 }
1465
1466 extern __inline __m512d
1467 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1468 _mm512_reduce_pd (__m512d __A, int __B)
1469 {
1470   return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
1471                                                     (__v8df)
1472                                                     _mm512_setzero_pd (),
1473                                                     (__mmask8) -1);
1474 }
1475
1476 extern __inline __m512d
1477 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1478 _mm512_mask_reduce_pd (__m512d __W, __mmask8 __U, __m512d __A, int __B)
1479 {
1480   return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
1481                                                     (__v8df) __W,
1482                                                     (__mmask8) __U);
1483 }
1484
1485 extern __inline __m512d
1486 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1487 _mm512_maskz_reduce_pd (__mmask8 __U, __m512d __A, int __B)
1488 {
1489   return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
1490                                                     (__v8df)
1491                                                     _mm512_setzero_pd (),
1492                                                     (__mmask8) __U);
1493 }
1494
1495 extern __inline __m512
1496 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1497 _mm512_reduce_ps (__m512 __A, int __B)
1498 {
1499   return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
1500                                                    (__v16sf)
1501                                                    _mm512_setzero_ps (),
1502                                                    (__mmask16) -1);
1503 }
1504
1505 extern __inline __m512
1506 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1507 _mm512_mask_reduce_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B)
1508 {
1509   return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
1510                                                    (__v16sf) __W,
1511                                                    (__mmask16) __U);
1512 }
1513
1514 extern __inline __m512
1515 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1516 _mm512_maskz_reduce_ps (__mmask16 __U, __m512 __A, int __B)
1517 {
1518   return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
1519                                                    (__v16sf)
1520                                                    _mm512_setzero_ps (),
1521                                                    (__mmask16) __U);
1522 }
1523
1524 extern __inline __m256
1525 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1526 _mm512_extractf32x8_ps (__m512 __A, const int __imm)
1527 {
1528   return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
1529                                                     __imm,
1530                                                     (__v8sf)
1531                                                     _mm256_setzero_ps (),
1532                                                     (__mmask8) -1);
1533 }
1534
1535 extern __inline __m256
1536 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1537 _mm512_mask_extractf32x8_ps (__m256 __W, __mmask8 __U, __m512 __A,
1538                              const int __imm)
1539 {
1540   return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
1541                                                     __imm,
1542                                                     (__v8sf) __W,
1543                                                     (__mmask8) __U);
1544 }
1545
1546 extern __inline __m256
1547 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1548 _mm512_maskz_extractf32x8_ps (__mmask8 __U, __m512 __A,
1549                               const int __imm)
1550 {
1551   return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
1552                                                     __imm,
1553                                                     (__v8sf)
1554                                                     _mm256_setzero_ps (),
1555                                                     (__mmask8) __U);
1556 }
1557
1558 extern __inline __m128d
1559 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1560 _mm512_extractf64x2_pd (__m512d __A, const int __imm)
1561 {
1562   return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
1563                                                          __imm,
1564                                                          (__v2df)
1565                                                          _mm_setzero_pd (),
1566                                                          (__mmask8) -1);
1567 }
1568
1569 extern __inline __m128d
1570 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1571 _mm512_mask_extractf64x2_pd (__m128d __W, __mmask8 __U, __m512d __A,
1572                              const int __imm)
1573 {
1574   return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
1575                                                          __imm,
1576                                                          (__v2df) __W,
1577                                                          (__mmask8)
1578                                                          __U);
1579 }
1580
1581 extern __inline __m128d
1582 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1583 _mm512_maskz_extractf64x2_pd (__mmask8 __U, __m512d __A,
1584                               const int __imm)
1585 {
1586   return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
1587                                                          __imm,
1588                                                          (__v2df)
1589                                                          _mm_setzero_pd (),
1590                                                          (__mmask8)
1591                                                          __U);
1592 }
1593
1594 extern __inline __m256i
1595 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1596 _mm512_extracti32x8_epi32 (__m512i __A, const int __imm)
1597 {
1598   return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
1599                                                      __imm,
1600                                                      (__v8si)
1601                                                      _mm256_setzero_si256 (),
1602                                                      (__mmask8) -1);
1603 }
1604
1605 extern __inline __m256i
1606 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1607 _mm512_mask_extracti32x8_epi32 (__m256i __W, __mmask8 __U, __m512i __A,
1608                                 const int __imm)
1609 {
1610   return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
1611                                                      __imm,
1612                                                      (__v8si) __W,
1613                                                      (__mmask8) __U);
1614 }
1615
1616 extern __inline __m256i
1617 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1618 _mm512_maskz_extracti32x8_epi32 (__mmask8 __U, __m512i __A,
1619                                  const int __imm)
1620 {
1621   return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
1622                                                      __imm,
1623                                                      (__v8si)
1624                                                      _mm256_setzero_si256 (),
1625                                                      (__mmask8) __U);
1626 }
1627
1628 extern __inline __m128i
1629 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1630 _mm512_extracti64x2_epi64 (__m512i __A, const int __imm)
1631 {
1632   return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
1633                                                          __imm,
1634                                                          (__v2di)
1635                                                          _mm_setzero_di (),
1636                                                          (__mmask8) -1);
1637 }
1638
1639 extern __inline __m128i
1640 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1641 _mm512_mask_extracti64x2_epi64 (__m128i __W, __mmask8 __U, __m512i __A,
1642                                 const int __imm)
1643 {
1644   return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
1645                                                          __imm,
1646                                                          (__v2di) __W,
1647                                                          (__mmask8)
1648                                                          __U);
1649 }
1650
1651 extern __inline __m128i
1652 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1653 _mm512_maskz_extracti64x2_epi64 (__mmask8 __U, __m512i __A,
1654                                  const int __imm)
1655 {
1656   return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
1657                                                          __imm,
1658                                                          (__v2di)
1659                                                          _mm_setzero_di (),
1660                                                          (__mmask8)
1661                                                          __U);
1662 }
1663
1664 extern __inline __m512d
1665 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1666 _mm512_range_round_pd (__m512d __A, __m512d __B, int __C,
1667                        const int __R)
1668 {
1669   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
1670                                                    (__v8df) __B, __C,
1671                                                    (__v8df)
1672                                                    _mm512_setzero_pd (),
1673                                                    (__mmask8) -1,
1674                                                    __R);
1675 }
1676
1677 extern __inline __m512d
1678 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1679 _mm512_mask_range_round_pd (__m512d __W, __mmask8 __U,
1680                             __m512d __A, __m512d __B, int __C,
1681                             const int __R)
1682 {
1683   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
1684                                                    (__v8df) __B, __C,
1685                                                    (__v8df) __W,
1686                                                    (__mmask8) __U,
1687                                                    __R);
1688 }
1689
1690 extern __inline __m512d
1691 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1692 _mm512_maskz_range_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
1693                              int __C, const int __R)
1694 {
1695   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
1696                                                    (__v8df) __B, __C,
1697                                                    (__v8df)
1698                                                    _mm512_setzero_pd (),
1699                                                    (__mmask8) __U,
1700                                                    __R);
1701 }
1702
1703 extern __inline __m512
1704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1705 _mm512_range_round_ps (__m512 __A, __m512 __B, int __C, const int __R)
1706 {
1707   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
1708                                                   (__v16sf) __B, __C,
1709                                                   (__v16sf)
1710                                                   _mm512_setzero_ps (),
1711                                                   (__mmask16) -1,
1712                                                   __R);
1713 }
1714
1715 extern __inline __m512
1716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1717 _mm512_mask_range_round_ps (__m512 __W, __mmask16 __U,
1718                             __m512 __A, __m512 __B, int __C,
1719                             const int __R)
1720 {
1721   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
1722                                                   (__v16sf) __B, __C,
1723                                                   (__v16sf) __W,
1724                                                   (__mmask16) __U,
1725                                                   __R);
1726 }
1727
1728 extern __inline __m512
1729 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1730 _mm512_maskz_range_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
1731                              int __C, const int __R)
1732 {
1733   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
1734                                                   (__v16sf) __B, __C,
1735                                                   (__v16sf)
1736                                                   _mm512_setzero_ps (),
1737                                                   (__mmask16) __U,
1738                                                   __R);
1739 }
1740
1741 extern __inline __m512i
1742 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1743 _mm512_inserti32x8 (__m512i __A, __m256i __B, const int __imm)
1744 {
1745   return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
1746                                                     (__v8si) __B,
1747                                                     __imm,
1748                                                     (__v16si)
1749                                                     _mm512_setzero_si512 (),
1750                                                     (__mmask16) -1);
1751 }
1752
1753 extern __inline __m512i
1754 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1755 _mm512_mask_inserti32x8 (__m512i __W, __mmask16 __U, __m512i __A,
1756                          __m256i __B, const int __imm)
1757 {
1758   return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
1759                                                     (__v8si) __B,
1760                                                     __imm,
1761                                                     (__v16si) __W,
1762                                                     (__mmask16) __U);
1763 }
1764
1765 extern __inline __m512i
1766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1767 _mm512_maskz_inserti32x8 (__mmask16 __U, __m512i __A, __m256i __B,
1768                           const int __imm)
1769 {
1770   return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
1771                                                     (__v8si) __B,
1772                                                     __imm,
1773                                                     (__v16si)
1774                                                     _mm512_setzero_si512 (),
1775                                                     (__mmask16) __U);
1776 }
1777
1778 extern __inline __m512
1779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1780 _mm512_insertf32x8 (__m512 __A, __m256 __B, const int __imm)
1781 {
1782   return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
1783                                                    (__v8sf) __B,
1784                                                    __imm,
1785                                                    (__v16sf)
1786                                                    _mm512_setzero_ps (),
1787                                                    (__mmask16) -1);
1788 }
1789
1790 extern __inline __m512
1791 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1792 _mm512_mask_insertf32x8 (__m512 __W, __mmask16 __U, __m512 __A,
1793                          __m256 __B, const int __imm)
1794 {
1795   return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
1796                                                    (__v8sf) __B,
1797                                                    __imm,
1798                                                    (__v16sf) __W,
1799                                                    (__mmask16) __U);
1800 }
1801
1802 extern __inline __m512
1803 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1804 _mm512_maskz_insertf32x8 (__mmask16 __U, __m512 __A, __m256 __B,
1805                           const int __imm)
1806 {
1807   return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
1808                                                    (__v8sf) __B,
1809                                                    __imm,
1810                                                    (__v16sf)
1811                                                    _mm512_setzero_ps (),
1812                                                    (__mmask16) __U);
1813 }
1814
1815 extern __inline __m512i
1816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1817 _mm512_inserti64x2 (__m512i __A, __m128i __B, const int __imm)
1818 {
1819   return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
1820                                                         (__v2di) __B,
1821                                                         __imm,
1822                                                         (__v8di)
1823                                                         _mm512_setzero_si512 (),
1824                                                         (__mmask8) -1);
1825 }
1826
1827 extern __inline __m512i
1828 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1829 _mm512_mask_inserti64x2 (__m512i __W, __mmask8 __U, __m512i __A,
1830                          __m128i __B, const int __imm)
1831 {
1832   return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
1833                                                         (__v2di) __B,
1834                                                         __imm,
1835                                                         (__v8di) __W,
1836                                                         (__mmask8)
1837                                                         __U);
1838 }
1839
1840 extern __inline __m512i
1841 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1842 _mm512_maskz_inserti64x2 (__mmask8 __U, __m512i __A, __m128i __B,
1843                           const int __imm)
1844 {
1845   return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
1846                                                         (__v2di) __B,
1847                                                         __imm,
1848                                                         (__v8di)
1849                                                         _mm512_setzero_si512 (),
1850                                                         (__mmask8)
1851                                                         __U);
1852 }
1853
1854 extern __inline __m512d
1855 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1856 _mm512_insertf64x2 (__m512d __A, __m128d __B, const int __imm)
1857 {
1858   return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
1859                                                         (__v2df) __B,
1860                                                         __imm,
1861                                                         (__v8df)
1862                                                         _mm512_setzero_pd (),
1863                                                         (__mmask8) -1);
1864 }
1865
1866 extern __inline __m512d
1867 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1868 _mm512_mask_insertf64x2 (__m512d __W, __mmask8 __U, __m512d __A,
1869                          __m128d __B, const int __imm)
1870 {
1871   return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
1872                                                         (__v2df) __B,
1873                                                         __imm,
1874                                                         (__v8df) __W,
1875                                                         (__mmask8)
1876                                                         __U);
1877 }
1878
1879 extern __inline __m512d
1880 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1881 _mm512_maskz_insertf64x2 (__mmask8 __U, __m512d __A, __m128d __B,
1882                           const int __imm)
1883 {
1884   return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
1885                                                         (__v2df) __B,
1886                                                         __imm,
1887                                                         (__v8df)
1888                                                         _mm512_setzero_pd (),
1889                                                         (__mmask8)
1890                                                         __U);
1891 }
1892
1893 extern __inline __mmask8
1894 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1895 _mm512_mask_fpclass_pd_mask (__mmask8 __U, __m512d __A,
1896                              const int __imm)
1897 {
1898   return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
1899                                                       __imm, __U);
1900 }
1901
1902 extern __inline __mmask8
1903 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1904 _mm512_fpclass_pd_mask (__m512d __A, const int __imm)
1905 {
1906   return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
1907                                                       __imm,
1908                                                       (__mmask8) -1);
1909 }
1910
1911 extern __inline __mmask16
1912 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1913 _mm512_mask_fpclass_ps_mask (__mmask16 __U, __m512 __A,
1914                              const int __imm)
1915 {
1916   return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
1917                                                        __imm, __U);
1918 }
1919
1920 extern __inline __mmask16
1921 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1922 _mm512_fpclass_ps_mask (__m512 __A, const int __imm)
1923 {
1924   return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
1925                                                        __imm,
1926                                                        (__mmask16) -1);
1927 }
1928
1929 #else
1930 #define _mm_range_sd(A, B, C)                                           \
1931   ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A),     \
1932     (__v2df)(__m128d)(B), (int)(C),                                     \
1933     _MM_FROUND_CUR_DIRECTION))
1934
1935 #define _mm_range_ss(A, B, C)                                           \
1936   ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A),       \
1937     (__v4sf)(__m128)(B), (int)(C),                                      \
1938     _MM_FROUND_CUR_DIRECTION))
1939
1940 #define _mm_range_round_sd(A, B, C, R)                                  \
1941   ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A),     \
1942     (__v2df)(__m128d)(B), (int)(C), (R)))
1943
1944 #define _mm_range_round_ss(A, B, C, R)                                  \
1945   ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A),       \
1946     (__v4sf)(__m128)(B), (int)(C), (R)))
1947
1948 #define _mm512_cvtt_roundpd_epi64(A, B)             \
1949     ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
1950
1951 #define _mm512_mask_cvtt_roundpd_epi64(W, U, A, B)  \
1952     ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)(W), (U), (B)))
1953
1954 #define _mm512_maskz_cvtt_roundpd_epi64(U, A, B)    \
1955     ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
1956
1957 #define _mm512_cvtt_roundpd_epu64(A, B)             \
1958     ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
1959
1960 #define _mm512_mask_cvtt_roundpd_epu64(W, U, A, B)  \
1961     ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)(W), (U), (B)))
1962
1963 #define _mm512_maskz_cvtt_roundpd_epu64(U, A, B)    \
1964     ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
1965
1966 #define _mm512_cvtt_roundps_epi64(A, B)             \
1967     ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
1968
1969 #define _mm512_mask_cvtt_roundps_epi64(W, U, A, B)  \
1970     ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)(W), (U), (B)))
1971
1972 #define _mm512_maskz_cvtt_roundps_epi64(U, A, B)    \
1973     ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
1974
1975 #define _mm512_cvtt_roundps_epu64(A, B)             \
1976     ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
1977
1978 #define _mm512_mask_cvtt_roundps_epu64(W, U, A, B)  \
1979     ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)(W), (U), (B)))
1980
1981 #define _mm512_maskz_cvtt_roundps_epu64(U, A, B)    \
1982     ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
1983
1984 #define _mm512_cvt_roundpd_epi64(A, B)              \
1985     ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
1986
1987 #define _mm512_mask_cvt_roundpd_epi64(W, U, A, B)   \
1988     ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)(W), (U), (B)))
1989
1990 #define _mm512_maskz_cvt_roundpd_epi64(U, A, B)     \
1991     ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
1992
1993 #define _mm512_cvt_roundpd_epu64(A, B)              \
1994     ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
1995
1996 #define _mm512_mask_cvt_roundpd_epu64(W, U, A, B)   \
1997     ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)(W), (U), (B)))
1998
1999 #define _mm512_maskz_cvt_roundpd_epu64(U, A, B)     \
2000     ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2001
2002 #define _mm512_cvt_roundps_epi64(A, B)              \
2003     ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2004
2005 #define _mm512_mask_cvt_roundps_epi64(W, U, A, B)   \
2006     ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)(W), (U), (B)))
2007
2008 #define _mm512_maskz_cvt_roundps_epi64(U, A, B)     \
2009     ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2010
2011 #define _mm512_cvt_roundps_epu64(A, B)              \
2012     ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2013
2014 #define _mm512_mask_cvt_roundps_epu64(W, U, A, B)   \
2015     ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)(W), (U), (B)))
2016
2017 #define _mm512_maskz_cvt_roundps_epu64(U, A, B)     \
2018     ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2019
2020 #define _mm512_cvt_roundepi64_ps(A, B)              \
2021     ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), -1, (B)))
2022
2023 #define _mm512_mask_cvt_roundepi64_ps(W, U, A, B)   \
2024     ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (W), (U), (B)))
2025
2026 #define _mm512_maskz_cvt_roundepi64_ps(U, A, B)     \
2027     ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), (U), (B)))
2028
2029 #define _mm512_cvt_roundepu64_ps(A, B)              \
2030     ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), -1, (B)))
2031
2032 #define _mm512_mask_cvt_roundepu64_ps(W, U, A, B)   \
2033     ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (W), (U), (B)))
2034
2035 #define _mm512_maskz_cvt_roundepu64_ps(U, A, B)     \
2036     ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), (U), (B)))
2037
2038 #define _mm512_cvt_roundepi64_pd(A, B)              \
2039     ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), -1, (B)))
2040
2041 #define _mm512_mask_cvt_roundepi64_pd(W, U, A, B)   \
2042     ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (W), (U), (B)))
2043
2044 #define _mm512_maskz_cvt_roundepi64_pd(U, A, B)     \
2045     ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), (U), (B)))
2046
2047 #define _mm512_cvt_roundepu64_pd(A, B)              \
2048     ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), -1, (B)))
2049
2050 #define _mm512_mask_cvt_roundepu64_pd(W, U, A, B)   \
2051     ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (W), (U), (B)))
2052
2053 #define _mm512_maskz_cvt_roundepu64_pd(U, A, B)     \
2054     ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), (U), (B)))
2055
2056 #define _mm512_reduce_pd(A, B)                                          \
2057   ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),     \
2058     (int)(B), (__v8df)_mm512_setzero_pd(), (__mmask8)-1))
2059
2060 #define _mm512_mask_reduce_pd(W, U, A, B)                               \
2061   ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),     \
2062     (int)(B), (__v8df)(__m512d)(W), (__mmask8)(U)))
2063
2064 #define _mm512_maskz_reduce_pd(U, A, B)                                 \
2065   ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),     \
2066     (int)(B), (__v8df)_mm512_setzero_pd(), (__mmask8)(U)))
2067
2068 #define _mm512_reduce_ps(A, B)                                          \
2069   ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),      \
2070     (int)(B), (__v16sf)_mm512_setzero_ps(), (__mmask16)-1))
2071
2072 #define _mm512_mask_reduce_ps(W, U, A, B)                               \
2073   ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),      \
2074     (int)(B), (__v16sf)(__m512)(W), (__mmask16)(U)))
2075
2076 #define _mm512_maskz_reduce_ps(U, A, B)                                 \
2077   ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),      \
2078     (int)(B), (__v16sf)_mm512_setzero_ps(), (__mmask16)(U)))
2079
2080 #define _mm512_extractf32x8_ps(X, C)                                    \
2081   ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
2082     (int) (C), (__v8sf)(__m256) _mm256_setzero_ps(), (__mmask8)-1))
2083
2084 #define _mm512_mask_extractf32x8_ps(W, U, X, C)                         \
2085   ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
2086     (int) (C), (__v8sf)(__m256) (W), (__mmask8) (U)))
2087
2088 #define _mm512_maskz_extractf32x8_ps(U, X, C)                           \
2089   ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
2090     (int) (C), (__v8sf)(__m256) _mm256_setzero_ps(), (__mmask8) (U)))
2091
2092 #define _mm512_extractf64x2_pd(X, C)                                    \
2093   ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
2094     (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8)-1))
2095
2096 #define _mm512_mask_extractf64x2_pd(W, U, X, C)                         \
2097   ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
2098     (int) (C), (__v2df)(__m128d) (W), (__mmask8) (U)))
2099
2100 #define _mm512_maskz_extractf64x2_pd(U, X, C)                           \
2101   ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
2102     (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8) (U)))
2103
2104 #define _mm512_extracti32x8_epi32(X, C)                                 \
2105   ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
2106     (int) (C), (__v8si)(__m256i) _mm256_setzero_si256(), (__mmask8)-1))
2107
2108 #define _mm512_mask_extracti32x8_epi32(W, U, X, C)                      \
2109   ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
2110     (int) (C), (__v8si)(__m256i) (W), (__mmask8) (U)))
2111
2112 #define _mm512_maskz_extracti32x8_epi32(U, X, C)                        \
2113   ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
2114     (int) (C), (__v8si)(__m256i) _mm256_setzero_si256(), (__mmask8) (U)))
2115
2116 #define _mm512_extracti64x2_epi64(X, C)                                 \
2117   ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
2118     (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8)-1))
2119
2120 #define _mm512_mask_extracti64x2_epi64(W, U, X, C)                      \
2121   ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
2122     (int) (C), (__v2di)(__m128i) (W), (__mmask8) (U)))
2123
2124 #define _mm512_maskz_extracti64x2_epi64(U, X, C)                        \
2125   ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
2126     (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8) (U)))
2127
2128 #define _mm512_range_pd(A, B, C)                                        \
2129   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),      \
2130     (__v8df)(__m512d)(B), (int)(C),                                     \
2131     (__v8df)_mm512_setzero_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
2132
2133 #define _mm512_mask_range_pd(W, U, A, B, C)                             \
2134   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),      \
2135     (__v8df)(__m512d)(B), (int)(C),                                     \
2136     (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
2137
2138 #define _mm512_maskz_range_pd(U, A, B, C)                               \
2139   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),      \
2140     (__v8df)(__m512d)(B), (int)(C),                                     \
2141     (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
2142
2143 #define _mm512_range_ps(A, B, C)                                        \
2144   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),       \
2145     (__v16sf)(__m512)(B), (int)(C),                                     \
2146     (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
2147
2148 #define _mm512_mask_range_ps(W, U, A, B, C)                             \
2149   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),       \
2150     (__v16sf)(__m512)(B), (int)(C),                                     \
2151     (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
2152
2153 #define _mm512_maskz_range_ps(U, A, B, C)                               \
2154   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),       \
2155     (__v16sf)(__m512)(B), (int)(C),                                     \
2156     (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
2157
2158 #define _mm512_range_round_pd(A, B, C, R)                                       \
2159   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),      \
2160     (__v8df)(__m512d)(B), (int)(C),                                     \
2161     (__v8df)_mm512_setzero_pd(), (__mmask8)-1, (R)))
2162
2163 #define _mm512_mask_range_round_pd(W, U, A, B, C, R)                            \
2164   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),      \
2165     (__v8df)(__m512d)(B), (int)(C),                                     \
2166     (__v8df)(__m512d)(W), (__mmask8)(U), (R)))
2167
2168 #define _mm512_maskz_range_round_pd(U, A, B, C, R)                              \
2169   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),      \
2170     (__v8df)(__m512d)(B), (int)(C),                                     \
2171     (__v8df)_mm512_setzero_pd(), (__mmask8)(U), (R)))
2172
2173 #define _mm512_range_round_ps(A, B, C, R)                                       \
2174   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),       \
2175     (__v16sf)(__m512)(B), (int)(C),                                     \
2176     (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, (R)))
2177
2178 #define _mm512_mask_range_round_ps(W, U, A, B, C, R)                            \
2179   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),       \
2180     (__v16sf)(__m512)(B), (int)(C),                                     \
2181     (__v16sf)(__m512)(W), (__mmask16)(U), (R)))
2182
2183 #define _mm512_maskz_range_round_ps(U, A, B, C, R)                              \
2184   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),       \
2185     (__v16sf)(__m512)(B), (int)(C),                                     \
2186     (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), (R)))
2187
2188 #define _mm512_insertf64x2(X, Y, C)                                     \
2189   ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
2190     (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (X),            \
2191     (__mmask8)-1))
2192
2193 #define _mm512_mask_insertf64x2(W, U, X, Y, C)                          \
2194   ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
2195     (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (W),            \
2196     (__mmask8) (U)))
2197
2198 #define _mm512_maskz_insertf64x2(U, X, Y, C)                            \
2199   ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
2200     (__v2df)(__m128d) (Y), (int) (C),                                   \
2201     (__v8df)(__m512d) _mm512_setzero_pd(), (__mmask8) (U)))
2202
2203 #define _mm512_inserti64x2(X, Y, C)                                     \
2204   ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
2205     (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (X), (__mmask8)-1))
2206
2207 #define _mm512_mask_inserti64x2(W, U, X, Y, C)                          \
2208   ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
2209     (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (W),            \
2210     (__mmask8) (U)))
2211
2212 #define _mm512_maskz_inserti64x2(U, X, Y, C)                            \
2213   ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
2214     (__v2di)(__m128i) (Y), (int) (C),                                   \
2215     (__v8di)(__m512i) _mm512_setzero_si512 (), (__mmask8) (U)))
2216
2217 #define _mm512_insertf32x8(X, Y, C)                                     \
2218   ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
2219     (__v8sf)(__m256) (Y), (int) (C),\
2220     (__v16sf)(__m512)_mm512_setzero_ps(),\
2221     (__mmask16)-1))
2222
2223 #define _mm512_mask_insertf32x8(W, U, X, Y, C)                          \
2224   ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
2225     (__v8sf)(__m256) (Y), (int) (C),\
2226     (__v16sf)(__m512)(W),\
2227     (__mmask16)(U)))
2228
2229 #define _mm512_maskz_insertf32x8(U, X, Y, C)                            \
2230   ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
2231     (__v8sf)(__m256) (Y), (int) (C),\
2232     (__v16sf)(__m512)_mm512_setzero_ps(),\
2233     (__mmask16)(U)))
2234
2235 #define _mm512_inserti32x8(X, Y, C)                                     \
2236   ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
2237     (__v8si)(__m256i) (Y), (int) (C),\
2238     (__v16si)(__m512i)_mm512_setzero_si512 (),\
2239     (__mmask16)-1))
2240
2241 #define _mm512_mask_inserti32x8(W, U, X, Y, C)                          \
2242   ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
2243     (__v8si)(__m256i) (Y), (int) (C),\
2244     (__v16si)(__m512i)(W),\
2245     (__mmask16)(U)))
2246
2247 #define _mm512_maskz_inserti32x8(U, X, Y, C)                            \
2248   ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
2249     (__v8si)(__m256i) (Y), (int) (C),\
2250     (__v16si)(__m512i)_mm512_setzero_si512 (),\
2251     (__mmask16)(U)))
2252
2253 #define _mm_fpclass_ss_mask(X, C)                                               \
2254   ((__mmask8) __builtin_ia32_fpclassss ((__v4sf) (__m128) (X), (int) (C)))  \
2255
2256 #define _mm_fpclass_sd_mask(X, C)                                               \
2257   ((__mmask8) __builtin_ia32_fpclasssd ((__v2df) (__m128d) (X), (int) (C))) \
2258
2259 #define _mm512_mask_fpclass_pd_mask(u, X, C)                            \
2260   ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
2261                                                 (int) (C), (__mmask8)(u)))
2262
2263 #define _mm512_mask_fpclass_ps_mask(u, x, c)                            \
2264   ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
2265                                                  (int) (c),(__mmask8)(u)))
2266
2267 #define _mm512_fpclass_pd_mask(X, C)                                    \
2268   ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
2269                                                 (int) (C), (__mmask8)-1))
2270
2271 #define _mm512_fpclass_ps_mask(x, c)                                    \
2272   ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
2273                                                  (int) (c),(__mmask8)-1))
2274
2275 #define _mm_reduce_sd(A, B, C)                                          \
2276   ((__m128d) __builtin_ia32_reducesd ((__v2df)(__m128d)(A),     \
2277     (__v2df)(__m128d)(B), (int)(C)))                                    \
2278
2279 #define _mm_reduce_ss(A, B, C)                                          \
2280   ((__m128) __builtin_ia32_reducess ((__v4sf)(__m128)(A),               \
2281     (__v4sf)(__m128)(A), (int)(C)))                                     \
2282
2283 #endif
2284
2285 #ifdef __DISABLE_AVX512DQ__
2286 #undef __DISABLE_AVX512DQ__
2287 #pragma GCC pop_options
2288 #endif /* __DISABLE_AVX512DQ__ */
2289
2290 #endif /* _AVX512DQINTRIN_H_INCLUDED */