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