File Coverage

/usr/lib/gcc/x86_64-linux-gnu/13/include/avx512fintrin.h
Criterion Covered Total %
statement 0 14 0.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 0 14 0.0


line stmt bran cond sub pod time code
1             /* Copyright (C) 2013-2023 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             . */
23              
24             #ifndef _IMMINTRIN_H_INCLUDED
25             #error "Never use directly; include instead."
26             #endif
27              
28             #ifndef _AVX512FINTRIN_H_INCLUDED
29             #define _AVX512FINTRIN_H_INCLUDED
30              
31             #ifndef __AVX512F__
32             #pragma GCC push_options
33             #pragma GCC target("avx512f")
34             #define __DISABLE_AVX512F__
35             #endif /* __AVX512F__ */
36              
37             /* Internal data types for implementing the intrinsics. */
38             typedef double __v8df __attribute__ ((__vector_size__ (64)));
39             typedef float __v16sf __attribute__ ((__vector_size__ (64)));
40             typedef long long __v8di __attribute__ ((__vector_size__ (64)));
41             typedef unsigned long long __v8du __attribute__ ((__vector_size__ (64)));
42             typedef int __v16si __attribute__ ((__vector_size__ (64)));
43             typedef unsigned int __v16su __attribute__ ((__vector_size__ (64)));
44             typedef short __v32hi __attribute__ ((__vector_size__ (64)));
45             typedef unsigned short __v32hu __attribute__ ((__vector_size__ (64)));
46             typedef char __v64qi __attribute__ ((__vector_size__ (64)));
47             typedef unsigned char __v64qu __attribute__ ((__vector_size__ (64)));
48              
49             /* The Intel API is flexible enough that we must allow aliasing with other
50             vector types, and their scalar components. */
51             typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__));
52             typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__));
53             typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
54              
55             /* Unaligned version of the same type. */
56             typedef float __m512_u __attribute__ ((__vector_size__ (64), __may_alias__, __aligned__ (1)));
57             typedef long long __m512i_u __attribute__ ((__vector_size__ (64), __may_alias__, __aligned__ (1)));
58             typedef double __m512d_u __attribute__ ((__vector_size__ (64), __may_alias__, __aligned__ (1)));
59              
60             typedef unsigned char __mmask8;
61             typedef unsigned short __mmask16;
62              
63             extern __inline __mmask16
64             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
65             _mm512_int2mask (int __M)
66             {
67             return (__mmask16) __M;
68             }
69              
70             extern __inline int
71             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
72             _mm512_mask2int (__mmask16 __M)
73             {
74             return (int) __M;
75             }
76              
77             extern __inline __m512i
78             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
79             _mm512_set_epi64 (long long __A, long long __B, long long __C,
80             long long __D, long long __E, long long __F,
81             long long __G, long long __H)
82             {
83 0           return __extension__ (__m512i) (__v8di)
84             { __H, __G, __F, __E, __D, __C, __B, __A };
85             }
86              
87             /* Create the vector [A B C D E F G H I J K L M N O P]. */
88             extern __inline __m512i
89             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
90             _mm512_set_epi32 (int __A, int __B, int __C, int __D,
91             int __E, int __F, int __G, int __H,
92             int __I, int __J, int __K, int __L,
93             int __M, int __N, int __O, int __P)
94             {
95             return __extension__ (__m512i)(__v16si)
96             { __P, __O, __N, __M, __L, __K, __J, __I,
97             __H, __G, __F, __E, __D, __C, __B, __A };
98             }
99              
100             extern __inline __m512i
101             __attribute__((__gnu_inline__, __always_inline__, __artificial__))
102             _mm512_set_epi16 (short __q31, short __q30, short __q29, short __q28,
103             short __q27, short __q26, short __q25, short __q24,
104             short __q23, short __q22, short __q21, short __q20,
105             short __q19, short __q18, short __q17, short __q16,
106             short __q15, short __q14, short __q13, short __q12,
107             short __q11, short __q10, short __q09, short __q08,
108             short __q07, short __q06, short __q05, short __q04,
109             short __q03, short __q02, short __q01, short __q00)
110             {
111             return __extension__ (__m512i)(__v32hi){
112             __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
113             __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15,
114             __q16, __q17, __q18, __q19, __q20, __q21, __q22, __q23,
115             __q24, __q25, __q26, __q27, __q28, __q29, __q30, __q31
116             };
117             }
118              
119             extern __inline __m512i
120             __attribute__((__gnu_inline__, __always_inline__, __artificial__))
121             _mm512_set_epi8 (char __q63, char __q62, char __q61, char __q60,
122             char __q59, char __q58, char __q57, char __q56,
123             char __q55, char __q54, char __q53, char __q52,
124             char __q51, char __q50, char __q49, char __q48,
125             char __q47, char __q46, char __q45, char __q44,
126             char __q43, char __q42, char __q41, char __q40,
127             char __q39, char __q38, char __q37, char __q36,
128             char __q35, char __q34, char __q33, char __q32,
129             char __q31, char __q30, char __q29, char __q28,
130             char __q27, char __q26, char __q25, char __q24,
131             char __q23, char __q22, char __q21, char __q20,
132             char __q19, char __q18, char __q17, char __q16,
133             char __q15, char __q14, char __q13, char __q12,
134             char __q11, char __q10, char __q09, char __q08,
135             char __q07, char __q06, char __q05, char __q04,
136             char __q03, char __q02, char __q01, char __q00)
137             {
138             return __extension__ (__m512i)(__v64qi){
139             __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
140             __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15,
141             __q16, __q17, __q18, __q19, __q20, __q21, __q22, __q23,
142             __q24, __q25, __q26, __q27, __q28, __q29, __q30, __q31,
143             __q32, __q33, __q34, __q35, __q36, __q37, __q38, __q39,
144             __q40, __q41, __q42, __q43, __q44, __q45, __q46, __q47,
145             __q48, __q49, __q50, __q51, __q52, __q53, __q54, __q55,
146             __q56, __q57, __q58, __q59, __q60, __q61, __q62, __q63
147             };
148             }
149              
150             extern __inline __m512d
151             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
152             _mm512_set_pd (double __A, double __B, double __C, double __D,
153             double __E, double __F, double __G, double __H)
154             {
155             return __extension__ (__m512d)
156             { __H, __G, __F, __E, __D, __C, __B, __A };
157             }
158              
159             extern __inline __m512
160             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
161             _mm512_set_ps (float __A, float __B, float __C, float __D,
162             float __E, float __F, float __G, float __H,
163             float __I, float __J, float __K, float __L,
164             float __M, float __N, float __O, float __P)
165             {
166             return __extension__ (__m512)
167             { __P, __O, __N, __M, __L, __K, __J, __I,
168             __H, __G, __F, __E, __D, __C, __B, __A };
169             }
170              
171             #define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
172             _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
173              
174             #define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
175             e8,e9,e10,e11,e12,e13,e14,e15) \
176             _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
177              
178             #define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
179             _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
180              
181             #define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
182             _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
183              
184             extern __inline __m512
185             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
186             _mm512_undefined_ps (void)
187             {
188             #pragma GCC diagnostic push
189             #pragma GCC diagnostic ignored "-Winit-self"
190             __m512 __Y = __Y;
191             #pragma GCC diagnostic pop
192             return __Y;
193             }
194              
195             #define _mm512_undefined _mm512_undefined_ps
196              
197             extern __inline __m512d
198             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
199             _mm512_undefined_pd (void)
200             {
201             #pragma GCC diagnostic push
202             #pragma GCC diagnostic ignored "-Winit-self"
203             __m512d __Y = __Y;
204             #pragma GCC diagnostic pop
205             return __Y;
206             }
207              
208             extern __inline __m512i
209             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
210             _mm512_undefined_epi32 (void)
211             {
212             #pragma GCC diagnostic push
213             #pragma GCC diagnostic ignored "-Winit-self"
214 0           __m512i __Y = __Y;
215             #pragma GCC diagnostic pop
216 0           return __Y;
217             }
218              
219             #define _mm512_undefined_si512 _mm512_undefined_epi32
220              
221             extern __inline __m512i
222             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
223             _mm512_set1_epi8 (char __A)
224             {
225 0           return __extension__ (__m512i)(__v64qi)
226 0           { __A, __A, __A, __A, __A, __A, __A, __A,
227             __A, __A, __A, __A, __A, __A, __A, __A,
228             __A, __A, __A, __A, __A, __A, __A, __A,
229             __A, __A, __A, __A, __A, __A, __A, __A,
230             __A, __A, __A, __A, __A, __A, __A, __A,
231             __A, __A, __A, __A, __A, __A, __A, __A,
232             __A, __A, __A, __A, __A, __A, __A, __A,
233             __A, __A, __A, __A, __A, __A, __A, __A };
234             }
235              
236             extern __inline __m512i
237             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
238             _mm512_set1_epi16 (short __A)
239             {
240             return __extension__ (__m512i)(__v32hi)
241             { __A, __A, __A, __A, __A, __A, __A, __A,
242             __A, __A, __A, __A, __A, __A, __A, __A,
243             __A, __A, __A, __A, __A, __A, __A, __A,
244             __A, __A, __A, __A, __A, __A, __A, __A };
245             }
246              
247             extern __inline __m512d
248             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
249             _mm512_set1_pd (double __A)
250             {
251             return __extension__ (__m512d)(__v8df)
252             { __A, __A, __A, __A, __A, __A, __A, __A };
253             }
254              
255             extern __inline __m512
256             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
257             _mm512_set1_ps (float __A)
258             {
259             return __extension__ (__m512)(__v16sf)
260             { __A, __A, __A, __A, __A, __A, __A, __A,
261             __A, __A, __A, __A, __A, __A, __A, __A };
262             }
263              
264             /* Create the vector [A B C D A B C D A B C D A B C D]. */
265             extern __inline __m512i
266             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
267             _mm512_set4_epi32 (int __A, int __B, int __C, int __D)
268             {
269             return __extension__ (__m512i)(__v16si)
270             { __D, __C, __B, __A, __D, __C, __B, __A,
271             __D, __C, __B, __A, __D, __C, __B, __A };
272             }
273              
274             extern __inline __m512i
275             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
276             _mm512_set4_epi64 (long long __A, long long __B, long long __C,
277             long long __D)
278             {
279             return __extension__ (__m512i) (__v8di)
280             { __D, __C, __B, __A, __D, __C, __B, __A };
281             }
282              
283             extern __inline __m512d
284             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
285             _mm512_set4_pd (double __A, double __B, double __C, double __D)
286             {
287             return __extension__ (__m512d)
288             { __D, __C, __B, __A, __D, __C, __B, __A };
289             }
290              
291             extern __inline __m512
292             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
293             _mm512_set4_ps (float __A, float __B, float __C, float __D)
294             {
295             return __extension__ (__m512)
296             { __D, __C, __B, __A, __D, __C, __B, __A,
297             __D, __C, __B, __A, __D, __C, __B, __A };
298             }
299              
300             #define _mm512_setr4_epi64(e0,e1,e2,e3) \
301             _mm512_set4_epi64(e3,e2,e1,e0)
302              
303             #define _mm512_setr4_epi32(e0,e1,e2,e3) \
304             _mm512_set4_epi32(e3,e2,e1,e0)
305              
306             #define _mm512_setr4_pd(e0,e1,e2,e3) \
307             _mm512_set4_pd(e3,e2,e1,e0)
308              
309             #define _mm512_setr4_ps(e0,e1,e2,e3) \
310             _mm512_set4_ps(e3,e2,e1,e0)
311              
312             extern __inline __m512
313             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
314             _mm512_setzero_ps (void)
315             {
316             return __extension__ (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
317             0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
318             }
319              
320             extern __inline __m512
321             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
322             _mm512_setzero (void)
323             {
324             return _mm512_setzero_ps ();
325             }
326              
327             extern __inline __m512d
328             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
329             _mm512_setzero_pd (void)
330             {
331             return __extension__ (__m512d) { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
332             }
333              
334             extern __inline __m512i
335             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
336             _mm512_setzero_epi32 (void)
337             {
338             return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
339             }
340              
341             extern __inline __m512i
342             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
343             _mm512_setzero_si512 (void)
344             {
345 0           return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
346             }
347              
348             extern __inline __m512d
349             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
350             _mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
351             {
352             return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
353             (__v8df) __W,
354             (__mmask8) __U);
355             }
356              
357             extern __inline __m512d
358             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
359             _mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
360             {
361             return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
362             (__v8df)
363             _mm512_setzero_pd (),
364             (__mmask8) __U);
365             }
366              
367             extern __inline __m512
368             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
369             _mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
370             {
371             return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
372             (__v16sf) __W,
373             (__mmask16) __U);
374             }
375              
376             extern __inline __m512
377             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
378             _mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
379             {
380             return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
381             (__v16sf)
382             _mm512_setzero_ps (),
383             (__mmask16) __U);
384             }
385              
386             extern __inline __m512d
387             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
388             _mm512_load_pd (void const *__P)
389             {
390             return *(__m512d *) __P;
391             }
392              
393             extern __inline __m512d
394             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
395             _mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
396             {
397             return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
398             (__v8df) __W,
399             (__mmask8) __U);
400             }
401              
402             extern __inline __m512d
403             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
404             _mm512_maskz_load_pd (__mmask8 __U, void const *__P)
405             {
406             return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
407             (__v8df)
408             _mm512_setzero_pd (),
409             (__mmask8) __U);
410             }
411              
412             extern __inline void
413             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
414             _mm512_store_pd (void *__P, __m512d __A)
415             {
416             *(__m512d *) __P = __A;
417             }
418              
419             extern __inline void
420             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
421             _mm512_mask_store_pd (void *__P, __mmask8 __U, __m512d __A)
422             {
423             __builtin_ia32_storeapd512_mask ((__v8df *) __P, (__v8df) __A,
424             (__mmask8) __U);
425             }
426              
427             extern __inline __m512
428             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
429             _mm512_load_ps (void const *__P)
430             {
431             return *(__m512 *) __P;
432             }
433              
434             extern __inline __m512
435             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
436             _mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
437             {
438             return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
439             (__v16sf) __W,
440             (__mmask16) __U);
441             }
442              
443             extern __inline __m512
444             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
445             _mm512_maskz_load_ps (__mmask16 __U, void const *__P)
446             {
447             return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
448             (__v16sf)
449             _mm512_setzero_ps (),
450             (__mmask16) __U);
451             }
452              
453             extern __inline void
454             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
455             _mm512_store_ps (void *__P, __m512 __A)
456             {
457             *(__m512 *) __P = __A;
458             }
459              
460             extern __inline void
461             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
462             _mm512_mask_store_ps (void *__P, __mmask16 __U, __m512 __A)
463             {
464             __builtin_ia32_storeaps512_mask ((__v16sf *) __P, (__v16sf) __A,
465             (__mmask16) __U);
466             }
467              
468             extern __inline __m512i
469             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
470             _mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
471             {
472             return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
473             (__v8di) __W,
474             (__mmask8) __U);
475             }
476              
477             extern __inline __m512i
478             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
479             _mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
480             {
481             return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
482             (__v8di)
483             _mm512_setzero_si512 (),
484             (__mmask8) __U);
485             }
486              
487             extern __inline __m512i
488             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
489             _mm512_load_epi64 (void const *__P)
490             {
491             return *(__m512i *) __P;
492             }
493              
494             extern __inline __m512i
495             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
496             _mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
497             {
498             return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
499             (__v8di) __W,
500             (__mmask8) __U);
501             }
502              
503             extern __inline __m512i
504             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
505             _mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
506             {
507             return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
508             (__v8di)
509             _mm512_setzero_si512 (),
510             (__mmask8) __U);
511             }
512              
513             extern __inline void
514             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
515             _mm512_store_epi64 (void *__P, __m512i __A)
516             {
517             *(__m512i *) __P = __A;
518             }
519              
520             extern __inline void
521             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
522             _mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
523             {
524             __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
525             (__mmask8) __U);
526             }
527              
528             extern __inline __m512i
529             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
530             _mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
531             {
532             return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
533             (__v16si) __W,
534             (__mmask16) __U);
535             }
536              
537             extern __inline __m512i
538             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
539             _mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
540             {
541             return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
542             (__v16si)
543             _mm512_setzero_si512 (),
544             (__mmask16) __U);
545             }
546              
547             extern __inline __m512i
548             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
549             _mm512_load_si512 (void const *__P)
550             {
551 0           return *(__m512i *) __P;
552             }
553              
554             extern __inline __m512i
555             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
556             _mm512_load_epi32 (void const *__P)
557             {
558             return *(__m512i *) __P;
559             }
560              
561             extern __inline __m512i
562             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
563             _mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
564             {
565             return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
566             (__v16si) __W,
567             (__mmask16) __U);
568             }
569              
570             extern __inline __m512i
571             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
572             _mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
573             {
574             return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
575             (__v16si)
576             _mm512_setzero_si512 (),
577             (__mmask16) __U);
578             }
579              
580             extern __inline void
581             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
582             _mm512_store_si512 (void *__P, __m512i __A)
583             {
584             *(__m512i *) __P = __A;
585             }
586              
587             extern __inline void
588             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
589             _mm512_store_epi32 (void *__P, __m512i __A)
590             {
591             *(__m512i *) __P = __A;
592             }
593              
594             extern __inline void
595             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
596             _mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
597             {
598             __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
599             (__mmask16) __U);
600             }
601              
602             extern __inline __m512i
603             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
604             _mm512_mullo_epi32 (__m512i __A, __m512i __B)
605             {
606 0           return (__m512i) ((__v16su) __A * (__v16su) __B);
607             }
608              
609             extern __inline __m512i
610             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
611             _mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
612             {
613             return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
614             (__v16si) __B,
615             (__v16si)
616             _mm512_setzero_si512 (),
617             __M);
618             }
619              
620             extern __inline __m512i
621             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
622             _mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
623             {
624             return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
625             (__v16si) __B,
626             (__v16si) __W, __M);
627             }
628              
629             extern __inline __m512i
630             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
631             _mm512_mullox_epi64 (__m512i __A, __m512i __B)
632             {
633             return (__m512i) ((__v8du) __A * (__v8du) __B);
634             }
635              
636             extern __inline __m512i
637             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
638             _mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
639             {
640             return _mm512_mask_mov_epi64 (__W, __M, _mm512_mullox_epi64 (__A, __B));
641             }
642              
643             extern __inline __m512i
644             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
645             _mm512_sllv_epi32 (__m512i __X, __m512i __Y)
646             {
647             return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
648             (__v16si) __Y,
649             (__v16si)
650             _mm512_undefined_epi32 (),
651             (__mmask16) -1);
652             }
653              
654             extern __inline __m512i
655             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
656             _mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
657             {
658             return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
659             (__v16si) __Y,
660             (__v16si) __W,
661             (__mmask16) __U);
662             }
663              
664             extern __inline __m512i
665             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
666             _mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
667             {
668             return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
669             (__v16si) __Y,
670             (__v16si)
671             _mm512_setzero_si512 (),
672             (__mmask16) __U);
673             }
674              
675             extern __inline __m512i
676             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
677             _mm512_srav_epi32 (__m512i __X, __m512i __Y)
678             {
679             return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
680             (__v16si) __Y,
681             (__v16si)
682             _mm512_undefined_epi32 (),
683             (__mmask16) -1);
684             }
685              
686             extern __inline __m512i
687             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
688             _mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
689             {
690             return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
691             (__v16si) __Y,
692             (__v16si) __W,
693             (__mmask16) __U);
694             }
695              
696             extern __inline __m512i
697             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
698             _mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
699             {
700             return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
701             (__v16si) __Y,
702             (__v16si)
703             _mm512_setzero_si512 (),
704             (__mmask16) __U);
705             }
706              
707             extern __inline __m512i
708             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
709             _mm512_srlv_epi32 (__m512i __X, __m512i __Y)
710             {
711             return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
712             (__v16si) __Y,
713             (__v16si)
714             _mm512_undefined_epi32 (),
715             (__mmask16) -1);
716             }
717              
718             extern __inline __m512i
719             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
720             _mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
721             {
722             return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
723             (__v16si) __Y,
724             (__v16si) __W,
725             (__mmask16) __U);
726             }
727              
728             extern __inline __m512i
729             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
730             _mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
731             {
732             return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
733             (__v16si) __Y,
734             (__v16si)
735             _mm512_setzero_si512 (),
736             (__mmask16) __U);
737             }
738              
739             extern __inline __m512i
740             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
741             _mm512_add_epi64 (__m512i __A, __m512i __B)
742             {
743             return (__m512i) ((__v8du) __A + (__v8du) __B);
744             }
745              
746             extern __inline __m512i
747             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
748             _mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
749             {
750             return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
751             (__v8di) __B,
752             (__v8di) __W,
753             (__mmask8) __U);
754             }
755              
756             extern __inline __m512i
757             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
758             _mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
759             {
760             return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
761             (__v8di) __B,
762             (__v8di)
763             _mm512_setzero_si512 (),
764             (__mmask8) __U);
765             }
766              
767             extern __inline __m512i
768             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
769             _mm512_sub_epi64 (__m512i __A, __m512i __B)
770             {
771             return (__m512i) ((__v8du) __A - (__v8du) __B);
772             }
773              
774             extern __inline __m512i
775             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
776             _mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
777             {
778             return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
779             (__v8di) __B,
780             (__v8di) __W,
781             (__mmask8) __U);
782             }
783              
784             extern __inline __m512i
785             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
786             _mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
787             {
788             return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
789             (__v8di) __B,
790             (__v8di)
791             _mm512_setzero_si512 (),
792             (__mmask8) __U);
793             }
794              
795             extern __inline __m512i
796             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
797             _mm512_sllv_epi64 (__m512i __X, __m512i __Y)
798             {
799             return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
800             (__v8di) __Y,
801             (__v8di)
802             _mm512_undefined_pd (),
803             (__mmask8) -1);
804             }
805              
806             extern __inline __m512i
807             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
808             _mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
809             {
810             return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
811             (__v8di) __Y,
812             (__v8di) __W,
813             (__mmask8) __U);
814             }
815              
816             extern __inline __m512i
817             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
818             _mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
819             {
820             return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
821             (__v8di) __Y,
822             (__v8di)
823             _mm512_setzero_si512 (),
824             (__mmask8) __U);
825             }
826              
827             extern __inline __m512i
828             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
829             _mm512_srav_epi64 (__m512i __X, __m512i __Y)
830             {
831             return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
832             (__v8di) __Y,
833             (__v8di)
834             _mm512_undefined_epi32 (),
835             (__mmask8) -1);
836             }
837              
838             extern __inline __m512i
839             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
840             _mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
841             {
842             return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
843             (__v8di) __Y,
844             (__v8di) __W,
845             (__mmask8) __U);
846             }
847              
848             extern __inline __m512i
849             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
850             _mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
851             {
852             return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
853             (__v8di) __Y,
854             (__v8di)
855             _mm512_setzero_si512 (),
856             (__mmask8) __U);
857             }
858              
859             extern __inline __m512i
860             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
861             _mm512_srlv_epi64 (__m512i __X, __m512i __Y)
862             {
863             return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
864             (__v8di) __Y,
865             (__v8di)
866             _mm512_undefined_epi32 (),
867             (__mmask8) -1);
868             }
869              
870             extern __inline __m512i
871             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
872             _mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
873             {
874             return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
875             (__v8di) __Y,
876             (__v8di) __W,
877             (__mmask8) __U);
878             }
879              
880             extern __inline __m512i
881             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
882             _mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
883             {
884             return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
885             (__v8di) __Y,
886             (__v8di)
887             _mm512_setzero_si512 (),
888             (__mmask8) __U);
889             }
890              
891             extern __inline __m512i
892             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
893             _mm512_add_epi32 (__m512i __A, __m512i __B)
894             {
895 0           return (__m512i) ((__v16su) __A + (__v16su) __B);
896             }
897              
898             extern __inline __m512i
899             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
900             _mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
901             {
902             return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
903             (__v16si) __B,
904             (__v16si) __W,
905             (__mmask16) __U);
906             }
907              
908             extern __inline __m512i
909             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
910             _mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
911             {
912             return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
913             (__v16si) __B,
914             (__v16si)
915             _mm512_setzero_si512 (),
916             (__mmask16) __U);
917             }
918              
919             extern __inline __m512i
920             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
921             _mm512_mul_epi32 (__m512i __X, __m512i __Y)
922             {
923             return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
924             (__v16si) __Y,
925             (__v8di)
926             _mm512_undefined_epi32 (),
927             (__mmask8) -1);
928             }
929              
930             extern __inline __m512i
931             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
932             _mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
933             {
934             return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
935             (__v16si) __Y,
936             (__v8di) __W, __M);
937             }
938              
939             extern __inline __m512i
940             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
941             _mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
942             {
943             return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
944             (__v16si) __Y,
945             (__v8di)
946             _mm512_setzero_si512 (),
947             __M);
948             }
949              
950             extern __inline __m512i
951             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
952             _mm512_sub_epi32 (__m512i __A, __m512i __B)
953             {
954             return (__m512i) ((__v16su) __A - (__v16su) __B);
955             }
956              
957             extern __inline __m512i
958             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
959             _mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
960             {
961             return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
962             (__v16si) __B,
963             (__v16si) __W,
964             (__mmask16) __U);
965             }
966              
967             extern __inline __m512i
968             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
969             _mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
970             {
971             return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
972             (__v16si) __B,
973             (__v16si)
974             _mm512_setzero_si512 (),
975             (__mmask16) __U);
976             }
977              
978             extern __inline __m512i
979             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
980             _mm512_mul_epu32 (__m512i __X, __m512i __Y)
981             {
982             return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
983             (__v16si) __Y,
984             (__v8di)
985             _mm512_undefined_epi32 (),
986             (__mmask8) -1);
987             }
988              
989             extern __inline __m512i
990             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
991             _mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
992             {
993             return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
994             (__v16si) __Y,
995             (__v8di) __W, __M);
996             }
997              
998             extern __inline __m512i
999             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1000             _mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1001             {
1002             return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1003             (__v16si) __Y,
1004             (__v8di)
1005             _mm512_setzero_si512 (),
1006             __M);
1007             }
1008              
1009             #ifdef __OPTIMIZE__
1010             extern __inline __m512i
1011             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1012             _mm512_slli_epi64 (__m512i __A, unsigned int __B)
1013             {
1014             return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
1015             (__v8di)
1016             _mm512_undefined_epi32 (),
1017             (__mmask8) -1);
1018             }
1019              
1020             extern __inline __m512i
1021             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1022             _mm512_mask_slli_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
1023             unsigned int __B)
1024             {
1025             return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
1026             (__v8di) __W,
1027             (__mmask8) __U);
1028             }
1029              
1030             extern __inline __m512i
1031             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1032             _mm512_maskz_slli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
1033             {
1034             return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
1035             (__v8di)
1036             _mm512_setzero_si512 (),
1037             (__mmask8) __U);
1038             }
1039             #else
1040             #define _mm512_slli_epi64(X, C) \
1041             ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1042             (__v8di)(__m512i)_mm512_undefined_epi32 (),\
1043             (__mmask8)-1))
1044              
1045             #define _mm512_mask_slli_epi64(W, U, X, C) \
1046             ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1047             (__v8di)(__m512i)(W),\
1048             (__mmask8)(U)))
1049              
1050             #define _mm512_maskz_slli_epi64(U, X, C) \
1051             ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1052             (__v8di)(__m512i)_mm512_setzero_si512 (),\
1053             (__mmask8)(U)))
1054             #endif
1055              
1056             extern __inline __m512i
1057             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1058             _mm512_sll_epi64 (__m512i __A, __m128i __B)
1059             {
1060             return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
1061             (__v2di) __B,
1062             (__v8di)
1063             _mm512_undefined_epi32 (),
1064             (__mmask8) -1);
1065             }
1066              
1067             extern __inline __m512i
1068             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1069             _mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
1070             {
1071             return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
1072             (__v2di) __B,
1073             (__v8di) __W,
1074             (__mmask8) __U);
1075             }
1076              
1077             extern __inline __m512i
1078             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1079             _mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
1080             {
1081             return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
1082             (__v2di) __B,
1083             (__v8di)
1084             _mm512_setzero_si512 (),
1085             (__mmask8) __U);
1086             }
1087              
1088             #ifdef __OPTIMIZE__
1089             extern __inline __m512i
1090             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1091             _mm512_srli_epi64 (__m512i __A, unsigned int __B)
1092             {
1093             return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
1094             (__v8di)
1095             _mm512_undefined_epi32 (),
1096             (__mmask8) -1);
1097             }
1098              
1099             extern __inline __m512i
1100             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1101             _mm512_mask_srli_epi64 (__m512i __W, __mmask8 __U,
1102             __m512i __A, unsigned int __B)
1103             {
1104             return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
1105             (__v8di) __W,
1106             (__mmask8) __U);
1107             }
1108              
1109             extern __inline __m512i
1110             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1111             _mm512_maskz_srli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
1112             {
1113             return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
1114             (__v8di)
1115             _mm512_setzero_si512 (),
1116             (__mmask8) __U);
1117             }
1118             #else
1119             #define _mm512_srli_epi64(X, C) \
1120             ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1121             (__v8di)(__m512i)_mm512_undefined_epi32 (),\
1122             (__mmask8)-1))
1123              
1124             #define _mm512_mask_srli_epi64(W, U, X, C) \
1125             ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1126             (__v8di)(__m512i)(W),\
1127             (__mmask8)(U)))
1128              
1129             #define _mm512_maskz_srli_epi64(U, X, C) \
1130             ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1131             (__v8di)(__m512i)_mm512_setzero_si512 (),\
1132             (__mmask8)(U)))
1133             #endif
1134              
1135             extern __inline __m512i
1136             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1137             _mm512_srl_epi64 (__m512i __A, __m128i __B)
1138             {
1139             return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
1140             (__v2di) __B,
1141             (__v8di)
1142             _mm512_undefined_epi32 (),
1143             (__mmask8) -1);
1144             }
1145              
1146             extern __inline __m512i
1147             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1148             _mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
1149             {
1150             return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
1151             (__v2di) __B,
1152             (__v8di) __W,
1153             (__mmask8) __U);
1154             }
1155              
1156             extern __inline __m512i
1157             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1158             _mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
1159             {
1160             return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
1161             (__v2di) __B,
1162             (__v8di)
1163             _mm512_setzero_si512 (),
1164             (__mmask8) __U);
1165             }
1166              
1167             #ifdef __OPTIMIZE__
1168             extern __inline __m512i
1169             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1170             _mm512_srai_epi64 (__m512i __A, unsigned int __B)
1171             {
1172             return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
1173             (__v8di)
1174             _mm512_undefined_epi32 (),
1175             (__mmask8) -1);
1176             }
1177              
1178             extern __inline __m512i
1179             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1180             _mm512_mask_srai_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
1181             unsigned int __B)
1182             {
1183             return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
1184             (__v8di) __W,
1185             (__mmask8) __U);
1186             }
1187              
1188             extern __inline __m512i
1189             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1190             _mm512_maskz_srai_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
1191             {
1192             return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
1193             (__v8di)
1194             _mm512_setzero_si512 (),
1195             (__mmask8) __U);
1196             }
1197             #else
1198             #define _mm512_srai_epi64(X, C) \
1199             ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1200             (__v8di)(__m512i)_mm512_undefined_epi32 (),\
1201             (__mmask8)-1))
1202              
1203             #define _mm512_mask_srai_epi64(W, U, X, C) \
1204             ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1205             (__v8di)(__m512i)(W),\
1206             (__mmask8)(U)))
1207              
1208             #define _mm512_maskz_srai_epi64(U, X, C) \
1209             ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1210             (__v8di)(__m512i)_mm512_setzero_si512 (),\
1211             (__mmask8)(U)))
1212             #endif
1213              
1214             extern __inline __m512i
1215             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1216             _mm512_sra_epi64 (__m512i __A, __m128i __B)
1217             {
1218             return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
1219             (__v2di) __B,
1220             (__v8di)
1221             _mm512_undefined_epi32 (),
1222             (__mmask8) -1);
1223             }
1224              
1225             extern __inline __m512i
1226             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1227             _mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
1228             {
1229             return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
1230             (__v2di) __B,
1231             (__v8di) __W,
1232             (__mmask8) __U);
1233             }
1234              
1235             extern __inline __m512i
1236             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1237             _mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
1238             {
1239             return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
1240             (__v2di) __B,
1241             (__v8di)
1242             _mm512_setzero_si512 (),
1243             (__mmask8) __U);
1244             }
1245              
1246             #ifdef __OPTIMIZE__
1247             extern __inline __m512i
1248             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1249             _mm512_slli_epi32 (__m512i __A, unsigned int __B)
1250             {
1251             return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
1252             (__v16si)
1253             _mm512_undefined_epi32 (),
1254             (__mmask16) -1);
1255             }
1256              
1257             extern __inline __m512i
1258             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1259             _mm512_mask_slli_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
1260             unsigned int __B)
1261             {
1262             return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
1263             (__v16si) __W,
1264             (__mmask16) __U);
1265             }
1266              
1267             extern __inline __m512i
1268             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1269             _mm512_maskz_slli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
1270             {
1271             return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
1272             (__v16si)
1273             _mm512_setzero_si512 (),
1274             (__mmask16) __U);
1275             }
1276             #else
1277             #define _mm512_slli_epi32(X, C) \
1278             ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1279             (__v16si)(__m512i)_mm512_undefined_epi32 (),\
1280             (__mmask16)-1))
1281              
1282             #define _mm512_mask_slli_epi32(W, U, X, C) \
1283             ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1284             (__v16si)(__m512i)(W),\
1285             (__mmask16)(U)))
1286              
1287             #define _mm512_maskz_slli_epi32(U, X, C) \
1288             ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1289             (__v16si)(__m512i)_mm512_setzero_si512 (),\
1290             (__mmask16)(U)))
1291             #endif
1292              
1293             extern __inline __m512i
1294             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1295             _mm512_sll_epi32 (__m512i __A, __m128i __B)
1296             {
1297             return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
1298             (__v4si) __B,
1299             (__v16si)
1300             _mm512_undefined_epi32 (),
1301             (__mmask16) -1);
1302             }
1303              
1304             extern __inline __m512i
1305             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1306             _mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
1307             {
1308             return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
1309             (__v4si) __B,
1310             (__v16si) __W,
1311             (__mmask16) __U);
1312             }
1313              
1314             extern __inline __m512i
1315             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1316             _mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
1317             {
1318             return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
1319             (__v4si) __B,
1320             (__v16si)
1321             _mm512_setzero_si512 (),
1322             (__mmask16) __U);
1323             }
1324              
1325             #ifdef __OPTIMIZE__
1326             extern __inline __m512i
1327             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1328             _mm512_srli_epi32 (__m512i __A, unsigned int __B)
1329             {
1330             return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
1331             (__v16si)
1332             _mm512_undefined_epi32 (),
1333             (__mmask16) -1);
1334             }
1335              
1336             extern __inline __m512i
1337             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1338             _mm512_mask_srli_epi32 (__m512i __W, __mmask16 __U,
1339             __m512i __A, unsigned int __B)
1340             {
1341             return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
1342             (__v16si) __W,
1343             (__mmask16) __U);
1344             }
1345              
1346             extern __inline __m512i
1347             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1348             _mm512_maskz_srli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
1349             {
1350             return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
1351             (__v16si)
1352             _mm512_setzero_si512 (),
1353             (__mmask16) __U);
1354             }
1355             #else
1356             #define _mm512_srli_epi32(X, C) \
1357             ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1358             (__v16si)(__m512i)_mm512_undefined_epi32 (),\
1359             (__mmask16)-1))
1360              
1361             #define _mm512_mask_srli_epi32(W, U, X, C) \
1362             ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1363             (__v16si)(__m512i)(W),\
1364             (__mmask16)(U)))
1365              
1366             #define _mm512_maskz_srli_epi32(U, X, C) \
1367             ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1368             (__v16si)(__m512i)_mm512_setzero_si512 (),\
1369             (__mmask16)(U)))
1370             #endif
1371              
1372             extern __inline __m512i
1373             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1374             _mm512_srl_epi32 (__m512i __A, __m128i __B)
1375             {
1376             return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
1377             (__v4si) __B,
1378             (__v16si)
1379             _mm512_undefined_epi32 (),
1380             (__mmask16) -1);
1381             }
1382              
1383             extern __inline __m512i
1384             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1385             _mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
1386             {
1387             return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
1388             (__v4si) __B,
1389             (__v16si) __W,
1390             (__mmask16) __U);
1391             }
1392              
1393             extern __inline __m512i
1394             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1395             _mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
1396             {
1397             return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
1398             (__v4si) __B,
1399             (__v16si)
1400             _mm512_setzero_si512 (),
1401             (__mmask16) __U);
1402             }
1403              
1404             #ifdef __OPTIMIZE__
1405             extern __inline __m512i
1406             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1407             _mm512_srai_epi32 (__m512i __A, unsigned int __B)
1408             {
1409             return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
1410             (__v16si)
1411             _mm512_undefined_epi32 (),
1412             (__mmask16) -1);
1413             }
1414              
1415             extern __inline __m512i
1416             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1417             _mm512_mask_srai_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
1418             unsigned int __B)
1419             {
1420             return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
1421             (__v16si) __W,
1422             (__mmask16) __U);
1423             }
1424              
1425             extern __inline __m512i
1426             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1427             _mm512_maskz_srai_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
1428             {
1429             return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
1430             (__v16si)
1431             _mm512_setzero_si512 (),
1432             (__mmask16) __U);
1433             }
1434             #else
1435             #define _mm512_srai_epi32(X, C) \
1436             ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1437             (__v16si)(__m512i)_mm512_undefined_epi32 (),\
1438             (__mmask16)-1))
1439              
1440             #define _mm512_mask_srai_epi32(W, U, X, C) \
1441             ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1442             (__v16si)(__m512i)(W),\
1443             (__mmask16)(U)))
1444              
1445             #define _mm512_maskz_srai_epi32(U, X, C) \
1446             ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1447             (__v16si)(__m512i)_mm512_setzero_si512 (),\
1448             (__mmask16)(U)))
1449             #endif
1450              
1451             extern __inline __m512i
1452             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1453             _mm512_sra_epi32 (__m512i __A, __m128i __B)
1454             {
1455             return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
1456             (__v4si) __B,
1457             (__v16si)
1458             _mm512_undefined_epi32 (),
1459             (__mmask16) -1);
1460             }
1461              
1462             extern __inline __m512i
1463             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1464             _mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
1465             {
1466             return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
1467             (__v4si) __B,
1468             (__v16si) __W,
1469             (__mmask16) __U);
1470             }
1471              
1472             extern __inline __m512i
1473             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1474             _mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
1475             {
1476             return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
1477             (__v4si) __B,
1478             (__v16si)
1479             _mm512_setzero_si512 (),
1480             (__mmask16) __U);
1481             }
1482              
1483             #ifdef __OPTIMIZE__
1484             extern __inline __m128d
1485             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1486             _mm_add_round_sd (__m128d __A, __m128d __B, const int __R)
1487             {
1488             return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A,
1489             (__v2df) __B,
1490             __R);
1491             }
1492              
1493             extern __inline __m128d
1494             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1495             _mm_mask_add_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
1496             __m128d __B, const int __R)
1497             {
1498             return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
1499             (__v2df) __B,
1500             (__v2df) __W,
1501             (__mmask8) __U, __R);
1502             }
1503              
1504             extern __inline __m128d
1505             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1506             _mm_maskz_add_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
1507             const int __R)
1508             {
1509             return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
1510             (__v2df) __B,
1511             (__v2df)
1512             _mm_setzero_pd (),
1513             (__mmask8) __U, __R);
1514             }
1515              
1516             extern __inline __m128
1517             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1518             _mm_add_round_ss (__m128 __A, __m128 __B, const int __R)
1519             {
1520             return (__m128) __builtin_ia32_addss_round ((__v4sf) __A,
1521             (__v4sf) __B,
1522             __R);
1523             }
1524              
1525             extern __inline __m128
1526             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1527             _mm_mask_add_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
1528             __m128 __B, const int __R)
1529             {
1530             return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
1531             (__v4sf) __B,
1532             (__v4sf) __W,
1533             (__mmask8) __U, __R);
1534             }
1535              
1536             extern __inline __m128
1537             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1538             _mm_maskz_add_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
1539             const int __R)
1540             {
1541             return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
1542             (__v4sf) __B,
1543             (__v4sf)
1544             _mm_setzero_ps (),
1545             (__mmask8) __U, __R);
1546             }
1547              
1548             extern __inline __m128d
1549             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1550             _mm_sub_round_sd (__m128d __A, __m128d __B, const int __R)
1551             {
1552             return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A,
1553             (__v2df) __B,
1554             __R);
1555             }
1556              
1557             extern __inline __m128d
1558             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1559             _mm_mask_sub_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
1560             __m128d __B, const int __R)
1561             {
1562             return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
1563             (__v2df) __B,
1564             (__v2df) __W,
1565             (__mmask8) __U, __R);
1566             }
1567              
1568             extern __inline __m128d
1569             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1570             _mm_maskz_sub_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
1571             const int __R)
1572             {
1573             return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
1574             (__v2df) __B,
1575             (__v2df)
1576             _mm_setzero_pd (),
1577             (__mmask8) __U, __R);
1578             }
1579              
1580             extern __inline __m128
1581             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1582             _mm_sub_round_ss (__m128 __A, __m128 __B, const int __R)
1583             {
1584             return (__m128) __builtin_ia32_subss_round ((__v4sf) __A,
1585             (__v4sf) __B,
1586             __R);
1587             }
1588              
1589             extern __inline __m128
1590             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1591             _mm_mask_sub_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
1592             __m128 __B, const int __R)
1593             {
1594             return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
1595             (__v4sf) __B,
1596             (__v4sf) __W,
1597             (__mmask8) __U, __R);
1598             }
1599              
1600             extern __inline __m128
1601             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1602             _mm_maskz_sub_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
1603             const int __R)
1604             {
1605             return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
1606             (__v4sf) __B,
1607             (__v4sf)
1608             _mm_setzero_ps (),
1609             (__mmask8) __U, __R);
1610             }
1611              
1612             #else
1613             #define _mm_add_round_sd(A, B, C) \
1614             (__m128d)__builtin_ia32_addsd_round(A, B, C)
1615              
1616             #define _mm_mask_add_round_sd(W, U, A, B, C) \
1617             (__m128d)__builtin_ia32_addsd_mask_round(A, B, W, U, C)
1618              
1619             #define _mm_maskz_add_round_sd(U, A, B, C) \
1620             (__m128d)__builtin_ia32_addsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
1621              
1622             #define _mm_add_round_ss(A, B, C) \
1623             (__m128)__builtin_ia32_addss_round(A, B, C)
1624              
1625             #define _mm_mask_add_round_ss(W, U, A, B, C) \
1626             (__m128)__builtin_ia32_addss_mask_round(A, B, W, U, C)
1627              
1628             #define _mm_maskz_add_round_ss(U, A, B, C) \
1629             (__m128)__builtin_ia32_addss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
1630              
1631             #define _mm_sub_round_sd(A, B, C) \
1632             (__m128d)__builtin_ia32_subsd_round(A, B, C)
1633              
1634             #define _mm_mask_sub_round_sd(W, U, A, B, C) \
1635             (__m128d)__builtin_ia32_subsd_mask_round(A, B, W, U, C)
1636              
1637             #define _mm_maskz_sub_round_sd(U, A, B, C) \
1638             (__m128d)__builtin_ia32_subsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
1639              
1640             #define _mm_sub_round_ss(A, B, C) \
1641             (__m128)__builtin_ia32_subss_round(A, B, C)
1642              
1643             #define _mm_mask_sub_round_ss(W, U, A, B, C) \
1644             (__m128)__builtin_ia32_subss_mask_round(A, B, W, U, C)
1645              
1646             #define _mm_maskz_sub_round_ss(U, A, B, C) \
1647             (__m128)__builtin_ia32_subss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
1648              
1649             #endif
1650              
1651             /* Constant helper to represent the ternary logic operations among
1652             vector A, B and C. */
1653             typedef enum
1654             {
1655             _MM_TERNLOG_A = 0xF0,
1656             _MM_TERNLOG_B = 0xCC,
1657             _MM_TERNLOG_C = 0xAA
1658             } _MM_TERNLOG_ENUM;
1659              
1660             #ifdef __OPTIMIZE__
1661             extern __inline __m512i
1662             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1663             _mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C,
1664             const int __imm)
1665             {
1666             return (__m512i)
1667             __builtin_ia32_pternlogq512_mask ((__v8di) __A,
1668             (__v8di) __B,
1669             (__v8di) __C,
1670             (unsigned char) __imm,
1671             (__mmask8) -1);
1672             }
1673              
1674             extern __inline __m512i
1675             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1676             _mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B,
1677             __m512i __C, const int __imm)
1678             {
1679             return (__m512i)
1680             __builtin_ia32_pternlogq512_mask ((__v8di) __A,
1681             (__v8di) __B,
1682             (__v8di) __C,
1683             (unsigned char) __imm,
1684             (__mmask8) __U);
1685             }
1686              
1687             extern __inline __m512i
1688             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1689             _mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
1690             __m512i __C, const int __imm)
1691             {
1692             return (__m512i)
1693             __builtin_ia32_pternlogq512_maskz ((__v8di) __A,
1694             (__v8di) __B,
1695             (__v8di) __C,
1696             (unsigned char) __imm,
1697             (__mmask8) __U);
1698             }
1699              
1700             extern __inline __m512i
1701             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1702             _mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C,
1703             const int __imm)
1704             {
1705             return (__m512i)
1706             __builtin_ia32_pternlogd512_mask ((__v16si) __A,
1707             (__v16si) __B,
1708             (__v16si) __C,
1709             (unsigned char) __imm,
1710             (__mmask16) -1);
1711             }
1712              
1713             extern __inline __m512i
1714             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1715             _mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B,
1716             __m512i __C, const int __imm)
1717             {
1718             return (__m512i)
1719             __builtin_ia32_pternlogd512_mask ((__v16si) __A,
1720             (__v16si) __B,
1721             (__v16si) __C,
1722             (unsigned char) __imm,
1723             (__mmask16) __U);
1724             }
1725              
1726             extern __inline __m512i
1727             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1728             _mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
1729             __m512i __C, const int __imm)
1730             {
1731             return (__m512i)
1732             __builtin_ia32_pternlogd512_maskz ((__v16si) __A,
1733             (__v16si) __B,
1734             (__v16si) __C,
1735             (unsigned char) __imm,
1736             (__mmask16) __U);
1737             }
1738             #else
1739             #define _mm512_ternarylogic_epi64(A, B, C, I) \
1740             ((__m512i) \
1741             __builtin_ia32_pternlogq512_mask ((__v8di) (__m512i) (A), \
1742             (__v8di) (__m512i) (B), \
1743             (__v8di) (__m512i) (C), \
1744             (unsigned char) (I), \
1745             (__mmask8) -1))
1746             #define _mm512_mask_ternarylogic_epi64(A, U, B, C, I) \
1747             ((__m512i) \
1748             __builtin_ia32_pternlogq512_mask ((__v8di) (__m512i) (A), \
1749             (__v8di) (__m512i) (B), \
1750             (__v8di) (__m512i) (C), \
1751             (unsigned char)(I), \
1752             (__mmask8) (U)))
1753             #define _mm512_maskz_ternarylogic_epi64(U, A, B, C, I) \
1754             ((__m512i) \
1755             __builtin_ia32_pternlogq512_maskz ((__v8di) (__m512i) (A), \
1756             (__v8di) (__m512i) (B), \
1757             (__v8di) (__m512i) (C), \
1758             (unsigned char) (I), \
1759             (__mmask8) (U)))
1760             #define _mm512_ternarylogic_epi32(A, B, C, I) \
1761             ((__m512i) \
1762             __builtin_ia32_pternlogd512_mask ((__v16si) (__m512i) (A), \
1763             (__v16si) (__m512i) (B), \
1764             (__v16si) (__m512i) (C), \
1765             (unsigned char) (I), \
1766             (__mmask16) -1))
1767             #define _mm512_mask_ternarylogic_epi32(A, U, B, C, I) \
1768             ((__m512i) \
1769             __builtin_ia32_pternlogd512_mask ((__v16si) (__m512i) (A), \
1770             (__v16si) (__m512i) (B), \
1771             (__v16si) (__m512i) (C), \
1772             (unsigned char) (I), \
1773             (__mmask16) (U)))
1774             #define _mm512_maskz_ternarylogic_epi32(U, A, B, C, I) \
1775             ((__m512i) \
1776             __builtin_ia32_pternlogd512_maskz ((__v16si) (__m512i) (A), \
1777             (__v16si) (__m512i) (B), \
1778             (__v16si) (__m512i) (C), \
1779             (unsigned char) (I), \
1780             (__mmask16) (U)))
1781             #endif
1782              
1783             extern __inline __m512d
1784             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1785             _mm512_rcp14_pd (__m512d __A)
1786             {
1787             return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1788             (__v8df)
1789             _mm512_undefined_pd (),
1790             (__mmask8) -1);
1791             }
1792              
1793             extern __inline __m512d
1794             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1795             _mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1796             {
1797             return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1798             (__v8df) __W,
1799             (__mmask8) __U);
1800             }
1801              
1802             extern __inline __m512d
1803             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1804             _mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1805             {
1806             return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1807             (__v8df)
1808             _mm512_setzero_pd (),
1809             (__mmask8) __U);
1810             }
1811              
1812             extern __inline __m512
1813             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1814             _mm512_rcp14_ps (__m512 __A)
1815             {
1816             return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1817             (__v16sf)
1818             _mm512_undefined_ps (),
1819             (__mmask16) -1);
1820             }
1821              
1822             extern __inline __m512
1823             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1824             _mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1825             {
1826             return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1827             (__v16sf) __W,
1828             (__mmask16) __U);
1829             }
1830              
1831             extern __inline __m512
1832             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1833             _mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1834             {
1835             return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1836             (__v16sf)
1837             _mm512_setzero_ps (),
1838             (__mmask16) __U);
1839             }
1840              
1841             extern __inline __m128d
1842             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1843             _mm_rcp14_sd (__m128d __A, __m128d __B)
1844             {
1845             return (__m128d) __builtin_ia32_rcp14sd ((__v2df) __B,
1846             (__v2df) __A);
1847             }
1848              
1849             extern __inline __m128d
1850             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1851             _mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1852             {
1853             return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __B,
1854             (__v2df) __A,
1855             (__v2df) __W,
1856             (__mmask8) __U);
1857             }
1858              
1859             extern __inline __m128d
1860             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1861             _mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1862             {
1863             return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __B,
1864             (__v2df) __A,
1865             (__v2df) _mm_setzero_ps (),
1866             (__mmask8) __U);
1867             }
1868              
1869             extern __inline __m128
1870             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1871             _mm_rcp14_ss (__m128 __A, __m128 __B)
1872             {
1873             return (__m128) __builtin_ia32_rcp14ss ((__v4sf) __B,
1874             (__v4sf) __A);
1875             }
1876              
1877             extern __inline __m128
1878             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1879             _mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1880             {
1881             return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __B,
1882             (__v4sf) __A,
1883             (__v4sf) __W,
1884             (__mmask8) __U);
1885             }
1886              
1887             extern __inline __m128
1888             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1889             _mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1890             {
1891             return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __B,
1892             (__v4sf) __A,
1893             (__v4sf) _mm_setzero_ps (),
1894             (__mmask8) __U);
1895             }
1896              
1897             extern __inline __m512d
1898             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1899             _mm512_rsqrt14_pd (__m512d __A)
1900             {
1901             return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1902             (__v8df)
1903             _mm512_undefined_pd (),
1904             (__mmask8) -1);
1905             }
1906              
1907             extern __inline __m512d
1908             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1909             _mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1910             {
1911             return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1912             (__v8df) __W,
1913             (__mmask8) __U);
1914             }
1915              
1916             extern __inline __m512d
1917             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1918             _mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1919             {
1920             return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1921             (__v8df)
1922             _mm512_setzero_pd (),
1923             (__mmask8) __U);
1924             }
1925              
1926             extern __inline __m512
1927             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1928             _mm512_rsqrt14_ps (__m512 __A)
1929             {
1930             return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1931             (__v16sf)
1932             _mm512_undefined_ps (),
1933             (__mmask16) -1);
1934             }
1935              
1936             extern __inline __m512
1937             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1938             _mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1939             {
1940             return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1941             (__v16sf) __W,
1942             (__mmask16) __U);
1943             }
1944              
1945             extern __inline __m512
1946             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1947             _mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1948             {
1949             return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1950             (__v16sf)
1951             _mm512_setzero_ps (),
1952             (__mmask16) __U);
1953             }
1954              
1955             extern __inline __m128d
1956             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1957             _mm_rsqrt14_sd (__m128d __A, __m128d __B)
1958             {
1959             return (__m128d) __builtin_ia32_rsqrt14sd ((__v2df) __B,
1960             (__v2df) __A);
1961             }
1962              
1963             extern __inline __m128d
1964             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1965             _mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1966             {
1967             return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __B,
1968             (__v2df) __A,
1969             (__v2df) __W,
1970             (__mmask8) __U);
1971             }
1972              
1973             extern __inline __m128d
1974             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1975             _mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1976             {
1977             return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __B,
1978             (__v2df) __A,
1979             (__v2df) _mm_setzero_pd (),
1980             (__mmask8) __U);
1981             }
1982              
1983             extern __inline __m128
1984             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1985             _mm_rsqrt14_ss (__m128 __A, __m128 __B)
1986             {
1987             return (__m128) __builtin_ia32_rsqrt14ss ((__v4sf) __B,
1988             (__v4sf) __A);
1989             }
1990              
1991             extern __inline __m128
1992             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1993             _mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1994             {
1995             return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __B,
1996             (__v4sf) __A,
1997             (__v4sf) __W,
1998             (__mmask8) __U);
1999             }
2000              
2001             extern __inline __m128
2002             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2003             _mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
2004             {
2005             return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __B,
2006             (__v4sf) __A,
2007             (__v4sf) _mm_setzero_ps (),
2008             (__mmask8) __U);
2009             }
2010              
2011             #ifdef __OPTIMIZE__
2012             extern __inline __m512d
2013             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2014             _mm512_sqrt_round_pd (__m512d __A, const int __R)
2015             {
2016             return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
2017             (__v8df)
2018             _mm512_undefined_pd (),
2019             (__mmask8) -1, __R);
2020             }
2021              
2022             extern __inline __m512d
2023             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2024             _mm512_mask_sqrt_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2025             const int __R)
2026             {
2027             return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
2028             (__v8df) __W,
2029             (__mmask8) __U, __R);
2030             }
2031              
2032             extern __inline __m512d
2033             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2034             _mm512_maskz_sqrt_round_pd (__mmask8 __U, __m512d __A, const int __R)
2035             {
2036             return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
2037             (__v8df)
2038             _mm512_setzero_pd (),
2039             (__mmask8) __U, __R);
2040             }
2041              
2042             extern __inline __m512
2043             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2044             _mm512_sqrt_round_ps (__m512 __A, const int __R)
2045             {
2046             return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
2047             (__v16sf)
2048             _mm512_undefined_ps (),
2049             (__mmask16) -1, __R);
2050             }
2051              
2052             extern __inline __m512
2053             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2054             _mm512_mask_sqrt_round_ps (__m512 __W, __mmask16 __U, __m512 __A, const int __R)
2055             {
2056             return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
2057             (__v16sf) __W,
2058             (__mmask16) __U, __R);
2059             }
2060              
2061             extern __inline __m512
2062             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2063             _mm512_maskz_sqrt_round_ps (__mmask16 __U, __m512 __A, const int __R)
2064             {
2065             return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
2066             (__v16sf)
2067             _mm512_setzero_ps (),
2068             (__mmask16) __U, __R);
2069             }
2070              
2071             extern __inline __m128d
2072             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2073             _mm_sqrt_round_sd (__m128d __A, __m128d __B, const int __R)
2074             {
2075             return (__m128d) __builtin_ia32_sqrtsd_mask_round ((__v2df) __B,
2076             (__v2df) __A,
2077             (__v2df)
2078             _mm_setzero_pd (),
2079             (__mmask8) -1, __R);
2080             }
2081              
2082             extern __inline __m128d
2083             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2084             _mm_mask_sqrt_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
2085             const int __R)
2086             {
2087             return (__m128d) __builtin_ia32_sqrtsd_mask_round ((__v2df) __B,
2088             (__v2df) __A,
2089             (__v2df) __W,
2090             (__mmask8) __U, __R);
2091             }
2092              
2093             extern __inline __m128d
2094             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2095             _mm_maskz_sqrt_round_sd (__mmask8 __U, __m128d __A, __m128d __B, const int __R)
2096             {
2097             return (__m128d) __builtin_ia32_sqrtsd_mask_round ((__v2df) __B,
2098             (__v2df) __A,
2099             (__v2df)
2100             _mm_setzero_pd (),
2101             (__mmask8) __U, __R);
2102             }
2103              
2104             extern __inline __m128
2105             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2106             _mm_sqrt_round_ss (__m128 __A, __m128 __B, const int __R)
2107             {
2108             return (__m128) __builtin_ia32_sqrtss_mask_round ((__v4sf) __B,
2109             (__v4sf) __A,
2110             (__v4sf)
2111             _mm_setzero_ps (),
2112             (__mmask8) -1, __R);
2113             }
2114              
2115             extern __inline __m128
2116             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2117             _mm_mask_sqrt_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
2118             const int __R)
2119             {
2120             return (__m128) __builtin_ia32_sqrtss_mask_round ((__v4sf) __B,
2121             (__v4sf) __A,
2122             (__v4sf) __W,
2123             (__mmask8) __U, __R);
2124             }
2125              
2126             extern __inline __m128
2127             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2128             _mm_maskz_sqrt_round_ss (__mmask8 __U, __m128 __A, __m128 __B, const int __R)
2129             {
2130             return (__m128) __builtin_ia32_sqrtss_mask_round ((__v4sf) __B,
2131             (__v4sf) __A,
2132             (__v4sf)
2133             _mm_setzero_ps (),
2134             (__mmask8) __U, __R);
2135             }
2136             #else
2137             #define _mm512_sqrt_round_pd(A, C) \
2138             (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, C)
2139              
2140             #define _mm512_mask_sqrt_round_pd(W, U, A, C) \
2141             (__m512d)__builtin_ia32_sqrtpd512_mask(A, W, U, C)
2142              
2143             #define _mm512_maskz_sqrt_round_pd(U, A, C) \
2144             (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), U, C)
2145              
2146             #define _mm512_sqrt_round_ps(A, C) \
2147             (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_undefined_ps(), -1, C)
2148              
2149             #define _mm512_mask_sqrt_round_ps(W, U, A, C) \
2150             (__m512)__builtin_ia32_sqrtps512_mask(A, W, U, C)
2151              
2152             #define _mm512_maskz_sqrt_round_ps(U, A, C) \
2153             (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), U, C)
2154              
2155             #define _mm_sqrt_round_sd(A, B, C) \
2156             (__m128d)__builtin_ia32_sqrtsd_mask_round (B, A, \
2157             (__v2df) _mm_setzero_pd (), -1, C)
2158              
2159             #define _mm_mask_sqrt_round_sd(W, U, A, B, C) \
2160             (__m128d)__builtin_ia32_sqrtsd_mask_round (B, A, W, U, C)
2161              
2162             #define _mm_maskz_sqrt_round_sd(U, A, B, C) \
2163             (__m128d)__builtin_ia32_sqrtsd_mask_round (B, A, \
2164             (__v2df) _mm_setzero_pd (), U, C)
2165              
2166             #define _mm_sqrt_round_ss(A, B, C) \
2167             (__m128)__builtin_ia32_sqrtss_mask_round (B, A, \
2168             (__v4sf) _mm_setzero_ps (), -1, C)
2169              
2170             #define _mm_mask_sqrt_round_ss(W, U, A, B, C) \
2171             (__m128)__builtin_ia32_sqrtss_mask_round (B, A, W, U, C)
2172              
2173             #define _mm_maskz_sqrt_round_ss(U, A, B, C) \
2174             (__m128)__builtin_ia32_sqrtss_mask_round (B, A, \
2175             (__v4sf) _mm_setzero_ps (), U, C)
2176             #endif
2177              
2178             #define _mm_mask_sqrt_sd(W, U, A, B) \
2179             _mm_mask_sqrt_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
2180              
2181             #define _mm_maskz_sqrt_sd(U, A, B) \
2182             _mm_maskz_sqrt_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
2183              
2184             #define _mm_mask_sqrt_ss(W, U, A, B) \
2185             _mm_mask_sqrt_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
2186              
2187             #define _mm_maskz_sqrt_ss(U, A, B) \
2188             _mm_maskz_sqrt_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
2189              
2190             extern __inline __m512i
2191             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2192             _mm512_cvtepi8_epi32 (__m128i __A)
2193             {
2194             return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
2195             (__v16si)
2196             _mm512_undefined_epi32 (),
2197             (__mmask16) -1);
2198             }
2199              
2200             extern __inline __m512i
2201             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2202             _mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
2203             {
2204             return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
2205             (__v16si) __W,
2206             (__mmask16) __U);
2207             }
2208              
2209             extern __inline __m512i
2210             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2211             _mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
2212             {
2213             return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
2214             (__v16si)
2215             _mm512_setzero_si512 (),
2216             (__mmask16) __U);
2217             }
2218              
2219             extern __inline __m512i
2220             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2221             _mm512_cvtepi8_epi64 (__m128i __A)
2222             {
2223             return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
2224             (__v8di)
2225             _mm512_undefined_epi32 (),
2226             (__mmask8) -1);
2227             }
2228              
2229             extern __inline __m512i
2230             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2231             _mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2232             {
2233             return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
2234             (__v8di) __W,
2235             (__mmask8) __U);
2236             }
2237              
2238             extern __inline __m512i
2239             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2240             _mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
2241             {
2242             return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
2243             (__v8di)
2244             _mm512_setzero_si512 (),
2245             (__mmask8) __U);
2246             }
2247              
2248             extern __inline __m512i
2249             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2250             _mm512_cvtepi16_epi32 (__m256i __A)
2251             {
2252             return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
2253             (__v16si)
2254             _mm512_undefined_epi32 (),
2255             (__mmask16) -1);
2256             }
2257              
2258             extern __inline __m512i
2259             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2260             _mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
2261             {
2262             return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
2263             (__v16si) __W,
2264             (__mmask16) __U);
2265             }
2266              
2267             extern __inline __m512i
2268             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2269             _mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
2270             {
2271             return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
2272             (__v16si)
2273             _mm512_setzero_si512 (),
2274             (__mmask16) __U);
2275             }
2276              
2277             extern __inline __m512i
2278             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2279             _mm512_cvtepi16_epi64 (__m128i __A)
2280             {
2281             return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
2282             (__v8di)
2283             _mm512_undefined_epi32 (),
2284             (__mmask8) -1);
2285             }
2286              
2287             extern __inline __m512i
2288             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2289             _mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2290             {
2291             return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
2292             (__v8di) __W,
2293             (__mmask8) __U);
2294             }
2295              
2296             extern __inline __m512i
2297             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2298             _mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
2299             {
2300             return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
2301             (__v8di)
2302             _mm512_setzero_si512 (),
2303             (__mmask8) __U);
2304             }
2305              
2306             extern __inline __m512i
2307             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2308             _mm512_cvtepi32_epi64 (__m256i __X)
2309             {
2310             return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
2311             (__v8di)
2312             _mm512_undefined_epi32 (),
2313             (__mmask8) -1);
2314             }
2315              
2316             extern __inline __m512i
2317             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2318             _mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
2319             {
2320             return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
2321             (__v8di) __W,
2322             (__mmask8) __U);
2323             }
2324              
2325             extern __inline __m512i
2326             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2327             _mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
2328             {
2329             return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
2330             (__v8di)
2331             _mm512_setzero_si512 (),
2332             (__mmask8) __U);
2333             }
2334              
2335             extern __inline __m512i
2336             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2337             _mm512_cvtepu8_epi32 (__m128i __A)
2338             {
2339             return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
2340             (__v16si)
2341             _mm512_undefined_epi32 (),
2342             (__mmask16) -1);
2343             }
2344              
2345             extern __inline __m512i
2346             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2347             _mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
2348             {
2349             return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
2350             (__v16si) __W,
2351             (__mmask16) __U);
2352             }
2353              
2354             extern __inline __m512i
2355             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2356             _mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
2357             {
2358             return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
2359             (__v16si)
2360             _mm512_setzero_si512 (),
2361             (__mmask16) __U);
2362             }
2363              
2364             extern __inline __m512i
2365             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2366             _mm512_cvtepu8_epi64 (__m128i __A)
2367             {
2368             return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
2369             (__v8di)
2370             _mm512_undefined_epi32 (),
2371             (__mmask8) -1);
2372             }
2373              
2374             extern __inline __m512i
2375             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2376             _mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2377             {
2378             return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
2379             (__v8di) __W,
2380             (__mmask8) __U);
2381             }
2382              
2383             extern __inline __m512i
2384             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2385             _mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
2386             {
2387             return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
2388             (__v8di)
2389             _mm512_setzero_si512 (),
2390             (__mmask8) __U);
2391             }
2392              
2393             extern __inline __m512i
2394             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2395             _mm512_cvtepu16_epi32 (__m256i __A)
2396             {
2397             return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
2398             (__v16si)
2399             _mm512_undefined_epi32 (),
2400             (__mmask16) -1);
2401             }
2402              
2403             extern __inline __m512i
2404             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2405             _mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
2406             {
2407             return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
2408             (__v16si) __W,
2409             (__mmask16) __U);
2410             }
2411              
2412             extern __inline __m512i
2413             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2414             _mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
2415             {
2416             return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
2417             (__v16si)
2418             _mm512_setzero_si512 (),
2419             (__mmask16) __U);
2420             }
2421              
2422             extern __inline __m512i
2423             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2424             _mm512_cvtepu16_epi64 (__m128i __A)
2425             {
2426             return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
2427             (__v8di)
2428             _mm512_undefined_epi32 (),
2429             (__mmask8) -1);
2430             }
2431              
2432             extern __inline __m512i
2433             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2434             _mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2435             {
2436             return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
2437             (__v8di) __W,
2438             (__mmask8) __U);
2439             }
2440              
2441             extern __inline __m512i
2442             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2443             _mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
2444             {
2445             return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
2446             (__v8di)
2447             _mm512_setzero_si512 (),
2448             (__mmask8) __U);
2449             }
2450              
2451             extern __inline __m512i
2452             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2453             _mm512_cvtepu32_epi64 (__m256i __X)
2454             {
2455             return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
2456             (__v8di)
2457             _mm512_undefined_epi32 (),
2458             (__mmask8) -1);
2459             }
2460              
2461             extern __inline __m512i
2462             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2463             _mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
2464             {
2465             return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
2466             (__v8di) __W,
2467             (__mmask8) __U);
2468             }
2469              
2470             extern __inline __m512i
2471             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2472             _mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
2473             {
2474             return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
2475             (__v8di)
2476             _mm512_setzero_si512 (),
2477             (__mmask8) __U);
2478             }
2479              
2480             #ifdef __OPTIMIZE__
2481             extern __inline __m512d
2482             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2483             _mm512_add_round_pd (__m512d __A, __m512d __B, const int __R)
2484             {
2485             return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2486             (__v8df) __B,
2487             (__v8df)
2488             _mm512_undefined_pd (),
2489             (__mmask8) -1, __R);
2490             }
2491              
2492             extern __inline __m512d
2493             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2494             _mm512_mask_add_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2495             __m512d __B, const int __R)
2496             {
2497             return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2498             (__v8df) __B,
2499             (__v8df) __W,
2500             (__mmask8) __U, __R);
2501             }
2502              
2503             extern __inline __m512d
2504             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2505             _mm512_maskz_add_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2506             const int __R)
2507             {
2508             return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2509             (__v8df) __B,
2510             (__v8df)
2511             _mm512_setzero_pd (),
2512             (__mmask8) __U, __R);
2513             }
2514              
2515             extern __inline __m512
2516             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2517             _mm512_add_round_ps (__m512 __A, __m512 __B, const int __R)
2518             {
2519             return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2520             (__v16sf) __B,
2521             (__v16sf)
2522             _mm512_undefined_ps (),
2523             (__mmask16) -1, __R);
2524             }
2525              
2526             extern __inline __m512
2527             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2528             _mm512_mask_add_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2529             __m512 __B, const int __R)
2530             {
2531             return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2532             (__v16sf) __B,
2533             (__v16sf) __W,
2534             (__mmask16) __U, __R);
2535             }
2536              
2537             extern __inline __m512
2538             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2539             _mm512_maskz_add_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2540             {
2541             return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2542             (__v16sf) __B,
2543             (__v16sf)
2544             _mm512_setzero_ps (),
2545             (__mmask16) __U, __R);
2546             }
2547              
2548             extern __inline __m512d
2549             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2550             _mm512_sub_round_pd (__m512d __A, __m512d __B, const int __R)
2551             {
2552             return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2553             (__v8df) __B,
2554             (__v8df)
2555             _mm512_undefined_pd (),
2556             (__mmask8) -1, __R);
2557             }
2558              
2559             extern __inline __m512d
2560             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2561             _mm512_mask_sub_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2562             __m512d __B, const int __R)
2563             {
2564             return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2565             (__v8df) __B,
2566             (__v8df) __W,
2567             (__mmask8) __U, __R);
2568             }
2569              
2570             extern __inline __m512d
2571             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2572             _mm512_maskz_sub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2573             const int __R)
2574             {
2575             return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2576             (__v8df) __B,
2577             (__v8df)
2578             _mm512_setzero_pd (),
2579             (__mmask8) __U, __R);
2580             }
2581              
2582             extern __inline __m512
2583             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2584             _mm512_sub_round_ps (__m512 __A, __m512 __B, const int __R)
2585             {
2586             return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2587             (__v16sf) __B,
2588             (__v16sf)
2589             _mm512_undefined_ps (),
2590             (__mmask16) -1, __R);
2591             }
2592              
2593             extern __inline __m512
2594             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2595             _mm512_mask_sub_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2596             __m512 __B, const int __R)
2597             {
2598             return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2599             (__v16sf) __B,
2600             (__v16sf) __W,
2601             (__mmask16) __U, __R);
2602             }
2603              
2604             extern __inline __m512
2605             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2606             _mm512_maskz_sub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2607             {
2608             return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2609             (__v16sf) __B,
2610             (__v16sf)
2611             _mm512_setzero_ps (),
2612             (__mmask16) __U, __R);
2613             }
2614             #else
2615             #define _mm512_add_round_pd(A, B, C) \
2616             (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
2617              
2618             #define _mm512_mask_add_round_pd(W, U, A, B, C) \
2619             (__m512d)__builtin_ia32_addpd512_mask(A, B, W, U, C)
2620              
2621             #define _mm512_maskz_add_round_pd(U, A, B, C) \
2622             (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2623              
2624             #define _mm512_add_round_ps(A, B, C) \
2625             (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
2626              
2627             #define _mm512_mask_add_round_ps(W, U, A, B, C) \
2628             (__m512)__builtin_ia32_addps512_mask(A, B, W, U, C)
2629              
2630             #define _mm512_maskz_add_round_ps(U, A, B, C) \
2631             (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2632              
2633             #define _mm512_sub_round_pd(A, B, C) \
2634             (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
2635              
2636             #define _mm512_mask_sub_round_pd(W, U, A, B, C) \
2637             (__m512d)__builtin_ia32_subpd512_mask(A, B, W, U, C)
2638              
2639             #define _mm512_maskz_sub_round_pd(U, A, B, C) \
2640             (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2641              
2642             #define _mm512_sub_round_ps(A, B, C) \
2643             (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
2644              
2645             #define _mm512_mask_sub_round_ps(W, U, A, B, C) \
2646             (__m512)__builtin_ia32_subps512_mask(A, B, W, U, C)
2647              
2648             #define _mm512_maskz_sub_round_ps(U, A, B, C) \
2649             (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2650             #endif
2651              
2652             #ifdef __OPTIMIZE__
2653             extern __inline __m512d
2654             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2655             _mm512_mul_round_pd (__m512d __A, __m512d __B, const int __R)
2656             {
2657             return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2658             (__v8df) __B,
2659             (__v8df)
2660             _mm512_undefined_pd (),
2661             (__mmask8) -1, __R);
2662             }
2663              
2664             extern __inline __m512d
2665             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2666             _mm512_mask_mul_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2667             __m512d __B, const int __R)
2668             {
2669             return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2670             (__v8df) __B,
2671             (__v8df) __W,
2672             (__mmask8) __U, __R);
2673             }
2674              
2675             extern __inline __m512d
2676             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2677             _mm512_maskz_mul_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2678             const int __R)
2679             {
2680             return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2681             (__v8df) __B,
2682             (__v8df)
2683             _mm512_setzero_pd (),
2684             (__mmask8) __U, __R);
2685             }
2686              
2687             extern __inline __m512
2688             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2689             _mm512_mul_round_ps (__m512 __A, __m512 __B, const int __R)
2690             {
2691             return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2692             (__v16sf) __B,
2693             (__v16sf)
2694             _mm512_undefined_ps (),
2695             (__mmask16) -1, __R);
2696             }
2697              
2698             extern __inline __m512
2699             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2700             _mm512_mask_mul_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2701             __m512 __B, const int __R)
2702             {
2703             return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2704             (__v16sf) __B,
2705             (__v16sf) __W,
2706             (__mmask16) __U, __R);
2707             }
2708              
2709             extern __inline __m512
2710             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2711             _mm512_maskz_mul_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2712             {
2713             return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2714             (__v16sf) __B,
2715             (__v16sf)
2716             _mm512_setzero_ps (),
2717             (__mmask16) __U, __R);
2718             }
2719              
2720             extern __inline __m512d
2721             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2722             _mm512_div_round_pd (__m512d __M, __m512d __V, const int __R)
2723             {
2724             return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
2725             (__v8df) __V,
2726             (__v8df)
2727             _mm512_undefined_pd (),
2728             (__mmask8) -1, __R);
2729             }
2730              
2731             extern __inline __m512d
2732             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2733             _mm512_mask_div_round_pd (__m512d __W, __mmask8 __U, __m512d __M,
2734             __m512d __V, const int __R)
2735             {
2736             return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
2737             (__v8df) __V,
2738             (__v8df) __W,
2739             (__mmask8) __U, __R);
2740             }
2741              
2742             extern __inline __m512d
2743             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2744             _mm512_maskz_div_round_pd (__mmask8 __U, __m512d __M, __m512d __V,
2745             const int __R)
2746             {
2747             return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
2748             (__v8df) __V,
2749             (__v8df)
2750             _mm512_setzero_pd (),
2751             (__mmask8) __U, __R);
2752             }
2753              
2754             extern __inline __m512
2755             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2756             _mm512_div_round_ps (__m512 __A, __m512 __B, const int __R)
2757             {
2758             return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2759             (__v16sf) __B,
2760             (__v16sf)
2761             _mm512_undefined_ps (),
2762             (__mmask16) -1, __R);
2763             }
2764              
2765             extern __inline __m512
2766             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2767             _mm512_mask_div_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2768             __m512 __B, const int __R)
2769             {
2770             return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2771             (__v16sf) __B,
2772             (__v16sf) __W,
2773             (__mmask16) __U, __R);
2774             }
2775              
2776             extern __inline __m512
2777             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2778             _mm512_maskz_div_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2779             {
2780             return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2781             (__v16sf) __B,
2782             (__v16sf)
2783             _mm512_setzero_ps (),
2784             (__mmask16) __U, __R);
2785             }
2786              
2787             extern __inline __m128d
2788             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2789             _mm_mul_round_sd (__m128d __A, __m128d __B, const int __R)
2790             {
2791             return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A,
2792             (__v2df) __B,
2793             __R);
2794             }
2795              
2796             extern __inline __m128d
2797             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2798             _mm_mask_mul_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
2799             __m128d __B, const int __R)
2800             {
2801             return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
2802             (__v2df) __B,
2803             (__v2df) __W,
2804             (__mmask8) __U, __R);
2805             }
2806              
2807             extern __inline __m128d
2808             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2809             _mm_maskz_mul_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
2810             const int __R)
2811             {
2812             return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
2813             (__v2df) __B,
2814             (__v2df)
2815             _mm_setzero_pd (),
2816             (__mmask8) __U, __R);
2817             }
2818              
2819             extern __inline __m128
2820             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2821             _mm_mul_round_ss (__m128 __A, __m128 __B, const int __R)
2822             {
2823             return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A,
2824             (__v4sf) __B,
2825             __R);
2826             }
2827              
2828             extern __inline __m128
2829             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2830             _mm_mask_mul_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
2831             __m128 __B, const int __R)
2832             {
2833             return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
2834             (__v4sf) __B,
2835             (__v4sf) __W,
2836             (__mmask8) __U, __R);
2837             }
2838              
2839             extern __inline __m128
2840             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2841             _mm_maskz_mul_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
2842             const int __R)
2843             {
2844             return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
2845             (__v4sf) __B,
2846             (__v4sf)
2847             _mm_setzero_ps (),
2848             (__mmask8) __U, __R);
2849             }
2850              
2851             extern __inline __m128d
2852             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2853             _mm_div_round_sd (__m128d __A, __m128d __B, const int __R)
2854             {
2855             return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A,
2856             (__v2df) __B,
2857             __R);
2858             }
2859              
2860             extern __inline __m128d
2861             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2862             _mm_mask_div_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
2863             __m128d __B, const int __R)
2864             {
2865             return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
2866             (__v2df) __B,
2867             (__v2df) __W,
2868             (__mmask8) __U, __R);
2869             }
2870              
2871             extern __inline __m128d
2872             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2873             _mm_maskz_div_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
2874             const int __R)
2875             {
2876             return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
2877             (__v2df) __B,
2878             (__v2df)
2879             _mm_setzero_pd (),
2880             (__mmask8) __U, __R);
2881             }
2882              
2883             extern __inline __m128
2884             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2885             _mm_div_round_ss (__m128 __A, __m128 __B, const int __R)
2886             {
2887             return (__m128) __builtin_ia32_divss_round ((__v4sf) __A,
2888             (__v4sf) __B,
2889             __R);
2890             }
2891              
2892             extern __inline __m128
2893             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2894             _mm_mask_div_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
2895             __m128 __B, const int __R)
2896             {
2897             return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
2898             (__v4sf) __B,
2899             (__v4sf) __W,
2900             (__mmask8) __U, __R);
2901             }
2902              
2903             extern __inline __m128
2904             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2905             _mm_maskz_div_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
2906             const int __R)
2907             {
2908             return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
2909             (__v4sf) __B,
2910             (__v4sf)
2911             _mm_setzero_ps (),
2912             (__mmask8) __U, __R);
2913             }
2914              
2915             #else
2916             #define _mm512_mul_round_pd(A, B, C) \
2917             (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
2918              
2919             #define _mm512_mask_mul_round_pd(W, U, A, B, C) \
2920             (__m512d)__builtin_ia32_mulpd512_mask(A, B, W, U, C)
2921              
2922             #define _mm512_maskz_mul_round_pd(U, A, B, C) \
2923             (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2924              
2925             #define _mm512_mul_round_ps(A, B, C) \
2926             (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
2927              
2928             #define _mm512_mask_mul_round_ps(W, U, A, B, C) \
2929             (__m512)__builtin_ia32_mulps512_mask(A, B, W, U, C)
2930              
2931             #define _mm512_maskz_mul_round_ps(U, A, B, C) \
2932             (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2933              
2934             #define _mm512_div_round_pd(A, B, C) \
2935             (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
2936              
2937             #define _mm512_mask_div_round_pd(W, U, A, B, C) \
2938             (__m512d)__builtin_ia32_divpd512_mask(A, B, W, U, C)
2939              
2940             #define _mm512_maskz_div_round_pd(U, A, B, C) \
2941             (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2942              
2943             #define _mm512_div_round_ps(A, B, C) \
2944             (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
2945              
2946             #define _mm512_mask_div_round_ps(W, U, A, B, C) \
2947             (__m512)__builtin_ia32_divps512_mask(A, B, W, U, C)
2948              
2949             #define _mm512_maskz_div_round_ps(U, A, B, C) \
2950             (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2951              
2952             #define _mm_mul_round_sd(A, B, C) \
2953             (__m128d)__builtin_ia32_mulsd_round(A, B, C)
2954              
2955             #define _mm_mask_mul_round_sd(W, U, A, B, C) \
2956             (__m128d)__builtin_ia32_mulsd_mask_round(A, B, W, U, C)
2957              
2958             #define _mm_maskz_mul_round_sd(U, A, B, C) \
2959             (__m128d)__builtin_ia32_mulsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
2960              
2961             #define _mm_mul_round_ss(A, B, C) \
2962             (__m128)__builtin_ia32_mulss_round(A, B, C)
2963              
2964             #define _mm_mask_mul_round_ss(W, U, A, B, C) \
2965             (__m128)__builtin_ia32_mulss_mask_round(A, B, W, U, C)
2966              
2967             #define _mm_maskz_mul_round_ss(U, A, B, C) \
2968             (__m128)__builtin_ia32_mulss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
2969              
2970             #define _mm_div_round_sd(A, B, C) \
2971             (__m128d)__builtin_ia32_divsd_round(A, B, C)
2972              
2973             #define _mm_mask_div_round_sd(W, U, A, B, C) \
2974             (__m128d)__builtin_ia32_divsd_mask_round(A, B, W, U, C)
2975              
2976             #define _mm_maskz_div_round_sd(U, A, B, C) \
2977             (__m128d)__builtin_ia32_divsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
2978              
2979             #define _mm_div_round_ss(A, B, C) \
2980             (__m128)__builtin_ia32_divss_round(A, B, C)
2981              
2982             #define _mm_mask_div_round_ss(W, U, A, B, C) \
2983             (__m128)__builtin_ia32_divss_mask_round(A, B, W, U, C)
2984              
2985             #define _mm_maskz_div_round_ss(U, A, B, C) \
2986             (__m128)__builtin_ia32_divss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
2987              
2988             #endif
2989              
2990             #ifdef __OPTIMIZE__
2991             extern __inline __m512d
2992             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2993             _mm512_max_round_pd (__m512d __A, __m512d __B, const int __R)
2994             {
2995             return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
2996             (__v8df) __B,
2997             (__v8df)
2998             _mm512_undefined_pd (),
2999             (__mmask8) -1, __R);
3000             }
3001              
3002             extern __inline __m512d
3003             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3004             _mm512_mask_max_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
3005             __m512d __B, const int __R)
3006             {
3007             return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
3008             (__v8df) __B,
3009             (__v8df) __W,
3010             (__mmask8) __U, __R);
3011             }
3012              
3013             extern __inline __m512d
3014             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3015             _mm512_maskz_max_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3016             const int __R)
3017             {
3018             return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
3019             (__v8df) __B,
3020             (__v8df)
3021             _mm512_setzero_pd (),
3022             (__mmask8) __U, __R);
3023             }
3024              
3025             extern __inline __m512
3026             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3027             _mm512_max_round_ps (__m512 __A, __m512 __B, const int __R)
3028             {
3029             return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
3030             (__v16sf) __B,
3031             (__v16sf)
3032             _mm512_undefined_ps (),
3033             (__mmask16) -1, __R);
3034             }
3035              
3036             extern __inline __m512
3037             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3038             _mm512_mask_max_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
3039             __m512 __B, const int __R)
3040             {
3041             return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
3042             (__v16sf) __B,
3043             (__v16sf) __W,
3044             (__mmask16) __U, __R);
3045             }
3046              
3047             extern __inline __m512
3048             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3049             _mm512_maskz_max_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
3050             {
3051             return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
3052             (__v16sf) __B,
3053             (__v16sf)
3054             _mm512_setzero_ps (),
3055             (__mmask16) __U, __R);
3056             }
3057              
3058             extern __inline __m512d
3059             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3060             _mm512_min_round_pd (__m512d __A, __m512d __B, const int __R)
3061             {
3062             return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
3063             (__v8df) __B,
3064             (__v8df)
3065             _mm512_undefined_pd (),
3066             (__mmask8) -1, __R);
3067             }
3068              
3069             extern __inline __m512d
3070             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3071             _mm512_mask_min_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
3072             __m512d __B, const int __R)
3073             {
3074             return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
3075             (__v8df) __B,
3076             (__v8df) __W,
3077             (__mmask8) __U, __R);
3078             }
3079              
3080             extern __inline __m512d
3081             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3082             _mm512_maskz_min_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3083             const int __R)
3084             {
3085             return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
3086             (__v8df) __B,
3087             (__v8df)
3088             _mm512_setzero_pd (),
3089             (__mmask8) __U, __R);
3090             }
3091              
3092             extern __inline __m512
3093             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3094             _mm512_min_round_ps (__m512 __A, __m512 __B, const int __R)
3095             {
3096             return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
3097             (__v16sf) __B,
3098             (__v16sf)
3099             _mm512_undefined_ps (),
3100             (__mmask16) -1, __R);
3101             }
3102              
3103             extern __inline __m512
3104             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3105             _mm512_mask_min_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
3106             __m512 __B, const int __R)
3107             {
3108             return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
3109             (__v16sf) __B,
3110             (__v16sf) __W,
3111             (__mmask16) __U, __R);
3112             }
3113              
3114             extern __inline __m512
3115             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3116             _mm512_maskz_min_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
3117             {
3118             return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
3119             (__v16sf) __B,
3120             (__v16sf)
3121             _mm512_setzero_ps (),
3122             (__mmask16) __U, __R);
3123             }
3124             #else
3125             #define _mm512_max_round_pd(A, B, R) \
3126             (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R)
3127              
3128             #define _mm512_mask_max_round_pd(W, U, A, B, R) \
3129             (__m512d)__builtin_ia32_maxpd512_mask(A, B, W, U, R)
3130              
3131             #define _mm512_maskz_max_round_pd(U, A, B, R) \
3132             (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R)
3133              
3134             #define _mm512_max_round_ps(A, B, R) \
3135             (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_undefined_pd(), -1, R)
3136              
3137             #define _mm512_mask_max_round_ps(W, U, A, B, R) \
3138             (__m512)__builtin_ia32_maxps512_mask(A, B, W, U, R)
3139              
3140             #define _mm512_maskz_max_round_ps(U, A, B, R) \
3141             (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R)
3142              
3143             #define _mm512_min_round_pd(A, B, R) \
3144             (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R)
3145              
3146             #define _mm512_mask_min_round_pd(W, U, A, B, R) \
3147             (__m512d)__builtin_ia32_minpd512_mask(A, B, W, U, R)
3148              
3149             #define _mm512_maskz_min_round_pd(U, A, B, R) \
3150             (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R)
3151              
3152             #define _mm512_min_round_ps(A, B, R) \
3153             (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, R)
3154              
3155             #define _mm512_mask_min_round_ps(W, U, A, B, R) \
3156             (__m512)__builtin_ia32_minps512_mask(A, B, W, U, R)
3157              
3158             #define _mm512_maskz_min_round_ps(U, A, B, R) \
3159             (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R)
3160             #endif
3161              
3162             #ifdef __OPTIMIZE__
3163             extern __inline __m512d
3164             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3165             _mm512_scalef_round_pd (__m512d __A, __m512d __B, const int __R)
3166             {
3167             return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
3168             (__v8df) __B,
3169             (__v8df)
3170             _mm512_undefined_pd (),
3171             (__mmask8) -1, __R);
3172             }
3173              
3174             extern __inline __m512d
3175             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3176             _mm512_mask_scalef_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
3177             __m512d __B, const int __R)
3178             {
3179             return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
3180             (__v8df) __B,
3181             (__v8df) __W,
3182             (__mmask8) __U, __R);
3183             }
3184              
3185             extern __inline __m512d
3186             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3187             _mm512_maskz_scalef_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3188             const int __R)
3189             {
3190             return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
3191             (__v8df) __B,
3192             (__v8df)
3193             _mm512_setzero_pd (),
3194             (__mmask8) __U, __R);
3195             }
3196              
3197             extern __inline __m512
3198             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3199             _mm512_scalef_round_ps (__m512 __A, __m512 __B, const int __R)
3200             {
3201             return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
3202             (__v16sf) __B,
3203             (__v16sf)
3204             _mm512_undefined_ps (),
3205             (__mmask16) -1, __R);
3206             }
3207              
3208             extern __inline __m512
3209             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3210             _mm512_mask_scalef_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
3211             __m512 __B, const int __R)
3212             {
3213             return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
3214             (__v16sf) __B,
3215             (__v16sf) __W,
3216             (__mmask16) __U, __R);
3217             }
3218              
3219             extern __inline __m512
3220             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3221             _mm512_maskz_scalef_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3222             const int __R)
3223             {
3224             return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
3225             (__v16sf) __B,
3226             (__v16sf)
3227             _mm512_setzero_ps (),
3228             (__mmask16) __U, __R);
3229             }
3230              
3231             extern __inline __m128d
3232             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3233             _mm_scalef_round_sd (__m128d __A, __m128d __B, const int __R)
3234             {
3235             return (__m128d) __builtin_ia32_scalefsd_mask_round ((__v2df) __A,
3236             (__v2df) __B,
3237             (__v2df)
3238             _mm_setzero_pd (),
3239             (__mmask8) -1, __R);
3240             }
3241              
3242             extern __inline __m128d
3243             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3244             _mm_mask_scalef_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
3245             const int __R)
3246             {
3247             return (__m128d) __builtin_ia32_scalefsd_mask_round ((__v2df) __A,
3248             (__v2df) __B,
3249             (__v2df) __W,
3250             (__mmask8) __U, __R);
3251             }
3252              
3253             extern __inline __m128d
3254             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3255             _mm_maskz_scalef_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
3256             const int __R)
3257             {
3258             return (__m128d) __builtin_ia32_scalefsd_mask_round ((__v2df) __A,
3259             (__v2df) __B,
3260             (__v2df)
3261             _mm_setzero_pd (),
3262             (__mmask8) __U, __R);
3263             }
3264              
3265             extern __inline __m128
3266             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3267             _mm_scalef_round_ss (__m128 __A, __m128 __B, const int __R)
3268             {
3269             return (__m128) __builtin_ia32_scalefss_mask_round ((__v4sf) __A,
3270             (__v4sf) __B,
3271             (__v4sf)
3272             _mm_setzero_ps (),
3273             (__mmask8) -1, __R);
3274             }
3275              
3276             extern __inline __m128
3277             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3278             _mm_mask_scalef_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
3279             const int __R)
3280             {
3281             return (__m128) __builtin_ia32_scalefss_mask_round ((__v4sf) __A,
3282             (__v4sf) __B,
3283             (__v4sf) __W,
3284             (__mmask8) __U, __R);
3285             }
3286              
3287             extern __inline __m128
3288             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3289             _mm_maskz_scalef_round_ss (__mmask8 __U, __m128 __A, __m128 __B, const int __R)
3290             {
3291             return (__m128) __builtin_ia32_scalefss_mask_round ((__v4sf) __A,
3292             (__v4sf) __B,
3293             (__v4sf)
3294             _mm_setzero_ps (),
3295             (__mmask8) __U, __R);
3296             }
3297             #else
3298             #define _mm512_scalef_round_pd(A, B, C) \
3299             ((__m512d) \
3300             __builtin_ia32_scalefpd512_mask((A), (B), \
3301             (__v8df) _mm512_undefined_pd(), \
3302             -1, (C)))
3303              
3304             #define _mm512_mask_scalef_round_pd(W, U, A, B, C) \
3305             ((__m512d) __builtin_ia32_scalefpd512_mask((A), (B), (W), (U), (C)))
3306              
3307             #define _mm512_maskz_scalef_round_pd(U, A, B, C) \
3308             ((__m512d) \
3309             __builtin_ia32_scalefpd512_mask((A), (B), \
3310             (__v8df) _mm512_setzero_pd(), \
3311             (U), (C)))
3312              
3313             #define _mm512_scalef_round_ps(A, B, C) \
3314             ((__m512) \
3315             __builtin_ia32_scalefps512_mask((A), (B), \
3316             (__v16sf) _mm512_undefined_ps(), \
3317             -1, (C)))
3318              
3319             #define _mm512_mask_scalef_round_ps(W, U, A, B, C) \
3320             ((__m512) __builtin_ia32_scalefps512_mask((A), (B), (W), (U), (C)))
3321              
3322             #define _mm512_maskz_scalef_round_ps(U, A, B, C) \
3323             ((__m512) \
3324             __builtin_ia32_scalefps512_mask((A), (B), \
3325             (__v16sf) _mm512_setzero_ps(), \
3326             (U), (C)))
3327              
3328             #define _mm_scalef_round_sd(A, B, C) \
3329             ((__m128d) \
3330             __builtin_ia32_scalefsd_mask_round ((A), (B), \
3331             (__v2df) _mm_undefined_pd (), \
3332             -1, (C)))
3333              
3334             #define _mm_scalef_round_ss(A, B, C) \
3335             ((__m128) \
3336             __builtin_ia32_scalefss_mask_round ((A), (B), \
3337             (__v4sf) _mm_undefined_ps (), \
3338             -1, (C)))
3339              
3340             #define _mm_mask_scalef_round_sd(W, U, A, B, C) \
3341             ((__m128d) \
3342             __builtin_ia32_scalefsd_mask_round ((A), (B), (W), (U), (C)))
3343              
3344             #define _mm_mask_scalef_round_ss(W, U, A, B, C) \
3345             ((__m128) \
3346             __builtin_ia32_scalefss_mask_round ((A), (B), (W), (U), (C)))
3347              
3348             #define _mm_maskz_scalef_round_sd(U, A, B, C) \
3349             ((__m128d) \
3350             __builtin_ia32_scalefsd_mask_round ((A), (B), \
3351             (__v2df) _mm_setzero_pd (), \
3352             (U), (C)))
3353              
3354             #define _mm_maskz_scalef_round_ss(U, A, B, C) \
3355             ((__m128) \
3356             __builtin_ia32_scalefss_mask_round ((A), (B), \
3357             (__v4sf) _mm_setzero_ps (), \
3358             (U), (C)))
3359             #endif
3360              
3361             #define _mm_mask_scalef_sd(W, U, A, B) \
3362             _mm_mask_scalef_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
3363              
3364             #define _mm_maskz_scalef_sd(U, A, B) \
3365             _mm_maskz_scalef_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
3366              
3367             #define _mm_mask_scalef_ss(W, U, A, B) \
3368             _mm_mask_scalef_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
3369              
3370             #define _mm_maskz_scalef_ss(U, A, B) \
3371             _mm_maskz_scalef_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
3372              
3373             #ifdef __OPTIMIZE__
3374             extern __inline __m512d
3375             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3376             _mm512_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3377             {
3378             return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3379             (__v8df) __B,
3380             (__v8df) __C,
3381             (__mmask8) -1, __R);
3382             }
3383              
3384             extern __inline __m512d
3385             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3386             _mm512_mask_fmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3387             __m512d __C, const int __R)
3388             {
3389             return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3390             (__v8df) __B,
3391             (__v8df) __C,
3392             (__mmask8) __U, __R);
3393             }
3394              
3395             extern __inline __m512d
3396             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3397             _mm512_mask3_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
3398             __mmask8 __U, const int __R)
3399             {
3400             return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
3401             (__v8df) __B,
3402             (__v8df) __C,
3403             (__mmask8) __U, __R);
3404             }
3405              
3406             extern __inline __m512d
3407             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3408             _mm512_maskz_fmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3409             __m512d __C, const int __R)
3410             {
3411             return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
3412             (__v8df) __B,
3413             (__v8df) __C,
3414             (__mmask8) __U, __R);
3415             }
3416              
3417             extern __inline __m512
3418             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3419             _mm512_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3420             {
3421             return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3422             (__v16sf) __B,
3423             (__v16sf) __C,
3424             (__mmask16) -1, __R);
3425             }
3426              
3427             extern __inline __m512
3428             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3429             _mm512_mask_fmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3430             __m512 __C, const int __R)
3431             {
3432             return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3433             (__v16sf) __B,
3434             (__v16sf) __C,
3435             (__mmask16) __U, __R);
3436             }
3437              
3438             extern __inline __m512
3439             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3440             _mm512_mask3_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
3441             __mmask16 __U, const int __R)
3442             {
3443             return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
3444             (__v16sf) __B,
3445             (__v16sf) __C,
3446             (__mmask16) __U, __R);
3447             }
3448              
3449             extern __inline __m512
3450             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3451             _mm512_maskz_fmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3452             __m512 __C, const int __R)
3453             {
3454             return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
3455             (__v16sf) __B,
3456             (__v16sf) __C,
3457             (__mmask16) __U, __R);
3458             }
3459              
3460             extern __inline __m512d
3461             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3462             _mm512_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3463             {
3464             return (__m512d) __builtin_ia32_vfmsubpd512_mask ((__v8df) __A,
3465             (__v8df) __B,
3466             (__v8df) __C,
3467             (__mmask8) -1, __R);
3468             }
3469              
3470             extern __inline __m512d
3471             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3472             _mm512_mask_fmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3473             __m512d __C, const int __R)
3474             {
3475             return (__m512d) __builtin_ia32_vfmsubpd512_mask ((__v8df) __A,
3476             (__v8df) __B,
3477             (__v8df) __C,
3478             (__mmask8) __U, __R);
3479             }
3480              
3481             extern __inline __m512d
3482             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3483             _mm512_mask3_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
3484             __mmask8 __U, const int __R)
3485             {
3486             return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3487             (__v8df) __B,
3488             (__v8df) __C,
3489             (__mmask8) __U, __R);
3490             }
3491              
3492             extern __inline __m512d
3493             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3494             _mm512_maskz_fmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3495             __m512d __C, const int __R)
3496             {
3497             return (__m512d) __builtin_ia32_vfmsubpd512_maskz ((__v8df) __A,
3498             (__v8df) __B,
3499             (__v8df) __C,
3500             (__mmask8) __U, __R);
3501             }
3502              
3503             extern __inline __m512
3504             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3505             _mm512_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3506             {
3507             return (__m512) __builtin_ia32_vfmsubps512_mask ((__v16sf) __A,
3508             (__v16sf) __B,
3509             (__v16sf) __C,
3510             (__mmask16) -1, __R);
3511             }
3512              
3513             extern __inline __m512
3514             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3515             _mm512_mask_fmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3516             __m512 __C, const int __R)
3517             {
3518             return (__m512) __builtin_ia32_vfmsubps512_mask ((__v16sf) __A,
3519             (__v16sf) __B,
3520             (__v16sf) __C,
3521             (__mmask16) __U, __R);
3522             }
3523              
3524             extern __inline __m512
3525             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3526             _mm512_mask3_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
3527             __mmask16 __U, const int __R)
3528             {
3529             return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3530             (__v16sf) __B,
3531             (__v16sf) __C,
3532             (__mmask16) __U, __R);
3533             }
3534              
3535             extern __inline __m512
3536             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3537             _mm512_maskz_fmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3538             __m512 __C, const int __R)
3539             {
3540             return (__m512) __builtin_ia32_vfmsubps512_maskz ((__v16sf) __A,
3541             (__v16sf) __B,
3542             (__v16sf) __C,
3543             (__mmask16) __U, __R);
3544             }
3545              
3546             extern __inline __m512d
3547             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3548             _mm512_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3549             {
3550             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3551             (__v8df) __B,
3552             (__v8df) __C,
3553             (__mmask8) -1, __R);
3554             }
3555              
3556             extern __inline __m512d
3557             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3558             _mm512_mask_fmaddsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3559             __m512d __C, const int __R)
3560             {
3561             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3562             (__v8df) __B,
3563             (__v8df) __C,
3564             (__mmask8) __U, __R);
3565             }
3566              
3567             extern __inline __m512d
3568             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3569             _mm512_mask3_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
3570             __mmask8 __U, const int __R)
3571             {
3572             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
3573             (__v8df) __B,
3574             (__v8df) __C,
3575             (__mmask8) __U, __R);
3576             }
3577              
3578             extern __inline __m512d
3579             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3580             _mm512_maskz_fmaddsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3581             __m512d __C, const int __R)
3582             {
3583             return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3584             (__v8df) __B,
3585             (__v8df) __C,
3586             (__mmask8) __U, __R);
3587             }
3588              
3589             extern __inline __m512
3590             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3591             _mm512_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3592             {
3593             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3594             (__v16sf) __B,
3595             (__v16sf) __C,
3596             (__mmask16) -1, __R);
3597             }
3598              
3599             extern __inline __m512
3600             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3601             _mm512_mask_fmaddsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3602             __m512 __C, const int __R)
3603             {
3604             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3605             (__v16sf) __B,
3606             (__v16sf) __C,
3607             (__mmask16) __U, __R);
3608             }
3609              
3610             extern __inline __m512
3611             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3612             _mm512_mask3_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
3613             __mmask16 __U, const int __R)
3614             {
3615             return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3616             (__v16sf) __B,
3617             (__v16sf) __C,
3618             (__mmask16) __U, __R);
3619             }
3620              
3621             extern __inline __m512
3622             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3623             _mm512_maskz_fmaddsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3624             __m512 __C, const int __R)
3625             {
3626             return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3627             (__v16sf) __B,
3628             (__v16sf) __C,
3629             (__mmask16) __U, __R);
3630             }
3631              
3632             extern __inline __m512d
3633             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3634             _mm512_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3635             {
3636             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3637             (__v8df) __B,
3638             -(__v8df) __C,
3639             (__mmask8) -1, __R);
3640             }
3641              
3642             extern __inline __m512d
3643             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3644             _mm512_mask_fmsubadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3645             __m512d __C, const int __R)
3646             {
3647             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3648             (__v8df) __B,
3649             -(__v8df) __C,
3650             (__mmask8) __U, __R);
3651             }
3652              
3653             extern __inline __m512d
3654             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3655             _mm512_mask3_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
3656             __mmask8 __U, const int __R)
3657             {
3658             return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3659             (__v8df) __B,
3660             (__v8df) __C,
3661             (__mmask8) __U, __R);
3662             }
3663              
3664             extern __inline __m512d
3665             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3666             _mm512_maskz_fmsubadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3667             __m512d __C, const int __R)
3668             {
3669             return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3670             (__v8df) __B,
3671             -(__v8df) __C,
3672             (__mmask8) __U, __R);
3673             }
3674              
3675             extern __inline __m512
3676             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3677             _mm512_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3678             {
3679             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3680             (__v16sf) __B,
3681             -(__v16sf) __C,
3682             (__mmask16) -1, __R);
3683             }
3684              
3685             extern __inline __m512
3686             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3687             _mm512_mask_fmsubadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3688             __m512 __C, const int __R)
3689             {
3690             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3691             (__v16sf) __B,
3692             -(__v16sf) __C,
3693             (__mmask16) __U, __R);
3694             }
3695              
3696             extern __inline __m512
3697             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3698             _mm512_mask3_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
3699             __mmask16 __U, const int __R)
3700             {
3701             return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3702             (__v16sf) __B,
3703             (__v16sf) __C,
3704             (__mmask16) __U, __R);
3705             }
3706              
3707             extern __inline __m512
3708             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3709             _mm512_maskz_fmsubadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3710             __m512 __C, const int __R)
3711             {
3712             return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3713             (__v16sf) __B,
3714             -(__v16sf) __C,
3715             (__mmask16) __U, __R);
3716             }
3717              
3718             extern __inline __m512d
3719             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3720             _mm512_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3721             {
3722             return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3723             (__v8df) __B,
3724             (__v8df) __C,
3725             (__mmask8) -1, __R);
3726             }
3727              
3728             extern __inline __m512d
3729             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3730             _mm512_mask_fnmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3731             __m512d __C, const int __R)
3732             {
3733             return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3734             (__v8df) __B,
3735             (__v8df) __C,
3736             (__mmask8) __U, __R);
3737             }
3738              
3739             extern __inline __m512d
3740             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3741             _mm512_mask3_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
3742             __mmask8 __U, const int __R)
3743             {
3744             return (__m512d) __builtin_ia32_vfnmaddpd512_mask3 ((__v8df) __A,
3745             (__v8df) __B,
3746             (__v8df) __C,
3747             (__mmask8) __U, __R);
3748             }
3749              
3750             extern __inline __m512d
3751             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3752             _mm512_maskz_fnmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3753             __m512d __C, const int __R)
3754             {
3755             return (__m512d) __builtin_ia32_vfnmaddpd512_maskz ((__v8df) __A,
3756             (__v8df) __B,
3757             (__v8df) __C,
3758             (__mmask8) __U, __R);
3759             }
3760              
3761             extern __inline __m512
3762             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3763             _mm512_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3764             {
3765             return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3766             (__v16sf) __B,
3767             (__v16sf) __C,
3768             (__mmask16) -1, __R);
3769             }
3770              
3771             extern __inline __m512
3772             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3773             _mm512_mask_fnmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3774             __m512 __C, const int __R)
3775             {
3776             return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3777             (__v16sf) __B,
3778             (__v16sf) __C,
3779             (__mmask16) __U, __R);
3780             }
3781              
3782             extern __inline __m512
3783             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3784             _mm512_mask3_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
3785             __mmask16 __U, const int __R)
3786             {
3787             return (__m512) __builtin_ia32_vfnmaddps512_mask3 ((__v16sf) __A,
3788             (__v16sf) __B,
3789             (__v16sf) __C,
3790             (__mmask16) __U, __R);
3791             }
3792              
3793             extern __inline __m512
3794             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3795             _mm512_maskz_fnmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3796             __m512 __C, const int __R)
3797             {
3798             return (__m512) __builtin_ia32_vfnmaddps512_maskz ((__v16sf) __A,
3799             (__v16sf) __B,
3800             (__v16sf) __C,
3801             (__mmask16) __U, __R);
3802             }
3803              
3804             extern __inline __m512d
3805             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3806             _mm512_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3807             {
3808             return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3809             (__v8df) __B,
3810             (__v8df) __C,
3811             (__mmask8) -1, __R);
3812             }
3813              
3814             extern __inline __m512d
3815             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3816             _mm512_mask_fnmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3817             __m512d __C, const int __R)
3818             {
3819             return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3820             (__v8df) __B,
3821             (__v8df) __C,
3822             (__mmask8) __U, __R);
3823             }
3824              
3825             extern __inline __m512d
3826             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3827             _mm512_mask3_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
3828             __mmask8 __U, const int __R)
3829             {
3830             return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3831             (__v8df) __B,
3832             (__v8df) __C,
3833             (__mmask8) __U, __R);
3834             }
3835              
3836             extern __inline __m512d
3837             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3838             _mm512_maskz_fnmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3839             __m512d __C, const int __R)
3840             {
3841             return (__m512d) __builtin_ia32_vfnmsubpd512_maskz ((__v8df) __A,
3842             (__v8df) __B,
3843             (__v8df) __C,
3844             (__mmask8) __U, __R);
3845             }
3846              
3847             extern __inline __m512
3848             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3849             _mm512_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3850             {
3851             return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3852             (__v16sf) __B,
3853             (__v16sf) __C,
3854             (__mmask16) -1, __R);
3855             }
3856              
3857             extern __inline __m512
3858             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3859             _mm512_mask_fnmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3860             __m512 __C, const int __R)
3861             {
3862             return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3863             (__v16sf) __B,
3864             (__v16sf) __C,
3865             (__mmask16) __U, __R);
3866             }
3867              
3868             extern __inline __m512
3869             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3870             _mm512_mask3_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
3871             __mmask16 __U, const int __R)
3872             {
3873             return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3874             (__v16sf) __B,
3875             (__v16sf) __C,
3876             (__mmask16) __U, __R);
3877             }
3878              
3879             extern __inline __m512
3880             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3881             _mm512_maskz_fnmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3882             __m512 __C, const int __R)
3883             {
3884             return (__m512) __builtin_ia32_vfnmsubps512_maskz ((__v16sf) __A,
3885             (__v16sf) __B,
3886             (__v16sf) __C,
3887             (__mmask16) __U, __R);
3888             }
3889             #else
3890             #define _mm512_fmadd_round_pd(A, B, C, R) \
3891             (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, -1, R)
3892              
3893             #define _mm512_mask_fmadd_round_pd(A, U, B, C, R) \
3894             (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R)
3895              
3896             #define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) \
3897             (__m512d)__builtin_ia32_vfmaddpd512_mask3(A, B, C, U, R)
3898              
3899             #define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) \
3900             (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, C, U, R)
3901              
3902             #define _mm512_fmadd_round_ps(A, B, C, R) \
3903             (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, -1, R)
3904              
3905             #define _mm512_mask_fmadd_round_ps(A, U, B, C, R) \
3906             (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, U, R)
3907              
3908             #define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) \
3909             (__m512)__builtin_ia32_vfmaddps512_mask3(A, B, C, U, R)
3910              
3911             #define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) \
3912             (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, C, U, R)
3913              
3914             #define _mm512_fmsub_round_pd(A, B, C, R) \
3915             (__m512d)__builtin_ia32_vfmsubpd512_mask(A, B, C, -1, R)
3916              
3917             #define _mm512_mask_fmsub_round_pd(A, U, B, C, R) \
3918             (__m512d)__builtin_ia32_vfmsubpd512_mask(A, B, C, U, R)
3919              
3920             #define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) \
3921             (__m512d)__builtin_ia32_vfmsubpd512_mask3(A, B, C, U, R)
3922              
3923             #define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) \
3924             (__m512d)__builtin_ia32_vfmsubpd512_maskz(A, B, C, U, R)
3925              
3926             #define _mm512_fmsub_round_ps(A, B, C, R) \
3927             (__m512)__builtin_ia32_vfmsubps512_mask(A, B, C, -1, R)
3928              
3929             #define _mm512_mask_fmsub_round_ps(A, U, B, C, R) \
3930             (__m512)__builtin_ia32_vfmsubps512_mask(A, B, C, U, R)
3931              
3932             #define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) \
3933             (__m512)__builtin_ia32_vfmsubps512_mask3(A, B, C, U, R)
3934              
3935             #define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) \
3936             (__m512)__builtin_ia32_vfmsubps512_maskz(A, B, C, U, R)
3937              
3938             #define _mm512_fmaddsub_round_pd(A, B, C, R) \
3939             (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R)
3940              
3941             #define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) \
3942             (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, U, R)
3943              
3944             #define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) \
3945             (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R)
3946              
3947             #define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) \
3948             (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, C, U, R)
3949              
3950             #define _mm512_fmaddsub_round_ps(A, B, C, R) \
3951             (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, -1, R)
3952              
3953             #define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) \
3954             (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, U, R)
3955              
3956             #define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) \
3957             (__m512)__builtin_ia32_vfmaddsubps512_mask3(A, B, C, U, R)
3958              
3959             #define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) \
3960             (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, C, U, R)
3961              
3962             #define _mm512_fmsubadd_round_pd(A, B, C, R) \
3963             (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), -1, R)
3964              
3965             #define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) \
3966             (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), U, R)
3967              
3968             #define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) \
3969             (__m512d)__builtin_ia32_vfmsubaddpd512_mask3(A, B, C, U, R)
3970              
3971             #define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) \
3972             (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, -(C), U, R)
3973              
3974             #define _mm512_fmsubadd_round_ps(A, B, C, R) \
3975             (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), -1, R)
3976              
3977             #define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) \
3978             (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), U, R)
3979              
3980             #define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) \
3981             (__m512)__builtin_ia32_vfmsubaddps512_mask3(A, B, C, U, R)
3982              
3983             #define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) \
3984             (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, -(C), U, R)
3985              
3986             #define _mm512_fnmadd_round_pd(A, B, C, R) \
3987             (__m512d)__builtin_ia32_vfnmaddpd512_mask(A, B, C, -1, R)
3988              
3989             #define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) \
3990             (__m512d)__builtin_ia32_vfnmaddpd512_mask(A, B, C, U, R)
3991              
3992             #define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) \
3993             (__m512d)__builtin_ia32_vfnmaddpd512_mask3(A, B, C, U, R)
3994              
3995             #define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) \
3996             (__m512d)__builtin_ia32_vfnmaddpd512_maskz(A, B, C, U, R)
3997              
3998             #define _mm512_fnmadd_round_ps(A, B, C, R) \
3999             (__m512)__builtin_ia32_vfnmaddps512_mask(A, B, C, -1, R)
4000              
4001             #define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) \
4002             (__m512)__builtin_ia32_vfnmaddps512_mask(A, B, C, U, R)
4003              
4004             #define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) \
4005             (__m512)__builtin_ia32_vfnmaddps512_mask3(A, B, C, U, R)
4006              
4007             #define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) \
4008             (__m512)__builtin_ia32_vfnmaddps512_maskz(A, B, C, U, R)
4009              
4010             #define _mm512_fnmsub_round_pd(A, B, C, R) \
4011             (__m512d)__builtin_ia32_vfnmsubpd512_mask(A, B, C, -1, R)
4012              
4013             #define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) \
4014             (__m512d)__builtin_ia32_vfnmsubpd512_mask(A, B, C, U, R)
4015              
4016             #define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) \
4017             (__m512d)__builtin_ia32_vfnmsubpd512_mask3(A, B, C, U, R)
4018              
4019             #define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) \
4020             (__m512d)__builtin_ia32_vfnmsubpd512_maskz(A, B, C, U, R)
4021              
4022             #define _mm512_fnmsub_round_ps(A, B, C, R) \
4023             (__m512)__builtin_ia32_vfnmsubps512_mask(A, B, C, -1, R)
4024              
4025             #define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) \
4026             (__m512)__builtin_ia32_vfnmsubps512_mask(A, B, C, U, R)
4027              
4028             #define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) \
4029             (__m512)__builtin_ia32_vfnmsubps512_mask3(A, B, C, U, R)
4030              
4031             #define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) \
4032             (__m512)__builtin_ia32_vfnmsubps512_maskz(A, B, C, U, R)
4033             #endif
4034              
4035             extern __inline __m512i
4036             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4037             _mm512_abs_epi64 (__m512i __A)
4038             {
4039             return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
4040             (__v8di)
4041             _mm512_undefined_epi32 (),
4042             (__mmask8) -1);
4043             }
4044              
4045             extern __inline __m512i
4046             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4047             _mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
4048             {
4049             return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
4050             (__v8di) __W,
4051             (__mmask8) __U);
4052             }
4053              
4054             extern __inline __m512i
4055             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4056             _mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
4057             {
4058             return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
4059             (__v8di)
4060             _mm512_setzero_si512 (),
4061             (__mmask8) __U);
4062             }
4063              
4064             extern __inline __m512i
4065             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4066             _mm512_abs_epi32 (__m512i __A)
4067             {
4068             return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
4069             (__v16si)
4070             _mm512_undefined_epi32 (),
4071             (__mmask16) -1);
4072             }
4073              
4074             extern __inline __m512i
4075             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4076             _mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
4077             {
4078             return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
4079             (__v16si) __W,
4080             (__mmask16) __U);
4081             }
4082              
4083             extern __inline __m512i
4084             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4085             _mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
4086             {
4087             return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
4088             (__v16si)
4089             _mm512_setzero_si512 (),
4090             (__mmask16) __U);
4091             }
4092              
4093             extern __inline __m512
4094             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4095             _mm512_broadcastss_ps (__m128 __A)
4096             {
4097             return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
4098             (__v16sf)
4099             _mm512_undefined_ps (),
4100             (__mmask16) -1);
4101             }
4102              
4103             extern __inline __m512
4104             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4105             _mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
4106             {
4107             return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
4108             (__v16sf) __O, __M);
4109             }
4110              
4111             extern __inline __m512
4112             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4113             _mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
4114             {
4115             return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
4116             (__v16sf)
4117             _mm512_setzero_ps (),
4118             __M);
4119             }
4120              
4121             extern __inline __m512d
4122             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4123             _mm512_broadcastsd_pd (__m128d __A)
4124             {
4125             return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
4126             (__v8df)
4127             _mm512_undefined_pd (),
4128             (__mmask8) -1);
4129             }
4130              
4131             extern __inline __m512d
4132             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4133             _mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
4134             {
4135             return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
4136             (__v8df) __O, __M);
4137             }
4138              
4139             extern __inline __m512d
4140             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4141             _mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
4142             {
4143             return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
4144             (__v8df)
4145             _mm512_setzero_pd (),
4146             __M);
4147             }
4148              
4149             extern __inline __m512i
4150             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4151             _mm512_broadcastd_epi32 (__m128i __A)
4152             {
4153             return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
4154             (__v16si)
4155             _mm512_undefined_epi32 (),
4156             (__mmask16) -1);
4157             }
4158              
4159             extern __inline __m512i
4160             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4161             _mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
4162             {
4163             return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
4164             (__v16si) __O, __M);
4165             }
4166              
4167             extern __inline __m512i
4168             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4169             _mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
4170             {
4171             return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
4172             (__v16si)
4173             _mm512_setzero_si512 (),
4174             __M);
4175             }
4176              
4177             extern __inline __m512i
4178             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4179             _mm512_set1_epi32 (int __A)
4180             {
4181 0           return (__m512i)(__v16si)
4182 0           { __A, __A, __A, __A, __A, __A, __A, __A,
4183             __A, __A, __A, __A, __A, __A, __A, __A };
4184             }
4185              
4186             extern __inline __m512i
4187             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4188             _mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
4189             {
4190             return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
4191             __M);
4192             }
4193              
4194             extern __inline __m512i
4195             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4196             _mm512_maskz_set1_epi32 (__mmask16 __M, int __A)
4197             {
4198             return (__m512i)
4199             __builtin_ia32_pbroadcastd512_gpr_mask (__A,
4200             (__v16si) _mm512_setzero_si512 (),
4201             __M);
4202             }
4203              
4204             extern __inline __m512i
4205             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4206             _mm512_broadcastq_epi64 (__m128i __A)
4207             {
4208             return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
4209             (__v8di)
4210             _mm512_undefined_epi32 (),
4211             (__mmask8) -1);
4212             }
4213              
4214             extern __inline __m512i
4215             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4216             _mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
4217             {
4218             return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
4219             (__v8di) __O, __M);
4220             }
4221              
4222             extern __inline __m512i
4223             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4224             _mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
4225             {
4226             return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
4227             (__v8di)
4228             _mm512_setzero_si512 (),
4229             __M);
4230             }
4231              
4232             extern __inline __m512i
4233             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4234             _mm512_set1_epi64 (long long __A)
4235             {
4236             return (__m512i)(__v8di) { __A, __A, __A, __A, __A, __A, __A, __A };
4237             }
4238              
4239             extern __inline __m512i
4240             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4241             _mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
4242             {
4243             return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
4244             __M);
4245             }
4246              
4247             extern __inline __m512i
4248             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4249             _mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
4250             {
4251             return (__m512i)
4252             __builtin_ia32_pbroadcastq512_gpr_mask (__A,
4253             (__v8di) _mm512_setzero_si512 (),
4254             __M);
4255             }
4256              
4257             extern __inline __m512
4258             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4259             _mm512_broadcast_f32x4 (__m128 __A)
4260             {
4261             return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
4262             (__v16sf)
4263             _mm512_undefined_ps (),
4264             (__mmask16) -1);
4265             }
4266              
4267             extern __inline __m512
4268             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4269             _mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
4270             {
4271             return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
4272             (__v16sf) __O,
4273             __M);
4274             }
4275              
4276             extern __inline __m512
4277             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4278             _mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
4279             {
4280             return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
4281             (__v16sf)
4282             _mm512_setzero_ps (),
4283             __M);
4284             }
4285              
4286             extern __inline __m512i
4287             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4288             _mm512_broadcast_i32x4 (__m128i __A)
4289             {
4290             return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
4291             (__v16si)
4292             _mm512_undefined_epi32 (),
4293             (__mmask16) -1);
4294             }
4295              
4296             extern __inline __m512i
4297             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4298             _mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
4299             {
4300             return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
4301             (__v16si) __O,
4302             __M);
4303             }
4304              
4305             extern __inline __m512i
4306             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4307             _mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
4308             {
4309             return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
4310             (__v16si)
4311             _mm512_setzero_si512 (),
4312             __M);
4313             }
4314              
4315             extern __inline __m512d
4316             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4317             _mm512_broadcast_f64x4 (__m256d __A)
4318             {
4319             return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
4320             (__v8df)
4321             _mm512_undefined_pd (),
4322             (__mmask8) -1);
4323             }
4324              
4325             extern __inline __m512d
4326             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4327             _mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
4328             {
4329             return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
4330             (__v8df) __O,
4331             __M);
4332             }
4333              
4334             extern __inline __m512d
4335             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4336             _mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
4337             {
4338             return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
4339             (__v8df)
4340             _mm512_setzero_pd (),
4341             __M);
4342             }
4343              
4344             extern __inline __m512i
4345             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4346             _mm512_broadcast_i64x4 (__m256i __A)
4347             {
4348             return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
4349             (__v8di)
4350             _mm512_undefined_epi32 (),
4351             (__mmask8) -1);
4352             }
4353              
4354             extern __inline __m512i
4355             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4356             _mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
4357             {
4358             return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
4359             (__v8di) __O,
4360             __M);
4361             }
4362              
4363             extern __inline __m512i
4364             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4365             _mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
4366             {
4367             return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
4368             (__v8di)
4369             _mm512_setzero_si512 (),
4370             __M);
4371             }
4372              
4373             typedef enum
4374             {
4375             _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
4376             _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
4377             _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
4378             _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
4379             _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
4380             _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
4381             _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
4382             _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
4383             _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
4384             _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
4385             _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
4386             _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
4387             _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
4388             _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
4389             _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
4390             _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
4391             _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
4392             _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
4393             _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
4394             _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
4395             _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
4396             _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
4397             _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
4398             _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
4399             _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
4400             _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
4401             _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
4402             _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
4403             _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
4404             _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
4405             _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
4406             _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
4407             _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
4408             _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
4409             _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
4410             _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
4411             _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
4412             _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
4413             _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
4414             _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
4415             _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
4416             _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
4417             _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
4418             _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
4419             _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
4420             _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
4421             _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
4422             _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
4423             _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
4424             _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
4425             _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
4426             _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
4427             _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
4428             _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
4429             _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
4430             _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
4431             _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
4432             _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
4433             _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
4434             _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
4435             _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
4436             _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
4437             _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
4438             _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
4439             _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
4440             _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
4441             _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
4442             _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
4443             _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
4444             _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
4445             _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
4446             _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
4447             _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
4448             _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
4449             _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
4450             _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
4451             _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
4452             _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
4453             _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
4454             _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
4455             _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
4456             _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
4457             _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
4458             _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
4459             _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
4460             _MM_PERM_DDDD = 0xFF
4461             } _MM_PERM_ENUM;
4462              
4463             #ifdef __OPTIMIZE__
4464             extern __inline __m512i
4465             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4466             _mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
4467             {
4468             return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
4469             __mask,
4470             (__v16si)
4471             _mm512_undefined_epi32 (),
4472             (__mmask16) -1);
4473             }
4474              
4475             extern __inline __m512i
4476             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4477             _mm512_mask_shuffle_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
4478             _MM_PERM_ENUM __mask)
4479             {
4480             return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
4481             __mask,
4482             (__v16si) __W,
4483             (__mmask16) __U);
4484             }
4485              
4486             extern __inline __m512i
4487             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4488             _mm512_maskz_shuffle_epi32 (__mmask16 __U, __m512i __A, _MM_PERM_ENUM __mask)
4489             {
4490             return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
4491             __mask,
4492             (__v16si)
4493             _mm512_setzero_si512 (),
4494             (__mmask16) __U);
4495             }
4496              
4497             extern __inline __m512i
4498             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4499             _mm512_shuffle_i64x2 (__m512i __A, __m512i __B, const int __imm)
4500             {
4501             return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
4502             (__v8di) __B, __imm,
4503             (__v8di)
4504             _mm512_undefined_epi32 (),
4505             (__mmask8) -1);
4506             }
4507              
4508             extern __inline __m512i
4509             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4510             _mm512_mask_shuffle_i64x2 (__m512i __W, __mmask8 __U, __m512i __A,
4511             __m512i __B, const int __imm)
4512             {
4513             return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
4514             (__v8di) __B, __imm,
4515             (__v8di) __W,
4516             (__mmask8) __U);
4517             }
4518              
4519             extern __inline __m512i
4520             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4521             _mm512_maskz_shuffle_i64x2 (__mmask8 __U, __m512i __A, __m512i __B,
4522             const int __imm)
4523             {
4524             return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
4525             (__v8di) __B, __imm,
4526             (__v8di)
4527             _mm512_setzero_si512 (),
4528             (__mmask8) __U);
4529             }
4530              
4531             extern __inline __m512i
4532             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4533             _mm512_shuffle_i32x4 (__m512i __A, __m512i __B, const int __imm)
4534             {
4535             return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
4536             (__v16si) __B,
4537             __imm,
4538             (__v16si)
4539             _mm512_undefined_epi32 (),
4540             (__mmask16) -1);
4541             }
4542              
4543             extern __inline __m512i
4544             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4545             _mm512_mask_shuffle_i32x4 (__m512i __W, __mmask16 __U, __m512i __A,
4546             __m512i __B, const int __imm)
4547             {
4548             return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
4549             (__v16si) __B,
4550             __imm,
4551             (__v16si) __W,
4552             (__mmask16) __U);
4553             }
4554              
4555             extern __inline __m512i
4556             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4557             _mm512_maskz_shuffle_i32x4 (__mmask16 __U, __m512i __A, __m512i __B,
4558             const int __imm)
4559             {
4560             return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
4561             (__v16si) __B,
4562             __imm,
4563             (__v16si)
4564             _mm512_setzero_si512 (),
4565             (__mmask16) __U);
4566             }
4567              
4568             extern __inline __m512d
4569             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4570             _mm512_shuffle_f64x2 (__m512d __A, __m512d __B, const int __imm)
4571             {
4572             return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
4573             (__v8df) __B, __imm,
4574             (__v8df)
4575             _mm512_undefined_pd (),
4576             (__mmask8) -1);
4577             }
4578              
4579             extern __inline __m512d
4580             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4581             _mm512_mask_shuffle_f64x2 (__m512d __W, __mmask8 __U, __m512d __A,
4582             __m512d __B, const int __imm)
4583             {
4584             return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
4585             (__v8df) __B, __imm,
4586             (__v8df) __W,
4587             (__mmask8) __U);
4588             }
4589              
4590             extern __inline __m512d
4591             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4592             _mm512_maskz_shuffle_f64x2 (__mmask8 __U, __m512d __A, __m512d __B,
4593             const int __imm)
4594             {
4595             return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
4596             (__v8df) __B, __imm,
4597             (__v8df)
4598             _mm512_setzero_pd (),
4599             (__mmask8) __U);
4600             }
4601              
4602             extern __inline __m512
4603             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4604             _mm512_shuffle_f32x4 (__m512 __A, __m512 __B, const int __imm)
4605             {
4606             return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
4607             (__v16sf) __B, __imm,
4608             (__v16sf)
4609             _mm512_undefined_ps (),
4610             (__mmask16) -1);
4611             }
4612              
4613             extern __inline __m512
4614             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4615             _mm512_mask_shuffle_f32x4 (__m512 __W, __mmask16 __U, __m512 __A,
4616             __m512 __B, const int __imm)
4617             {
4618             return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
4619             (__v16sf) __B, __imm,
4620             (__v16sf) __W,
4621             (__mmask16) __U);
4622             }
4623              
4624             extern __inline __m512
4625             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4626             _mm512_maskz_shuffle_f32x4 (__mmask16 __U, __m512 __A, __m512 __B,
4627             const int __imm)
4628             {
4629             return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
4630             (__v16sf) __B, __imm,
4631             (__v16sf)
4632             _mm512_setzero_ps (),
4633             (__mmask16) __U);
4634             }
4635              
4636             #else
4637             #define _mm512_shuffle_epi32(X, C) \
4638             ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
4639             (__v16si)(__m512i)_mm512_undefined_epi32 (),\
4640             (__mmask16)-1))
4641              
4642             #define _mm512_mask_shuffle_epi32(W, U, X, C) \
4643             ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
4644             (__v16si)(__m512i)(W),\
4645             (__mmask16)(U)))
4646              
4647             #define _mm512_maskz_shuffle_epi32(U, X, C) \
4648             ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
4649             (__v16si)(__m512i)_mm512_setzero_si512 (),\
4650             (__mmask16)(U)))
4651              
4652             #define _mm512_shuffle_i64x2(X, Y, C) \
4653             ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \
4654             (__v8di)(__m512i)(Y), (int)(C),\
4655             (__v8di)(__m512i)_mm512_undefined_epi32 (),\
4656             (__mmask8)-1))
4657              
4658             #define _mm512_mask_shuffle_i64x2(W, U, X, Y, C) \
4659             ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \
4660             (__v8di)(__m512i)(Y), (int)(C),\
4661             (__v8di)(__m512i)(W),\
4662             (__mmask8)(U)))
4663              
4664             #define _mm512_maskz_shuffle_i64x2(U, X, Y, C) \
4665             ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \
4666             (__v8di)(__m512i)(Y), (int)(C),\
4667             (__v8di)(__m512i)_mm512_setzero_si512 (),\
4668             (__mmask8)(U)))
4669              
4670             #define _mm512_shuffle_i32x4(X, Y, C) \
4671             ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \
4672             (__v16si)(__m512i)(Y), (int)(C),\
4673             (__v16si)(__m512i)_mm512_undefined_epi32 (),\
4674             (__mmask16)-1))
4675              
4676             #define _mm512_mask_shuffle_i32x4(W, U, X, Y, C) \
4677             ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \
4678             (__v16si)(__m512i)(Y), (int)(C),\
4679             (__v16si)(__m512i)(W),\
4680             (__mmask16)(U)))
4681              
4682             #define _mm512_maskz_shuffle_i32x4(U, X, Y, C) \
4683             ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \
4684             (__v16si)(__m512i)(Y), (int)(C),\
4685             (__v16si)(__m512i)_mm512_setzero_si512 (),\
4686             (__mmask16)(U)))
4687              
4688             #define _mm512_shuffle_f64x2(X, Y, C) \
4689             ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \
4690             (__v8df)(__m512d)(Y), (int)(C),\
4691             (__v8df)(__m512d)_mm512_undefined_pd(),\
4692             (__mmask8)-1))
4693              
4694             #define _mm512_mask_shuffle_f64x2(W, U, X, Y, C) \
4695             ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \
4696             (__v8df)(__m512d)(Y), (int)(C),\
4697             (__v8df)(__m512d)(W),\
4698             (__mmask8)(U)))
4699              
4700             #define _mm512_maskz_shuffle_f64x2(U, X, Y, C) \
4701             ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \
4702             (__v8df)(__m512d)(Y), (int)(C),\
4703             (__v8df)(__m512d)_mm512_setzero_pd(),\
4704             (__mmask8)(U)))
4705              
4706             #define _mm512_shuffle_f32x4(X, Y, C) \
4707             ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \
4708             (__v16sf)(__m512)(Y), (int)(C),\
4709             (__v16sf)(__m512)_mm512_undefined_ps(),\
4710             (__mmask16)-1))
4711              
4712             #define _mm512_mask_shuffle_f32x4(W, U, X, Y, C) \
4713             ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \
4714             (__v16sf)(__m512)(Y), (int)(C),\
4715             (__v16sf)(__m512)(W),\
4716             (__mmask16)(U)))
4717              
4718             #define _mm512_maskz_shuffle_f32x4(U, X, Y, C) \
4719             ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \
4720             (__v16sf)(__m512)(Y), (int)(C),\
4721             (__v16sf)(__m512)_mm512_setzero_ps(),\
4722             (__mmask16)(U)))
4723             #endif
4724              
4725             extern __inline __m512i
4726             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4727             _mm512_rolv_epi32 (__m512i __A, __m512i __B)
4728             {
4729             return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4730             (__v16si) __B,
4731             (__v16si)
4732             _mm512_undefined_epi32 (),
4733             (__mmask16) -1);
4734             }
4735              
4736             extern __inline __m512i
4737             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4738             _mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4739             {
4740             return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4741             (__v16si) __B,
4742             (__v16si) __W,
4743             (__mmask16) __U);
4744             }
4745              
4746             extern __inline __m512i
4747             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4748             _mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4749             {
4750             return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4751             (__v16si) __B,
4752             (__v16si)
4753             _mm512_setzero_si512 (),
4754             (__mmask16) __U);
4755             }
4756              
4757             extern __inline __m512i
4758             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4759             _mm512_rorv_epi32 (__m512i __A, __m512i __B)
4760             {
4761             return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4762             (__v16si) __B,
4763             (__v16si)
4764             _mm512_undefined_epi32 (),
4765             (__mmask16) -1);
4766             }
4767              
4768             extern __inline __m512i
4769             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4770             _mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4771             {
4772             return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4773             (__v16si) __B,
4774             (__v16si) __W,
4775             (__mmask16) __U);
4776             }
4777              
4778             extern __inline __m512i
4779             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4780             _mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4781             {
4782             return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4783             (__v16si) __B,
4784             (__v16si)
4785             _mm512_setzero_si512 (),
4786             (__mmask16) __U);
4787             }
4788              
4789             extern __inline __m512i
4790             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4791             _mm512_rolv_epi64 (__m512i __A, __m512i __B)
4792             {
4793             return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4794             (__v8di) __B,
4795             (__v8di)
4796             _mm512_undefined_epi32 (),
4797             (__mmask8) -1);
4798             }
4799              
4800             extern __inline __m512i
4801             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4802             _mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4803             {
4804             return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4805             (__v8di) __B,
4806             (__v8di) __W,
4807             (__mmask8) __U);
4808             }
4809              
4810             extern __inline __m512i
4811             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4812             _mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4813             {
4814             return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4815             (__v8di) __B,
4816             (__v8di)
4817             _mm512_setzero_si512 (),
4818             (__mmask8) __U);
4819             }
4820              
4821             extern __inline __m512i
4822             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4823             _mm512_rorv_epi64 (__m512i __A, __m512i __B)
4824             {
4825             return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4826             (__v8di) __B,
4827             (__v8di)
4828             _mm512_undefined_epi32 (),
4829             (__mmask8) -1);
4830             }
4831              
4832             extern __inline __m512i
4833             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4834             _mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4835             {
4836             return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4837             (__v8di) __B,
4838             (__v8di) __W,
4839             (__mmask8) __U);
4840             }
4841              
4842             extern __inline __m512i
4843             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4844             _mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4845             {
4846             return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4847             (__v8di) __B,
4848             (__v8di)
4849             _mm512_setzero_si512 (),
4850             (__mmask8) __U);
4851             }
4852              
4853             #ifdef __OPTIMIZE__
4854             extern __inline __m256i
4855             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4856             _mm512_cvtt_roundpd_epi32 (__m512d __A, const int __R)
4857             {
4858             return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
4859             (__v8si)
4860             _mm256_undefined_si256 (),
4861             (__mmask8) -1, __R);
4862             }
4863              
4864             extern __inline __m256i
4865             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4866             _mm512_mask_cvtt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A,
4867             const int __R)
4868             {
4869             return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
4870             (__v8si) __W,
4871             (__mmask8) __U, __R);
4872             }
4873              
4874             extern __inline __m256i
4875             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4876             _mm512_maskz_cvtt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R)
4877             {
4878             return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
4879             (__v8si)
4880             _mm256_setzero_si256 (),
4881             (__mmask8) __U, __R);
4882             }
4883              
4884             extern __inline __m256i
4885             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4886             _mm512_cvtt_roundpd_epu32 (__m512d __A, const int __R)
4887             {
4888             return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
4889             (__v8si)
4890             _mm256_undefined_si256 (),
4891             (__mmask8) -1, __R);
4892             }
4893              
4894             extern __inline __m256i
4895             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4896             _mm512_mask_cvtt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A,
4897             const int __R)
4898             {
4899             return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
4900             (__v8si) __W,
4901             (__mmask8) __U, __R);
4902             }
4903              
4904             extern __inline __m256i
4905             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4906             _mm512_maskz_cvtt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R)
4907             {
4908             return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
4909             (__v8si)
4910             _mm256_setzero_si256 (),
4911             (__mmask8) __U, __R);
4912             }
4913             #else
4914             #define _mm512_cvtt_roundpd_epi32(A, B) \
4915             ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
4916              
4917             #define _mm512_mask_cvtt_roundpd_epi32(W, U, A, B) \
4918             ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)(W), U, B))
4919              
4920             #define _mm512_maskz_cvtt_roundpd_epi32(U, A, B) \
4921             ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
4922              
4923             #define _mm512_cvtt_roundpd_epu32(A, B) \
4924             ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
4925              
4926             #define _mm512_mask_cvtt_roundpd_epu32(W, U, A, B) \
4927             ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)(W), U, B))
4928              
4929             #define _mm512_maskz_cvtt_roundpd_epu32(U, A, B) \
4930             ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
4931             #endif
4932              
4933             #ifdef __OPTIMIZE__
4934             extern __inline __m256i
4935             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4936             _mm512_cvt_roundpd_epi32 (__m512d __A, const int __R)
4937             {
4938             return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4939             (__v8si)
4940             _mm256_undefined_si256 (),
4941             (__mmask8) -1, __R);
4942             }
4943              
4944             extern __inline __m256i
4945             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4946             _mm512_mask_cvt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A,
4947             const int __R)
4948             {
4949             return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4950             (__v8si) __W,
4951             (__mmask8) __U, __R);
4952             }
4953              
4954             extern __inline __m256i
4955             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4956             _mm512_maskz_cvt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R)
4957             {
4958             return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4959             (__v8si)
4960             _mm256_setzero_si256 (),
4961             (__mmask8) __U, __R);
4962             }
4963              
4964             extern __inline __m256i
4965             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4966             _mm512_cvt_roundpd_epu32 (__m512d __A, const int __R)
4967             {
4968             return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4969             (__v8si)
4970             _mm256_undefined_si256 (),
4971             (__mmask8) -1, __R);
4972             }
4973              
4974             extern __inline __m256i
4975             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4976             _mm512_mask_cvt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A,
4977             const int __R)
4978             {
4979             return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4980             (__v8si) __W,
4981             (__mmask8) __U, __R);
4982             }
4983              
4984             extern __inline __m256i
4985             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4986             _mm512_maskz_cvt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R)
4987             {
4988             return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4989             (__v8si)
4990             _mm256_setzero_si256 (),
4991             (__mmask8) __U, __R);
4992             }
4993             #else
4994             #define _mm512_cvt_roundpd_epi32(A, B) \
4995             ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
4996              
4997             #define _mm512_mask_cvt_roundpd_epi32(W, U, A, B) \
4998             ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)(W), U, B))
4999              
5000             #define _mm512_maskz_cvt_roundpd_epi32(U, A, B) \
5001             ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
5002              
5003             #define _mm512_cvt_roundpd_epu32(A, B) \
5004             ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
5005              
5006             #define _mm512_mask_cvt_roundpd_epu32(W, U, A, B) \
5007             ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)(W), U, B))
5008              
5009             #define _mm512_maskz_cvt_roundpd_epu32(U, A, B) \
5010             ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
5011             #endif
5012              
5013             #ifdef __OPTIMIZE__
5014             extern __inline __m512i
5015             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5016             _mm512_cvtt_roundps_epi32 (__m512 __A, const int __R)
5017             {
5018             return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
5019             (__v16si)
5020             _mm512_undefined_epi32 (),
5021             (__mmask16) -1, __R);
5022             }
5023              
5024             extern __inline __m512i
5025             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5026             _mm512_mask_cvtt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A,
5027             const int __R)
5028             {
5029             return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
5030             (__v16si) __W,
5031             (__mmask16) __U, __R);
5032             }
5033              
5034             extern __inline __m512i
5035             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5036             _mm512_maskz_cvtt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R)
5037             {
5038             return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
5039             (__v16si)
5040             _mm512_setzero_si512 (),
5041             (__mmask16) __U, __R);
5042             }
5043              
5044             extern __inline __m512i
5045             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5046             _mm512_cvtt_roundps_epu32 (__m512 __A, const int __R)
5047             {
5048             return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
5049             (__v16si)
5050             _mm512_undefined_epi32 (),
5051             (__mmask16) -1, __R);
5052             }
5053              
5054             extern __inline __m512i
5055             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5056             _mm512_mask_cvtt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A,
5057             const int __R)
5058             {
5059             return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
5060             (__v16si) __W,
5061             (__mmask16) __U, __R);
5062             }
5063              
5064             extern __inline __m512i
5065             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5066             _mm512_maskz_cvtt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R)
5067             {
5068             return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
5069             (__v16si)
5070             _mm512_setzero_si512 (),
5071             (__mmask16) __U, __R);
5072             }
5073             #else
5074             #define _mm512_cvtt_roundps_epi32(A, B) \
5075             ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
5076              
5077             #define _mm512_mask_cvtt_roundps_epi32(W, U, A, B) \
5078             ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B))
5079              
5080             #define _mm512_maskz_cvtt_roundps_epi32(U, A, B) \
5081             ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
5082              
5083             #define _mm512_cvtt_roundps_epu32(A, B) \
5084             ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
5085              
5086             #define _mm512_mask_cvtt_roundps_epu32(W, U, A, B) \
5087             ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B))
5088              
5089             #define _mm512_maskz_cvtt_roundps_epu32(U, A, B) \
5090             ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
5091             #endif
5092              
5093             #ifdef __OPTIMIZE__
5094             extern __inline __m512i
5095             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5096             _mm512_cvt_roundps_epi32 (__m512 __A, const int __R)
5097             {
5098             return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
5099             (__v16si)
5100             _mm512_undefined_epi32 (),
5101             (__mmask16) -1, __R);
5102             }
5103              
5104             extern __inline __m512i
5105             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5106             _mm512_mask_cvt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A,
5107             const int __R)
5108             {
5109             return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
5110             (__v16si) __W,
5111             (__mmask16) __U, __R);
5112             }
5113              
5114             extern __inline __m512i
5115             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5116             _mm512_maskz_cvt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R)
5117             {
5118             return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
5119             (__v16si)
5120             _mm512_setzero_si512 (),
5121             (__mmask16) __U, __R);
5122             }
5123              
5124             extern __inline __m512i
5125             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5126             _mm512_cvt_roundps_epu32 (__m512 __A, const int __R)
5127             {
5128             return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
5129             (__v16si)
5130             _mm512_undefined_epi32 (),
5131             (__mmask16) -1, __R);
5132             }
5133              
5134             extern __inline __m512i
5135             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5136             _mm512_mask_cvt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A,
5137             const int __R)
5138             {
5139             return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
5140             (__v16si) __W,
5141             (__mmask16) __U, __R);
5142             }
5143              
5144             extern __inline __m512i
5145             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5146             _mm512_maskz_cvt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R)
5147             {
5148             return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
5149             (__v16si)
5150             _mm512_setzero_si512 (),
5151             (__mmask16) __U, __R);
5152             }
5153             #else
5154             #define _mm512_cvt_roundps_epi32(A, B) \
5155             ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
5156              
5157             #define _mm512_mask_cvt_roundps_epi32(W, U, A, B) \
5158             ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B))
5159              
5160             #define _mm512_maskz_cvt_roundps_epi32(U, A, B) \
5161             ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
5162              
5163             #define _mm512_cvt_roundps_epu32(A, B) \
5164             ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
5165              
5166             #define _mm512_mask_cvt_roundps_epu32(W, U, A, B) \
5167             ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B))
5168              
5169             #define _mm512_maskz_cvt_roundps_epu32(U, A, B) \
5170             ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
5171             #endif
5172              
5173             extern __inline __m128d
5174             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5175             _mm_cvtu32_sd (__m128d __A, unsigned __B)
5176             {
5177             return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
5178             }
5179              
5180             #ifdef __x86_64__
5181             #ifdef __OPTIMIZE__
5182             extern __inline __m128d
5183             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5184             _mm_cvt_roundu64_sd (__m128d __A, unsigned long long __B, const int __R)
5185             {
5186             return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B, __R);
5187             }
5188              
5189             extern __inline __m128d
5190             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5191             _mm_cvt_roundi64_sd (__m128d __A, long long __B, const int __R)
5192             {
5193             return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R);
5194             }
5195              
5196             extern __inline __m128d
5197             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5198             _mm_cvt_roundsi64_sd (__m128d __A, long long __B, const int __R)
5199             {
5200             return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R);
5201             }
5202             #else
5203             #define _mm_cvt_roundu64_sd(A, B, C) \
5204             (__m128d)__builtin_ia32_cvtusi2sd64(A, B, C)
5205              
5206             #define _mm_cvt_roundi64_sd(A, B, C) \
5207             (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C)
5208              
5209             #define _mm_cvt_roundsi64_sd(A, B, C) \
5210             (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C)
5211             #endif
5212              
5213             #endif
5214              
5215             #ifdef __OPTIMIZE__
5216             extern __inline __m128
5217             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5218             _mm_cvt_roundu32_ss (__m128 __A, unsigned __B, const int __R)
5219             {
5220             return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B, __R);
5221             }
5222              
5223             extern __inline __m128
5224             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5225             _mm_cvt_roundsi32_ss (__m128 __A, int __B, const int __R)
5226             {
5227             return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R);
5228             }
5229              
5230             extern __inline __m128
5231             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5232             _mm_cvt_roundi32_ss (__m128 __A, int __B, const int __R)
5233             {
5234             return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R);
5235             }
5236             #else
5237             #define _mm_cvt_roundu32_ss(A, B, C) \
5238             (__m128)__builtin_ia32_cvtusi2ss32(A, B, C)
5239              
5240             #define _mm_cvt_roundi32_ss(A, B, C) \
5241             (__m128)__builtin_ia32_cvtsi2ss32(A, B, C)
5242              
5243             #define _mm_cvt_roundsi32_ss(A, B, C) \
5244             (__m128)__builtin_ia32_cvtsi2ss32(A, B, C)
5245             #endif
5246              
5247             #ifdef __x86_64__
5248             #ifdef __OPTIMIZE__
5249             extern __inline __m128
5250             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5251             _mm_cvt_roundu64_ss (__m128 __A, unsigned long long __B, const int __R)
5252             {
5253             return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B, __R);
5254             }
5255              
5256             extern __inline __m128
5257             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5258             _mm_cvt_roundsi64_ss (__m128 __A, long long __B, const int __R)
5259             {
5260             return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R);
5261             }
5262              
5263             extern __inline __m128
5264             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5265             _mm_cvt_roundi64_ss (__m128 __A, long long __B, const int __R)
5266             {
5267             return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R);
5268             }
5269             #else
5270             #define _mm_cvt_roundu64_ss(A, B, C) \
5271             (__m128)__builtin_ia32_cvtusi2ss64(A, B, C)
5272              
5273             #define _mm_cvt_roundi64_ss(A, B, C) \
5274             (__m128)__builtin_ia32_cvtsi2ss64(A, B, C)
5275              
5276             #define _mm_cvt_roundsi64_ss(A, B, C) \
5277             (__m128)__builtin_ia32_cvtsi2ss64(A, B, C)
5278             #endif
5279              
5280             #endif
5281              
5282             extern __inline __m128i
5283             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5284             _mm512_cvtepi32_epi8 (__m512i __A)
5285             {
5286             return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
5287             (__v16qi)
5288             _mm_undefined_si128 (),
5289             (__mmask16) -1);
5290             }
5291              
5292             extern __inline void
5293             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5294             _mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5295             {
5296             __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5297             }
5298              
5299             extern __inline __m128i
5300             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5301             _mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5302             {
5303             return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
5304             (__v16qi) __O, __M);
5305             }
5306              
5307             extern __inline __m128i
5308             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5309             _mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
5310             {
5311             return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
5312             (__v16qi)
5313             _mm_setzero_si128 (),
5314             __M);
5315             }
5316              
5317             extern __inline __m128i
5318             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5319             _mm512_cvtsepi32_epi8 (__m512i __A)
5320             {
5321             return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5322             (__v16qi)
5323             _mm_undefined_si128 (),
5324             (__mmask16) -1);
5325             }
5326              
5327             extern __inline void
5328             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5329             _mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5330             {
5331             __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5332             }
5333              
5334             extern __inline __m128i
5335             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5336             _mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5337             {
5338             return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5339             (__v16qi) __O, __M);
5340             }
5341              
5342             extern __inline __m128i
5343             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5344             _mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
5345             {
5346             return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5347             (__v16qi)
5348             _mm_setzero_si128 (),
5349             __M);
5350             }
5351              
5352             extern __inline __m128i
5353             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5354             _mm512_cvtusepi32_epi8 (__m512i __A)
5355             {
5356             return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5357             (__v16qi)
5358             _mm_undefined_si128 (),
5359             (__mmask16) -1);
5360             }
5361              
5362             extern __inline void
5363             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5364             _mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5365             {
5366             __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5367             }
5368              
5369             extern __inline __m128i
5370             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5371             _mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5372             {
5373             return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5374             (__v16qi) __O,
5375             __M);
5376             }
5377              
5378             extern __inline __m128i
5379             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5380             _mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
5381             {
5382             return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5383             (__v16qi)
5384             _mm_setzero_si128 (),
5385             __M);
5386             }
5387              
5388             extern __inline __m256i
5389             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5390             _mm512_cvtepi32_epi16 (__m512i __A)
5391             {
5392             return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
5393             (__v16hi)
5394             _mm256_undefined_si256 (),
5395             (__mmask16) -1);
5396             }
5397              
5398             extern __inline void
5399             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5400             _mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
5401             {
5402             __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
5403             }
5404              
5405             extern __inline __m256i
5406             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5407             _mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5408             {
5409             return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
5410             (__v16hi) __O, __M);
5411             }
5412              
5413             extern __inline __m256i
5414             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5415             _mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
5416             {
5417             return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
5418             (__v16hi)
5419             _mm256_setzero_si256 (),
5420             __M);
5421             }
5422              
5423             extern __inline __m256i
5424             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5425             _mm512_cvtsepi32_epi16 (__m512i __A)
5426             {
5427             return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5428             (__v16hi)
5429             _mm256_undefined_si256 (),
5430             (__mmask16) -1);
5431             }
5432              
5433             extern __inline void
5434             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5435             _mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
5436             {
5437             __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
5438             }
5439              
5440             extern __inline __m256i
5441             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5442             _mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5443             {
5444             return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5445             (__v16hi) __O, __M);
5446             }
5447              
5448             extern __inline __m256i
5449             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5450             _mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
5451             {
5452             return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5453             (__v16hi)
5454             _mm256_setzero_si256 (),
5455             __M);
5456             }
5457              
5458             extern __inline __m256i
5459             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5460             _mm512_cvtusepi32_epi16 (__m512i __A)
5461             {
5462             return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
5463             (__v16hi)
5464             _mm256_undefined_si256 (),
5465             (__mmask16) -1);
5466             }
5467              
5468             extern __inline void
5469             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5470             _mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
5471             {
5472             __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
5473             }
5474              
5475             extern __inline __m256i
5476             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5477             _mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5478             {
5479             return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
5480             (__v16hi) __O,
5481             __M);
5482             }
5483              
5484             extern __inline __m256i
5485             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5486             _mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
5487             {
5488             return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
5489             (__v16hi)
5490             _mm256_setzero_si256 (),
5491             __M);
5492             }
5493              
5494             extern __inline __m256i
5495             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5496             _mm512_cvtepi64_epi32 (__m512i __A)
5497             {
5498             return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
5499             (__v8si)
5500             _mm256_undefined_si256 (),
5501             (__mmask8) -1);
5502             }
5503              
5504             extern __inline void
5505             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5506             _mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
5507             {
5508             __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
5509             }
5510              
5511             extern __inline __m256i
5512             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5513             _mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5514             {
5515             return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
5516             (__v8si) __O, __M);
5517             }
5518              
5519             extern __inline __m256i
5520             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5521             _mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
5522             {
5523             return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
5524             (__v8si)
5525             _mm256_setzero_si256 (),
5526             __M);
5527             }
5528              
5529             extern __inline __m256i
5530             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5531             _mm512_cvtsepi64_epi32 (__m512i __A)
5532             {
5533             return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5534             (__v8si)
5535             _mm256_undefined_si256 (),
5536             (__mmask8) -1);
5537             }
5538              
5539             extern __inline void
5540             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5541             _mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
5542             {
5543             __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
5544             }
5545              
5546             extern __inline __m256i
5547             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5548             _mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5549             {
5550             return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5551             (__v8si) __O, __M);
5552             }
5553              
5554             extern __inline __m256i
5555             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5556             _mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
5557             {
5558             return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5559             (__v8si)
5560             _mm256_setzero_si256 (),
5561             __M);
5562             }
5563              
5564             extern __inline __m256i
5565             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5566             _mm512_cvtusepi64_epi32 (__m512i __A)
5567             {
5568             return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
5569             (__v8si)
5570             _mm256_undefined_si256 (),
5571             (__mmask8) -1);
5572             }
5573              
5574             extern __inline void
5575             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5576             _mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
5577             {
5578             __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
5579             }
5580              
5581             extern __inline __m256i
5582             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5583             _mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5584             {
5585             return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
5586             (__v8si) __O, __M);
5587             }
5588              
5589             extern __inline __m256i
5590             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5591             _mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
5592             {
5593             return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
5594             (__v8si)
5595             _mm256_setzero_si256 (),
5596             __M);
5597             }
5598              
5599             extern __inline __m128i
5600             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5601             _mm512_cvtepi64_epi16 (__m512i __A)
5602             {
5603             return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
5604             (__v8hi)
5605             _mm_undefined_si128 (),
5606             (__mmask8) -1);
5607             }
5608              
5609             extern __inline void
5610             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5611             _mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
5612             {
5613             __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
5614             }
5615              
5616             extern __inline __m128i
5617             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5618             _mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5619             {
5620             return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
5621             (__v8hi) __O, __M);
5622             }
5623              
5624             extern __inline __m128i
5625             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5626             _mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
5627             {
5628             return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
5629             (__v8hi)
5630             _mm_setzero_si128 (),
5631             __M);
5632             }
5633              
5634             extern __inline __m128i
5635             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5636             _mm512_cvtsepi64_epi16 (__m512i __A)
5637             {
5638             return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5639             (__v8hi)
5640             _mm_undefined_si128 (),
5641             (__mmask8) -1);
5642             }
5643              
5644             extern __inline void
5645             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5646             _mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
5647             {
5648             __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
5649             }
5650              
5651             extern __inline __m128i
5652             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5653             _mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5654             {
5655             return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5656             (__v8hi) __O, __M);
5657             }
5658              
5659             extern __inline __m128i
5660             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5661             _mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
5662             {
5663             return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5664             (__v8hi)
5665             _mm_setzero_si128 (),
5666             __M);
5667             }
5668              
5669             extern __inline __m128i
5670             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5671             _mm512_cvtusepi64_epi16 (__m512i __A)
5672             {
5673             return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
5674             (__v8hi)
5675             _mm_undefined_si128 (),
5676             (__mmask8) -1);
5677             }
5678              
5679             extern __inline void
5680             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5681             _mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
5682             {
5683             __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
5684             }
5685              
5686             extern __inline __m128i
5687             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5688             _mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5689             {
5690             return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
5691             (__v8hi) __O, __M);
5692             }
5693              
5694             extern __inline __m128i
5695             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5696             _mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
5697             {
5698             return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
5699             (__v8hi)
5700             _mm_setzero_si128 (),
5701             __M);
5702             }
5703              
5704             extern __inline __m128i
5705             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5706             _mm512_cvtepi64_epi8 (__m512i __A)
5707             {
5708             return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
5709             (__v16qi)
5710             _mm_undefined_si128 (),
5711             (__mmask8) -1);
5712             }
5713              
5714             extern __inline void
5715             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5716             _mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5717             {
5718             __builtin_ia32_pmovqb512mem_mask ((unsigned long long *) __P,
5719             (__v8di) __A, __M);
5720             }
5721              
5722             extern __inline __m128i
5723             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5724             _mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5725             {
5726             return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
5727             (__v16qi) __O, __M);
5728             }
5729              
5730             extern __inline __m128i
5731             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5732             _mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
5733             {
5734             return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
5735             (__v16qi)
5736             _mm_setzero_si128 (),
5737             __M);
5738             }
5739              
5740             extern __inline __m128i
5741             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5742             _mm512_cvtsepi64_epi8 (__m512i __A)
5743             {
5744             return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5745             (__v16qi)
5746             _mm_undefined_si128 (),
5747             (__mmask8) -1);
5748             }
5749              
5750             extern __inline void
5751             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5752             _mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5753             {
5754             __builtin_ia32_pmovsqb512mem_mask ((unsigned long long *) __P, (__v8di) __A, __M);
5755             }
5756              
5757             extern __inline __m128i
5758             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5759             _mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5760             {
5761             return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5762             (__v16qi) __O, __M);
5763             }
5764              
5765             extern __inline __m128i
5766             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5767             _mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
5768             {
5769             return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5770             (__v16qi)
5771             _mm_setzero_si128 (),
5772             __M);
5773             }
5774              
5775             extern __inline __m128i
5776             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5777             _mm512_cvtusepi64_epi8 (__m512i __A)
5778             {
5779             return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
5780             (__v16qi)
5781             _mm_undefined_si128 (),
5782             (__mmask8) -1);
5783             }
5784              
5785             extern __inline void
5786             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5787             _mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5788             {
5789             __builtin_ia32_pmovusqb512mem_mask ((unsigned long long *) __P, (__v8di) __A, __M);
5790             }
5791              
5792             extern __inline __m128i
5793             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5794             _mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5795             {
5796             return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
5797             (__v16qi) __O,
5798             __M);
5799             }
5800              
5801             extern __inline __m128i
5802             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5803             _mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
5804             {
5805             return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
5806             (__v16qi)
5807             _mm_setzero_si128 (),
5808             __M);
5809             }
5810              
5811             extern __inline __m512d
5812             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5813             _mm512_cvtepi32_pd (__m256i __A)
5814             {
5815             return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
5816             (__v8df)
5817             _mm512_undefined_pd (),
5818             (__mmask8) -1);
5819             }
5820              
5821             extern __inline __m512d
5822             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5823             _mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
5824             {
5825             return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
5826             (__v8df) __W,
5827             (__mmask8) __U);
5828             }
5829              
5830             extern __inline __m512d
5831             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5832             _mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
5833             {
5834             return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
5835             (__v8df)
5836             _mm512_setzero_pd (),
5837             (__mmask8) __U);
5838             }
5839              
5840             extern __inline __m512d
5841             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5842             _mm512_cvtepu32_pd (__m256i __A)
5843             {
5844             return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
5845             (__v8df)
5846             _mm512_undefined_pd (),
5847             (__mmask8) -1);
5848             }
5849              
5850             extern __inline __m512d
5851             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5852             _mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
5853             {
5854             return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
5855             (__v8df) __W,
5856             (__mmask8) __U);
5857             }
5858              
5859             extern __inline __m512d
5860             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5861             _mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
5862             {
5863             return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
5864             (__v8df)
5865             _mm512_setzero_pd (),
5866             (__mmask8) __U);
5867             }
5868              
5869             #ifdef __OPTIMIZE__
5870             extern __inline __m512
5871             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5872             _mm512_cvt_roundepi32_ps (__m512i __A, const int __R)
5873             {
5874             return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
5875             (__v16sf)
5876             _mm512_undefined_ps (),
5877             (__mmask16) -1, __R);
5878             }
5879              
5880             extern __inline __m512
5881             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5882             _mm512_mask_cvt_roundepi32_ps (__m512 __W, __mmask16 __U, __m512i __A,
5883             const int __R)
5884             {
5885             return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
5886             (__v16sf) __W,
5887             (__mmask16) __U, __R);
5888             }
5889              
5890             extern __inline __m512
5891             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5892             _mm512_maskz_cvt_roundepi32_ps (__mmask16 __U, __m512i __A, const int __R)
5893             {
5894             return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
5895             (__v16sf)
5896             _mm512_setzero_ps (),
5897             (__mmask16) __U, __R);
5898             }
5899              
5900             extern __inline __m512
5901             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5902             _mm512_cvt_roundepu32_ps (__m512i __A, const int __R)
5903             {
5904             return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
5905             (__v16sf)
5906             _mm512_undefined_ps (),
5907             (__mmask16) -1, __R);
5908             }
5909              
5910             extern __inline __m512
5911             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5912             _mm512_mask_cvt_roundepu32_ps (__m512 __W, __mmask16 __U, __m512i __A,
5913             const int __R)
5914             {
5915             return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
5916             (__v16sf) __W,
5917             (__mmask16) __U, __R);
5918             }
5919              
5920             extern __inline __m512
5921             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5922             _mm512_maskz_cvt_roundepu32_ps (__mmask16 __U, __m512i __A, const int __R)
5923             {
5924             return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
5925             (__v16sf)
5926             _mm512_setzero_ps (),
5927             (__mmask16) __U, __R);
5928             }
5929              
5930             #else
5931             #define _mm512_cvt_roundepi32_ps(A, B) \
5932             (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
5933              
5934             #define _mm512_mask_cvt_roundepi32_ps(W, U, A, B) \
5935             (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), W, U, B)
5936              
5937             #define _mm512_maskz_cvt_roundepi32_ps(U, A, B) \
5938             (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B)
5939              
5940             #define _mm512_cvt_roundepu32_ps(A, B) \
5941             (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
5942              
5943             #define _mm512_mask_cvt_roundepu32_ps(W, U, A, B) \
5944             (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), W, U, B)
5945              
5946             #define _mm512_maskz_cvt_roundepu32_ps(U, A, B) \
5947             (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B)
5948             #endif
5949              
5950             #ifdef __OPTIMIZE__
5951             extern __inline __m256d
5952             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5953             _mm512_extractf64x4_pd (__m512d __A, const int __imm)
5954             {
5955             return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
5956             __imm,
5957             (__v4df)
5958             _mm256_undefined_pd (),
5959             (__mmask8) -1);
5960             }
5961              
5962             extern __inline __m256d
5963             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5964             _mm512_mask_extractf64x4_pd (__m256d __W, __mmask8 __U, __m512d __A,
5965             const int __imm)
5966             {
5967             return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
5968             __imm,
5969             (__v4df) __W,
5970             (__mmask8) __U);
5971             }
5972              
5973             extern __inline __m256d
5974             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5975             _mm512_maskz_extractf64x4_pd (__mmask8 __U, __m512d __A, const int __imm)
5976             {
5977             return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
5978             __imm,
5979             (__v4df)
5980             _mm256_setzero_pd (),
5981             (__mmask8) __U);
5982             }
5983              
5984             extern __inline __m128
5985             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5986             _mm512_extractf32x4_ps (__m512 __A, const int __imm)
5987             {
5988             return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
5989             __imm,
5990             (__v4sf)
5991             _mm_undefined_ps (),
5992             (__mmask8) -1);
5993             }
5994              
5995             extern __inline __m128
5996             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5997             _mm512_mask_extractf32x4_ps (__m128 __W, __mmask8 __U, __m512 __A,
5998             const int __imm)
5999             {
6000             return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
6001             __imm,
6002             (__v4sf) __W,
6003             (__mmask8) __U);
6004             }
6005              
6006             extern __inline __m128
6007             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6008             _mm512_maskz_extractf32x4_ps (__mmask8 __U, __m512 __A, const int __imm)
6009             {
6010             return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
6011             __imm,
6012             (__v4sf)
6013             _mm_setzero_ps (),
6014             (__mmask8) __U);
6015             }
6016              
6017             extern __inline __m256i
6018             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6019             _mm512_extracti64x4_epi64 (__m512i __A, const int __imm)
6020             {
6021             return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
6022             __imm,
6023             (__v4di)
6024             _mm256_undefined_si256 (),
6025             (__mmask8) -1);
6026             }
6027              
6028             extern __inline __m256i
6029             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6030             _mm512_mask_extracti64x4_epi64 (__m256i __W, __mmask8 __U, __m512i __A,
6031             const int __imm)
6032             {
6033             return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
6034             __imm,
6035             (__v4di) __W,
6036             (__mmask8) __U);
6037             }
6038              
6039             extern __inline __m256i
6040             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6041             _mm512_maskz_extracti64x4_epi64 (__mmask8 __U, __m512i __A, const int __imm)
6042             {
6043             return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
6044             __imm,
6045             (__v4di)
6046             _mm256_setzero_si256 (),
6047             (__mmask8) __U);
6048             }
6049              
6050             extern __inline __m128i
6051             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6052             _mm512_extracti32x4_epi32 (__m512i __A, const int __imm)
6053             {
6054             return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
6055             __imm,
6056             (__v4si)
6057             _mm_undefined_si128 (),
6058             (__mmask8) -1);
6059             }
6060              
6061             extern __inline __m128i
6062             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6063             _mm512_mask_extracti32x4_epi32 (__m128i __W, __mmask8 __U, __m512i __A,
6064             const int __imm)
6065             {
6066             return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
6067             __imm,
6068             (__v4si) __W,
6069             (__mmask8) __U);
6070             }
6071              
6072             extern __inline __m128i
6073             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6074             _mm512_maskz_extracti32x4_epi32 (__mmask8 __U, __m512i __A, const int __imm)
6075             {
6076             return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
6077             __imm,
6078             (__v4si)
6079             _mm_setzero_si128 (),
6080             (__mmask8) __U);
6081             }
6082             #else
6083              
6084             #define _mm512_extractf64x4_pd(X, C) \
6085             ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \
6086             (int) (C),\
6087             (__v4df)(__m256d)_mm256_undefined_pd(),\
6088             (__mmask8)-1))
6089              
6090             #define _mm512_mask_extractf64x4_pd(W, U, X, C) \
6091             ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \
6092             (int) (C),\
6093             (__v4df)(__m256d)(W),\
6094             (__mmask8)(U)))
6095              
6096             #define _mm512_maskz_extractf64x4_pd(U, X, C) \
6097             ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \
6098             (int) (C),\
6099             (__v4df)(__m256d)_mm256_setzero_pd(),\
6100             (__mmask8)(U)))
6101              
6102             #define _mm512_extractf32x4_ps(X, C) \
6103             ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \
6104             (int) (C),\
6105             (__v4sf)(__m128)_mm_undefined_ps(),\
6106             (__mmask8)-1))
6107              
6108             #define _mm512_mask_extractf32x4_ps(W, U, X, C) \
6109             ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \
6110             (int) (C),\
6111             (__v4sf)(__m128)(W),\
6112             (__mmask8)(U)))
6113              
6114             #define _mm512_maskz_extractf32x4_ps(U, X, C) \
6115             ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \
6116             (int) (C),\
6117             (__v4sf)(__m128)_mm_setzero_ps(),\
6118             (__mmask8)(U)))
6119              
6120             #define _mm512_extracti64x4_epi64(X, C) \
6121             ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \
6122             (int) (C),\
6123             (__v4di)(__m256i)_mm256_undefined_si256 (),\
6124             (__mmask8)-1))
6125              
6126             #define _mm512_mask_extracti64x4_epi64(W, U, X, C) \
6127             ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \
6128             (int) (C),\
6129             (__v4di)(__m256i)(W),\
6130             (__mmask8)(U)))
6131              
6132             #define _mm512_maskz_extracti64x4_epi64(U, X, C) \
6133             ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \
6134             (int) (C),\
6135             (__v4di)(__m256i)_mm256_setzero_si256 (),\
6136             (__mmask8)(U)))
6137              
6138             #define _mm512_extracti32x4_epi32(X, C) \
6139             ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \
6140             (int) (C),\
6141             (__v4si)(__m128i)_mm_undefined_si128 (),\
6142             (__mmask8)-1))
6143              
6144             #define _mm512_mask_extracti32x4_epi32(W, U, X, C) \
6145             ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \
6146             (int) (C),\
6147             (__v4si)(__m128i)(W),\
6148             (__mmask8)(U)))
6149              
6150             #define _mm512_maskz_extracti32x4_epi32(U, X, C) \
6151             ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \
6152             (int) (C),\
6153             (__v4si)(__m128i)_mm_setzero_si128 (),\
6154             (__mmask8)(U)))
6155             #endif
6156              
6157             #ifdef __OPTIMIZE__
6158             extern __inline __m512i
6159             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6160             _mm512_inserti32x4 (__m512i __A, __m128i __B, const int __imm)
6161             {
6162             return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __A,
6163             (__v4si) __B,
6164             __imm,
6165             (__v16si) __A, -1);
6166             }
6167              
6168             extern __inline __m512
6169             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6170             _mm512_insertf32x4 (__m512 __A, __m128 __B, const int __imm)
6171             {
6172             return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __A,
6173             (__v4sf) __B,
6174             __imm,
6175             (__v16sf) __A, -1);
6176             }
6177              
6178             extern __inline __m512i
6179             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6180             _mm512_inserti64x4 (__m512i __A, __m256i __B, const int __imm)
6181             {
6182             return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
6183             (__v4di) __B,
6184             __imm,
6185             (__v8di)
6186             _mm512_undefined_epi32 (),
6187             (__mmask8) -1);
6188             }
6189              
6190             extern __inline __m512i
6191             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6192             _mm512_mask_inserti64x4 (__m512i __W, __mmask8 __U, __m512i __A,
6193             __m256i __B, const int __imm)
6194             {
6195             return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
6196             (__v4di) __B,
6197             __imm,
6198             (__v8di) __W,
6199             (__mmask8) __U);
6200             }
6201              
6202             extern __inline __m512i
6203             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6204             _mm512_maskz_inserti64x4 (__mmask8 __U, __m512i __A, __m256i __B,
6205             const int __imm)
6206             {
6207             return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
6208             (__v4di) __B,
6209             __imm,
6210             (__v8di)
6211             _mm512_setzero_si512 (),
6212             (__mmask8) __U);
6213             }
6214              
6215             extern __inline __m512d
6216             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6217             _mm512_insertf64x4 (__m512d __A, __m256d __B, const int __imm)
6218             {
6219             return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
6220             (__v4df) __B,
6221             __imm,
6222             (__v8df)
6223             _mm512_undefined_pd (),
6224             (__mmask8) -1);
6225             }
6226              
6227             extern __inline __m512d
6228             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6229             _mm512_mask_insertf64x4 (__m512d __W, __mmask8 __U, __m512d __A,
6230             __m256d __B, const int __imm)
6231             {
6232             return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
6233             (__v4df) __B,
6234             __imm,
6235             (__v8df) __W,
6236             (__mmask8) __U);
6237             }
6238              
6239             extern __inline __m512d
6240             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6241             _mm512_maskz_insertf64x4 (__mmask8 __U, __m512d __A, __m256d __B,
6242             const int __imm)
6243             {
6244             return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
6245             (__v4df) __B,
6246             __imm,
6247             (__v8df)
6248             _mm512_setzero_pd (),
6249             (__mmask8) __U);
6250             }
6251             #else
6252             #define _mm512_insertf32x4(X, Y, C) \
6253             ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \
6254             (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (X), (__mmask16)(-1)))
6255              
6256             #define _mm512_inserti32x4(X, Y, C) \
6257             ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \
6258             (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (X), (__mmask16)(-1)))
6259              
6260             #define _mm512_insertf64x4(X, Y, C) \
6261             ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \
6262             (__v4df)(__m256d) (Y), (int) (C), \
6263             (__v8df)(__m512d)_mm512_undefined_pd(), \
6264             (__mmask8)-1))
6265              
6266             #define _mm512_mask_insertf64x4(W, U, X, Y, C) \
6267             ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \
6268             (__v4df)(__m256d) (Y), (int) (C), \
6269             (__v8df)(__m512d)(W), \
6270             (__mmask8)(U)))
6271              
6272             #define _mm512_maskz_insertf64x4(U, X, Y, C) \
6273             ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \
6274             (__v4df)(__m256d) (Y), (int) (C), \
6275             (__v8df)(__m512d)_mm512_setzero_pd(), \
6276             (__mmask8)(U)))
6277              
6278             #define _mm512_inserti64x4(X, Y, C) \
6279             ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \
6280             (__v4di)(__m256i) (Y), (int) (C), \
6281             (__v8di)(__m512i)_mm512_undefined_epi32 (), \
6282             (__mmask8)-1))
6283              
6284             #define _mm512_mask_inserti64x4(W, U, X, Y, C) \
6285             ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \
6286             (__v4di)(__m256i) (Y), (int) (C),\
6287             (__v8di)(__m512i)(W),\
6288             (__mmask8)(U)))
6289              
6290             #define _mm512_maskz_inserti64x4(U, X, Y, C) \
6291             ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \
6292             (__v4di)(__m256i) (Y), (int) (C), \
6293             (__v8di)(__m512i)_mm512_setzero_si512 (), \
6294             (__mmask8)(U)))
6295             #endif
6296              
6297             extern __inline __m512d
6298             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6299             _mm512_loadu_pd (void const *__P)
6300             {
6301             return *(__m512d_u *)__P;
6302             }
6303              
6304             extern __inline __m512d
6305             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6306             _mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
6307             {
6308             return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
6309             (__v8df) __W,
6310             (__mmask8) __U);
6311             }
6312              
6313             extern __inline __m512d
6314             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6315             _mm512_maskz_loadu_pd (__mmask8 __U, void const *__P)
6316             {
6317             return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
6318             (__v8df)
6319             _mm512_setzero_pd (),
6320             (__mmask8) __U);
6321             }
6322              
6323             extern __inline void
6324             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6325             _mm512_storeu_pd (void *__P, __m512d __A)
6326             {
6327             *(__m512d_u *)__P = __A;
6328             }
6329              
6330             extern __inline void
6331             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6332             _mm512_mask_storeu_pd (void *__P, __mmask8 __U, __m512d __A)
6333             {
6334             __builtin_ia32_storeupd512_mask ((double *) __P, (__v8df) __A,
6335             (__mmask8) __U);
6336             }
6337              
6338             extern __inline __m512
6339             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6340             _mm512_loadu_ps (void const *__P)
6341             {
6342             return *(__m512_u *)__P;
6343             }
6344              
6345             extern __inline __m512
6346             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6347             _mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
6348             {
6349             return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
6350             (__v16sf) __W,
6351             (__mmask16) __U);
6352             }
6353              
6354             extern __inline __m512
6355             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6356             _mm512_maskz_loadu_ps (__mmask16 __U, void const *__P)
6357             {
6358             return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
6359             (__v16sf)
6360             _mm512_setzero_ps (),
6361             (__mmask16) __U);
6362             }
6363              
6364             extern __inline void
6365             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6366             _mm512_storeu_ps (void *__P, __m512 __A)
6367             {
6368             *(__m512_u *)__P = __A;
6369             }
6370              
6371             extern __inline void
6372             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6373             _mm512_mask_storeu_ps (void *__P, __mmask16 __U, __m512 __A)
6374             {
6375             __builtin_ia32_storeups512_mask ((float *) __P, (__v16sf) __A,
6376             (__mmask16) __U);
6377             }
6378              
6379             extern __inline __m128
6380             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6381             _mm_mask_load_ss (__m128 __W, __mmask8 __U, const float *__P)
6382             {
6383             return (__m128) __builtin_ia32_loadss_mask (__P, (__v4sf) __W, __U);
6384             }
6385              
6386             extern __inline __m128
6387             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6388             _mm_maskz_load_ss (__mmask8 __U, const float *__P)
6389             {
6390             return (__m128) __builtin_ia32_loadss_mask (__P, (__v4sf) _mm_setzero_ps (),
6391             __U);
6392             }
6393              
6394             extern __inline __m128d
6395             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6396             _mm_mask_load_sd (__m128d __W, __mmask8 __U, const double *__P)
6397             {
6398             return (__m128d) __builtin_ia32_loadsd_mask (__P, (__v2df) __W, __U);
6399             }
6400              
6401             extern __inline __m128d
6402             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6403             _mm_maskz_load_sd (__mmask8 __U, const double *__P)
6404             {
6405             return (__m128d) __builtin_ia32_loadsd_mask (__P, (__v2df) _mm_setzero_pd (),
6406             __U);
6407             }
6408              
6409             extern __inline __m128
6410             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6411             _mm_mask_move_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6412             {
6413             return (__m128) __builtin_ia32_movess_mask ((__v4sf) __A, (__v4sf) __B,
6414             (__v4sf) __W, __U);
6415             }
6416              
6417             extern __inline __m128
6418             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6419             _mm_maskz_move_ss (__mmask8 __U, __m128 __A, __m128 __B)
6420             {
6421             return (__m128) __builtin_ia32_movess_mask ((__v4sf) __A, (__v4sf) __B,
6422             (__v4sf) _mm_setzero_ps (), __U);
6423             }
6424              
6425             extern __inline __m128d
6426             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6427             _mm_mask_move_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6428             {
6429             return (__m128d) __builtin_ia32_movesd_mask ((__v2df) __A, (__v2df) __B,
6430             (__v2df) __W, __U);
6431             }
6432              
6433             extern __inline __m128d
6434             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6435             _mm_maskz_move_sd (__mmask8 __U, __m128d __A, __m128d __B)
6436             {
6437             return (__m128d) __builtin_ia32_movesd_mask ((__v2df) __A, (__v2df) __B,
6438             (__v2df) _mm_setzero_pd (),
6439             __U);
6440             }
6441              
6442             extern __inline void
6443             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6444             _mm_mask_store_ss (float *__P, __mmask8 __U, __m128 __A)
6445             {
6446             __builtin_ia32_storess_mask (__P, (__v4sf) __A, (__mmask8) __U);
6447             }
6448              
6449             extern __inline void
6450             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6451             _mm_mask_store_sd (double *__P, __mmask8 __U, __m128d __A)
6452             {
6453             __builtin_ia32_storesd_mask (__P, (__v2df) __A, (__mmask8) __U);
6454             }
6455              
6456             extern __inline __m512i
6457             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6458             _mm512_loadu_epi64 (void const *__P)
6459             {
6460             return *(__m512i_u *) __P;
6461             }
6462              
6463             extern __inline __m512i
6464             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6465             _mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
6466             {
6467             return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
6468             (__v8di) __W,
6469             (__mmask8) __U);
6470             }
6471              
6472             extern __inline __m512i
6473             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6474             _mm512_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
6475             {
6476             return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
6477             (__v8di)
6478             _mm512_setzero_si512 (),
6479             (__mmask8) __U);
6480             }
6481              
6482             extern __inline void
6483             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6484             _mm512_storeu_epi64 (void *__P, __m512i __A)
6485             {
6486             *(__m512i_u *) __P = (__m512i_u) __A;
6487             }
6488              
6489             extern __inline void
6490             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6491             _mm512_mask_storeu_epi64 (void *__P, __mmask8 __U, __m512i __A)
6492             {
6493             __builtin_ia32_storedqudi512_mask ((long long *) __P, (__v8di) __A,
6494             (__mmask8) __U);
6495             }
6496              
6497             extern __inline __m512i
6498             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6499             _mm512_loadu_si512 (void const *__P)
6500             {
6501 0           return *(__m512i_u *)__P;
6502             }
6503              
6504             extern __inline __m512i
6505             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6506             _mm512_loadu_epi32 (void const *__P)
6507             {
6508             return *(__m512i_u *) __P;
6509             }
6510              
6511             extern __inline __m512i
6512             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6513             _mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
6514             {
6515             return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
6516             (__v16si) __W,
6517             (__mmask16) __U);
6518             }
6519              
6520             extern __inline __m512i
6521             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6522             _mm512_maskz_loadu_epi32 (__mmask16 __U, void const *__P)
6523             {
6524             return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
6525             (__v16si)
6526             _mm512_setzero_si512 (),
6527             (__mmask16) __U);
6528             }
6529              
6530             extern __inline void
6531             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6532             _mm512_storeu_si512 (void *__P, __m512i __A)
6533             {
6534             *(__m512i_u *)__P = __A;
6535             }
6536              
6537             extern __inline void
6538             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6539             _mm512_storeu_epi32 (void *__P, __m512i __A)
6540             {
6541             *(__m512i_u *) __P = (__m512i_u) __A;
6542             }
6543              
6544             extern __inline void
6545             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6546             _mm512_mask_storeu_epi32 (void *__P, __mmask16 __U, __m512i __A)
6547             {
6548             __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
6549             (__mmask16) __U);
6550             }
6551              
6552             extern __inline __m512d
6553             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6554             _mm512_permutevar_pd (__m512d __A, __m512i __C)
6555             {
6556             return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6557             (__v8di) __C,
6558             (__v8df)
6559             _mm512_undefined_pd (),
6560             (__mmask8) -1);
6561             }
6562              
6563             extern __inline __m512d
6564             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6565             _mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6566             {
6567             return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6568             (__v8di) __C,
6569             (__v8df) __W,
6570             (__mmask8) __U);
6571             }
6572              
6573             extern __inline __m512d
6574             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6575             _mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6576             {
6577             return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6578             (__v8di) __C,
6579             (__v8df)
6580             _mm512_setzero_pd (),
6581             (__mmask8) __U);
6582             }
6583              
6584             extern __inline __m512
6585             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6586             _mm512_permutevar_ps (__m512 __A, __m512i __C)
6587             {
6588             return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6589             (__v16si) __C,
6590             (__v16sf)
6591             _mm512_undefined_ps (),
6592             (__mmask16) -1);
6593             }
6594              
6595             extern __inline __m512
6596             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6597             _mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6598             {
6599             return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6600             (__v16si) __C,
6601             (__v16sf) __W,
6602             (__mmask16) __U);
6603             }
6604              
6605             extern __inline __m512
6606             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6607             _mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6608             {
6609             return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6610             (__v16si) __C,
6611             (__v16sf)
6612             _mm512_setzero_ps (),
6613             (__mmask16) __U);
6614             }
6615              
6616             extern __inline __m512i
6617             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6618             _mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B)
6619             {
6620             return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
6621             /* idx */ ,
6622             (__v8di) __A,
6623             (__v8di) __B,
6624             (__mmask8) -1);
6625             }
6626              
6627             extern __inline __m512i
6628             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6629             _mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
6630             __m512i __B)
6631             {
6632             return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
6633             /* idx */ ,
6634             (__v8di) __A,
6635             (__v8di) __B,
6636             (__mmask8) __U);
6637             }
6638              
6639             extern __inline __m512i
6640             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6641             _mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6642             __mmask8 __U, __m512i __B)
6643             {
6644             return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6645             (__v8di) __I
6646             /* idx */ ,
6647             (__v8di) __B,
6648             (__mmask8) __U);
6649             }
6650              
6651             extern __inline __m512i
6652             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6653             _mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
6654             __m512i __I, __m512i __B)
6655             {
6656             return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
6657             /* idx */ ,
6658             (__v8di) __A,
6659             (__v8di) __B,
6660             (__mmask8) __U);
6661             }
6662              
6663             extern __inline __m512i
6664             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6665             _mm512_permutex2var_epi32 (__m512i __A, __m512i __I, __m512i __B)
6666             {
6667             return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
6668             /* idx */ ,
6669             (__v16si) __A,
6670             (__v16si) __B,
6671             (__mmask16) -1);
6672             }
6673              
6674             extern __inline __m512i
6675             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6676             _mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
6677             __m512i __I, __m512i __B)
6678             {
6679             return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
6680             /* idx */ ,
6681             (__v16si) __A,
6682             (__v16si) __B,
6683             (__mmask16) __U);
6684             }
6685              
6686             extern __inline __m512i
6687             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6688             _mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
6689             __mmask16 __U, __m512i __B)
6690             {
6691             return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
6692             (__v16si) __I
6693             /* idx */ ,
6694             (__v16si) __B,
6695             (__mmask16) __U);
6696             }
6697              
6698             extern __inline __m512i
6699             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6700             _mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
6701             __m512i __I, __m512i __B)
6702             {
6703             return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
6704             /* idx */ ,
6705             (__v16si) __A,
6706             (__v16si) __B,
6707             (__mmask16) __U);
6708             }
6709              
6710             extern __inline __m512d
6711             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6712             _mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
6713             {
6714             return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6715             /* idx */ ,
6716             (__v8df) __A,
6717             (__v8df) __B,
6718             (__mmask8) -1);
6719             }
6720              
6721             extern __inline __m512d
6722             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6723             _mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I,
6724             __m512d __B)
6725             {
6726             return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6727             /* idx */ ,
6728             (__v8df) __A,
6729             (__v8df) __B,
6730             (__mmask8) __U);
6731             }
6732              
6733             extern __inline __m512d
6734             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6735             _mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6736             __m512d __B)
6737             {
6738             return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6739             (__v8di) __I
6740             /* idx */ ,
6741             (__v8df) __B,
6742             (__mmask8) __U);
6743             }
6744              
6745             extern __inline __m512d
6746             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6747             _mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6748             __m512d __B)
6749             {
6750             return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
6751             /* idx */ ,
6752             (__v8df) __A,
6753             (__v8df) __B,
6754             (__mmask8) __U);
6755             }
6756              
6757             extern __inline __m512
6758             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6759             _mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
6760             {
6761             return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6762             /* idx */ ,
6763             (__v16sf) __A,
6764             (__v16sf) __B,
6765             (__mmask16) -1);
6766             }
6767              
6768             extern __inline __m512
6769             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6770             _mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6771             {
6772             return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6773             /* idx */ ,
6774             (__v16sf) __A,
6775             (__v16sf) __B,
6776             (__mmask16) __U);
6777             }
6778              
6779             extern __inline __m512
6780             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6781             _mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6782             __m512 __B)
6783             {
6784             return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6785             (__v16si) __I
6786             /* idx */ ,
6787             (__v16sf) __B,
6788             (__mmask16) __U);
6789             }
6790              
6791             extern __inline __m512
6792             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6793             _mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6794             __m512 __B)
6795             {
6796             return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
6797             /* idx */ ,
6798             (__v16sf) __A,
6799             (__v16sf) __B,
6800             (__mmask16) __U);
6801             }
6802              
6803             #ifdef __OPTIMIZE__
6804             extern __inline __m512d
6805             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6806             _mm512_permute_pd (__m512d __X, const int __C)
6807             {
6808             return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
6809             (__v8df)
6810             _mm512_undefined_pd (),
6811             (__mmask8) -1);
6812             }
6813              
6814             extern __inline __m512d
6815             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6816             _mm512_mask_permute_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __C)
6817             {
6818             return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
6819             (__v8df) __W,
6820             (__mmask8) __U);
6821             }
6822              
6823             extern __inline __m512d
6824             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6825             _mm512_maskz_permute_pd (__mmask8 __U, __m512d __X, const int __C)
6826             {
6827             return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
6828             (__v8df)
6829             _mm512_setzero_pd (),
6830             (__mmask8) __U);
6831             }
6832              
6833             extern __inline __m512
6834             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6835             _mm512_permute_ps (__m512 __X, const int __C)
6836             {
6837             return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
6838             (__v16sf)
6839             _mm512_undefined_ps (),
6840             (__mmask16) -1);
6841             }
6842              
6843             extern __inline __m512
6844             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6845             _mm512_mask_permute_ps (__m512 __W, __mmask16 __U, __m512 __X, const int __C)
6846             {
6847             return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
6848             (__v16sf) __W,
6849             (__mmask16) __U);
6850             }
6851              
6852             extern __inline __m512
6853             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6854             _mm512_maskz_permute_ps (__mmask16 __U, __m512 __X, const int __C)
6855             {
6856             return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
6857             (__v16sf)
6858             _mm512_setzero_ps (),
6859             (__mmask16) __U);
6860             }
6861             #else
6862             #define _mm512_permute_pd(X, C) \
6863             ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \
6864             (__v8df)(__m512d)_mm512_undefined_pd(),\
6865             (__mmask8)(-1)))
6866              
6867             #define _mm512_mask_permute_pd(W, U, X, C) \
6868             ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \
6869             (__v8df)(__m512d)(W), \
6870             (__mmask8)(U)))
6871              
6872             #define _mm512_maskz_permute_pd(U, X, C) \
6873             ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \
6874             (__v8df)(__m512d)_mm512_setzero_pd(), \
6875             (__mmask8)(U)))
6876              
6877             #define _mm512_permute_ps(X, C) \
6878             ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \
6879             (__v16sf)(__m512)_mm512_undefined_ps(),\
6880             (__mmask16)(-1)))
6881              
6882             #define _mm512_mask_permute_ps(W, U, X, C) \
6883             ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \
6884             (__v16sf)(__m512)(W), \
6885             (__mmask16)(U)))
6886              
6887             #define _mm512_maskz_permute_ps(U, X, C) \
6888             ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \
6889             (__v16sf)(__m512)_mm512_setzero_ps(), \
6890             (__mmask16)(U)))
6891             #endif
6892              
6893             #ifdef __OPTIMIZE__
6894             extern __inline __m512i
6895             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6896             _mm512_permutex_epi64 (__m512i __X, const int __I)
6897             {
6898             return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
6899             (__v8di)
6900             _mm512_undefined_epi32 (),
6901             (__mmask8) (-1));
6902             }
6903              
6904             extern __inline __m512i
6905             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6906             _mm512_mask_permutex_epi64 (__m512i __W, __mmask8 __M,
6907             __m512i __X, const int __I)
6908             {
6909             return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
6910             (__v8di) __W,
6911             (__mmask8) __M);
6912             }
6913              
6914             extern __inline __m512i
6915             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6916             _mm512_maskz_permutex_epi64 (__mmask8 __M, __m512i __X, const int __I)
6917             {
6918             return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
6919             (__v8di)
6920             _mm512_setzero_si512 (),
6921             (__mmask8) __M);
6922             }
6923              
6924             extern __inline __m512d
6925             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6926             _mm512_permutex_pd (__m512d __X, const int __M)
6927             {
6928             return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
6929             (__v8df)
6930             _mm512_undefined_pd (),
6931             (__mmask8) -1);
6932             }
6933              
6934             extern __inline __m512d
6935             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6936             _mm512_mask_permutex_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __M)
6937             {
6938             return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
6939             (__v8df) __W,
6940             (__mmask8) __U);
6941             }
6942              
6943             extern __inline __m512d
6944             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6945             _mm512_maskz_permutex_pd (__mmask8 __U, __m512d __X, const int __M)
6946             {
6947             return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
6948             (__v8df)
6949             _mm512_setzero_pd (),
6950             (__mmask8) __U);
6951             }
6952             #else
6953             #define _mm512_permutex_pd(X, M) \
6954             ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \
6955             (__v8df)(__m512d)_mm512_undefined_pd(),\
6956             (__mmask8)-1))
6957              
6958             #define _mm512_mask_permutex_pd(W, U, X, M) \
6959             ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \
6960             (__v8df)(__m512d)(W), (__mmask8)(U)))
6961              
6962             #define _mm512_maskz_permutex_pd(U, X, M) \
6963             ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \
6964             (__v8df)(__m512d)_mm512_setzero_pd(),\
6965             (__mmask8)(U)))
6966              
6967             #define _mm512_permutex_epi64(X, I) \
6968             ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
6969             (int)(I), \
6970             (__v8di)(__m512i) \
6971             (_mm512_undefined_epi32 ()),\
6972             (__mmask8)(-1)))
6973              
6974             #define _mm512_maskz_permutex_epi64(M, X, I) \
6975             ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
6976             (int)(I), \
6977             (__v8di)(__m512i) \
6978             (_mm512_setzero_si512 ()),\
6979             (__mmask8)(M)))
6980              
6981             #define _mm512_mask_permutex_epi64(W, M, X, I) \
6982             ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
6983             (int)(I), \
6984             (__v8di)(__m512i)(W), \
6985             (__mmask8)(M)))
6986             #endif
6987              
6988             extern __inline __m512i
6989             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6990             _mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
6991             {
6992             return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
6993             (__v8di) __X,
6994             (__v8di)
6995             _mm512_setzero_si512 (),
6996             __M);
6997             }
6998              
6999             extern __inline __m512i
7000             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7001             _mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
7002             {
7003             return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7004             (__v8di) __X,
7005             (__v8di)
7006             _mm512_undefined_epi32 (),
7007             (__mmask8) -1);
7008             }
7009              
7010             extern __inline __m512i
7011             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7012             _mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
7013             __m512i __Y)
7014             {
7015             return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7016             (__v8di) __X,
7017             (__v8di) __W,
7018             __M);
7019             }
7020              
7021             extern __inline __m512i
7022             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7023             _mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
7024             {
7025             return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
7026             (__v16si) __X,
7027             (__v16si)
7028             _mm512_setzero_si512 (),
7029             __M);
7030             }
7031              
7032             extern __inline __m512i
7033             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7034             _mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
7035             {
7036             return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
7037             (__v16si) __X,
7038             (__v16si)
7039             _mm512_undefined_epi32 (),
7040             (__mmask16) -1);
7041             }
7042              
7043             extern __inline __m512i
7044             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7045             _mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
7046             __m512i __Y)
7047             {
7048             return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
7049             (__v16si) __X,
7050             (__v16si) __W,
7051             __M);
7052             }
7053              
7054             extern __inline __m512d
7055             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7056             _mm512_permutexvar_pd (__m512i __X, __m512d __Y)
7057             {
7058             return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7059             (__v8di) __X,
7060             (__v8df)
7061             _mm512_undefined_pd (),
7062             (__mmask8) -1);
7063             }
7064              
7065             extern __inline __m512d
7066             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7067             _mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
7068             {
7069             return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7070             (__v8di) __X,
7071             (__v8df) __W,
7072             (__mmask8) __U);
7073             }
7074              
7075             extern __inline __m512d
7076             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7077             _mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
7078             {
7079             return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7080             (__v8di) __X,
7081             (__v8df)
7082             _mm512_setzero_pd (),
7083             (__mmask8) __U);
7084             }
7085              
7086             extern __inline __m512
7087             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7088             _mm512_permutexvar_ps (__m512i __X, __m512 __Y)
7089             {
7090             return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7091             (__v16si) __X,
7092             (__v16sf)
7093             _mm512_undefined_ps (),
7094             (__mmask16) -1);
7095             }
7096              
7097             extern __inline __m512
7098             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7099             _mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
7100             {
7101             return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7102             (__v16si) __X,
7103             (__v16sf) __W,
7104             (__mmask16) __U);
7105             }
7106              
7107             extern __inline __m512
7108             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7109             _mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
7110             {
7111             return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7112             (__v16si) __X,
7113             (__v16sf)
7114             _mm512_setzero_ps (),
7115             (__mmask16) __U);
7116             }
7117              
7118             #ifdef __OPTIMIZE__
7119             extern __inline __m512
7120             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7121             _mm512_shuffle_ps (__m512 __M, __m512 __V, const int __imm)
7122             {
7123             return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
7124             (__v16sf) __V, __imm,
7125             (__v16sf)
7126             _mm512_undefined_ps (),
7127             (__mmask16) -1);
7128             }
7129              
7130             extern __inline __m512
7131             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7132             _mm512_mask_shuffle_ps (__m512 __W, __mmask16 __U, __m512 __M,
7133             __m512 __V, const int __imm)
7134             {
7135             return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
7136             (__v16sf) __V, __imm,
7137             (__v16sf) __W,
7138             (__mmask16) __U);
7139             }
7140              
7141             extern __inline __m512
7142             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7143             _mm512_maskz_shuffle_ps (__mmask16 __U, __m512 __M, __m512 __V, const int __imm)
7144             {
7145             return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
7146             (__v16sf) __V, __imm,
7147             (__v16sf)
7148             _mm512_setzero_ps (),
7149             (__mmask16) __U);
7150             }
7151              
7152             extern __inline __m512d
7153             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7154             _mm512_shuffle_pd (__m512d __M, __m512d __V, const int __imm)
7155             {
7156             return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
7157             (__v8df) __V, __imm,
7158             (__v8df)
7159             _mm512_undefined_pd (),
7160             (__mmask8) -1);
7161             }
7162              
7163             extern __inline __m512d
7164             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7165             _mm512_mask_shuffle_pd (__m512d __W, __mmask8 __U, __m512d __M,
7166             __m512d __V, const int __imm)
7167             {
7168             return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
7169             (__v8df) __V, __imm,
7170             (__v8df) __W,
7171             (__mmask8) __U);
7172             }
7173              
7174             extern __inline __m512d
7175             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7176             _mm512_maskz_shuffle_pd (__mmask8 __U, __m512d __M, __m512d __V,
7177             const int __imm)
7178             {
7179             return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
7180             (__v8df) __V, __imm,
7181             (__v8df)
7182             _mm512_setzero_pd (),
7183             (__mmask8) __U);
7184             }
7185              
7186             extern __inline __m512d
7187             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7188             _mm512_fixupimm_round_pd (__m512d __A, __m512d __B, __m512i __C,
7189             const int __imm, const int __R)
7190             {
7191             return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
7192             (__v8df) __B,
7193             (__v8di) __C,
7194             __imm,
7195             (__mmask8) -1, __R);
7196             }
7197              
7198             extern __inline __m512d
7199             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7200             _mm512_mask_fixupimm_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
7201             __m512i __C, const int __imm, const int __R)
7202             {
7203             return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
7204             (__v8df) __B,
7205             (__v8di) __C,
7206             __imm,
7207             (__mmask8) __U, __R);
7208             }
7209              
7210             extern __inline __m512d
7211             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7212             _mm512_maskz_fixupimm_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
7213             __m512i __C, const int __imm, const int __R)
7214             {
7215             return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A,
7216             (__v8df) __B,
7217             (__v8di) __C,
7218             __imm,
7219             (__mmask8) __U, __R);
7220             }
7221              
7222             extern __inline __m512
7223             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7224             _mm512_fixupimm_round_ps (__m512 __A, __m512 __B, __m512i __C,
7225             const int __imm, const int __R)
7226             {
7227             return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
7228             (__v16sf) __B,
7229             (__v16si) __C,
7230             __imm,
7231             (__mmask16) -1, __R);
7232             }
7233              
7234             extern __inline __m512
7235             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7236             _mm512_mask_fixupimm_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
7237             __m512i __C, const int __imm, const int __R)
7238             {
7239             return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
7240             (__v16sf) __B,
7241             (__v16si) __C,
7242             __imm,
7243             (__mmask16) __U, __R);
7244             }
7245              
7246             extern __inline __m512
7247             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7248             _mm512_maskz_fixupimm_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
7249             __m512i __C, const int __imm, const int __R)
7250             {
7251             return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A,
7252             (__v16sf) __B,
7253             (__v16si) __C,
7254             __imm,
7255             (__mmask16) __U, __R);
7256             }
7257              
7258             extern __inline __m128d
7259             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7260             _mm_fixupimm_round_sd (__m128d __A, __m128d __B, __m128i __C,
7261             const int __imm, const int __R)
7262             {
7263             return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
7264             (__v2df) __B,
7265             (__v2di) __C, __imm,
7266             (__mmask8) -1, __R);
7267             }
7268              
7269             extern __inline __m128d
7270             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7271             _mm_mask_fixupimm_round_sd (__m128d __A, __mmask8 __U, __m128d __B,
7272             __m128i __C, const int __imm, const int __R)
7273             {
7274             return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
7275             (__v2df) __B,
7276             (__v2di) __C, __imm,
7277             (__mmask8) __U, __R);
7278             }
7279              
7280             extern __inline __m128d
7281             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7282             _mm_maskz_fixupimm_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
7283             __m128i __C, const int __imm, const int __R)
7284             {
7285             return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A,
7286             (__v2df) __B,
7287             (__v2di) __C,
7288             __imm,
7289             (__mmask8) __U, __R);
7290             }
7291              
7292             extern __inline __m128
7293             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7294             _mm_fixupimm_round_ss (__m128 __A, __m128 __B, __m128i __C,
7295             const int __imm, const int __R)
7296             {
7297             return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
7298             (__v4sf) __B,
7299             (__v4si) __C, __imm,
7300             (__mmask8) -1, __R);
7301             }
7302              
7303             extern __inline __m128
7304             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7305             _mm_mask_fixupimm_round_ss (__m128 __A, __mmask8 __U, __m128 __B,
7306             __m128i __C, const int __imm, const int __R)
7307             {
7308             return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
7309             (__v4sf) __B,
7310             (__v4si) __C, __imm,
7311             (__mmask8) __U, __R);
7312             }
7313              
7314             extern __inline __m128
7315             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7316             _mm_maskz_fixupimm_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
7317             __m128i __C, const int __imm, const int __R)
7318             {
7319             return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A,
7320             (__v4sf) __B,
7321             (__v4si) __C, __imm,
7322             (__mmask8) __U, __R);
7323             }
7324              
7325             #else
7326             #define _mm512_shuffle_pd(X, Y, C) \
7327             ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \
7328             (__v8df)(__m512d)(Y), (int)(C),\
7329             (__v8df)(__m512d)_mm512_undefined_pd(),\
7330             (__mmask8)-1))
7331              
7332             #define _mm512_mask_shuffle_pd(W, U, X, Y, C) \
7333             ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \
7334             (__v8df)(__m512d)(Y), (int)(C),\
7335             (__v8df)(__m512d)(W),\
7336             (__mmask8)(U)))
7337              
7338             #define _mm512_maskz_shuffle_pd(U, X, Y, C) \
7339             ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \
7340             (__v8df)(__m512d)(Y), (int)(C),\
7341             (__v8df)(__m512d)_mm512_setzero_pd(),\
7342             (__mmask8)(U)))
7343              
7344             #define _mm512_shuffle_ps(X, Y, C) \
7345             ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \
7346             (__v16sf)(__m512)(Y), (int)(C),\
7347             (__v16sf)(__m512)_mm512_undefined_ps(),\
7348             (__mmask16)-1))
7349              
7350             #define _mm512_mask_shuffle_ps(W, U, X, Y, C) \
7351             ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \
7352             (__v16sf)(__m512)(Y), (int)(C),\
7353             (__v16sf)(__m512)(W),\
7354             (__mmask16)(U)))
7355              
7356             #define _mm512_maskz_shuffle_ps(U, X, Y, C) \
7357             ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \
7358             (__v16sf)(__m512)(Y), (int)(C),\
7359             (__v16sf)(__m512)_mm512_setzero_ps(),\
7360             (__mmask16)(U)))
7361              
7362             #define _mm512_fixupimm_round_pd(X, Y, Z, C, R) \
7363             ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
7364             (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
7365             (__mmask8)(-1), (R)))
7366              
7367             #define _mm512_mask_fixupimm_round_pd(X, U, Y, Z, C, R) \
7368             ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
7369             (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
7370             (__mmask8)(U), (R)))
7371              
7372             #define _mm512_maskz_fixupimm_round_pd(U, X, Y, Z, C, R) \
7373             ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X), \
7374             (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
7375             (__mmask8)(U), (R)))
7376              
7377             #define _mm512_fixupimm_round_ps(X, Y, Z, C, R) \
7378             ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
7379             (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
7380             (__mmask16)(-1), (R)))
7381              
7382             #define _mm512_mask_fixupimm_round_ps(X, U, Y, Z, C, R) \
7383             ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
7384             (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
7385             (__mmask16)(U), (R)))
7386              
7387             #define _mm512_maskz_fixupimm_round_ps(U, X, Y, Z, C, R) \
7388             ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X), \
7389             (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
7390             (__mmask16)(U), (R)))
7391              
7392             #define _mm_fixupimm_round_sd(X, Y, Z, C, R) \
7393             ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
7394             (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
7395             (__mmask8)(-1), (R)))
7396              
7397             #define _mm_mask_fixupimm_round_sd(X, U, Y, Z, C, R) \
7398             ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
7399             (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
7400             (__mmask8)(U), (R)))
7401              
7402             #define _mm_maskz_fixupimm_round_sd(U, X, Y, Z, C, R) \
7403             ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X), \
7404             (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
7405             (__mmask8)(U), (R)))
7406              
7407             #define _mm_fixupimm_round_ss(X, Y, Z, C, R) \
7408             ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
7409             (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
7410             (__mmask8)(-1), (R)))
7411              
7412             #define _mm_mask_fixupimm_round_ss(X, U, Y, Z, C, R) \
7413             ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
7414             (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
7415             (__mmask8)(U), (R)))
7416              
7417             #define _mm_maskz_fixupimm_round_ss(U, X, Y, Z, C, R) \
7418             ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X), \
7419             (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
7420             (__mmask8)(U), (R)))
7421             #endif
7422              
7423             extern __inline __m512
7424             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7425             _mm512_movehdup_ps (__m512 __A)
7426             {
7427             return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
7428             (__v16sf)
7429             _mm512_undefined_ps (),
7430             (__mmask16) -1);
7431             }
7432              
7433             extern __inline __m512
7434             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7435             _mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
7436             {
7437             return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
7438             (__v16sf) __W,
7439             (__mmask16) __U);
7440             }
7441              
7442             extern __inline __m512
7443             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7444             _mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
7445             {
7446             return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
7447             (__v16sf)
7448             _mm512_setzero_ps (),
7449             (__mmask16) __U);
7450             }
7451              
7452             extern __inline __m512
7453             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7454             _mm512_moveldup_ps (__m512 __A)
7455             {
7456             return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
7457             (__v16sf)
7458             _mm512_undefined_ps (),
7459             (__mmask16) -1);
7460             }
7461              
7462             extern __inline __m512
7463             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7464             _mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
7465             {
7466             return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
7467             (__v16sf) __W,
7468             (__mmask16) __U);
7469             }
7470              
7471             extern __inline __m512
7472             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7473             _mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
7474             {
7475             return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
7476             (__v16sf)
7477             _mm512_setzero_ps (),
7478             (__mmask16) __U);
7479             }
7480              
7481             extern __inline __m512i
7482             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7483             _mm512_or_si512 (__m512i __A, __m512i __B)
7484             {
7485             return (__m512i) ((__v16su) __A | (__v16su) __B);
7486             }
7487              
7488             extern __inline __m512i
7489             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7490             _mm512_or_epi32 (__m512i __A, __m512i __B)
7491             {
7492             return (__m512i) ((__v16su) __A | (__v16su) __B);
7493             }
7494              
7495             extern __inline __m512i
7496             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7497             _mm512_mask_or_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7498             {
7499             return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A,
7500             (__v16si) __B,
7501             (__v16si) __W,
7502             (__mmask16) __U);
7503             }
7504              
7505             extern __inline __m512i
7506             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7507             _mm512_maskz_or_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7508             {
7509             return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A,
7510             (__v16si) __B,
7511             (__v16si)
7512             _mm512_setzero_si512 (),
7513             (__mmask16) __U);
7514             }
7515              
7516             extern __inline __m512i
7517             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7518             _mm512_or_epi64 (__m512i __A, __m512i __B)
7519             {
7520             return (__m512i) ((__v8du) __A | (__v8du) __B);
7521             }
7522              
7523             extern __inline __m512i
7524             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7525             _mm512_mask_or_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7526             {
7527             return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A,
7528             (__v8di) __B,
7529             (__v8di) __W,
7530             (__mmask8) __U);
7531             }
7532              
7533             extern __inline __m512i
7534             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7535             _mm512_maskz_or_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7536             {
7537             return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A,
7538             (__v8di) __B,
7539             (__v8di)
7540             _mm512_setzero_si512 (),
7541             (__mmask8) __U);
7542             }
7543              
7544             extern __inline __m512i
7545             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7546             _mm512_xor_si512 (__m512i __A, __m512i __B)
7547             {
7548 0           return (__m512i) ((__v16su) __A ^ (__v16su) __B);
7549             }
7550              
7551             extern __inline __m512i
7552             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7553             _mm512_xor_epi32 (__m512i __A, __m512i __B)
7554             {
7555             return (__m512i) ((__v16su) __A ^ (__v16su) __B);
7556             }
7557              
7558             extern __inline __m512i
7559             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7560             _mm512_mask_xor_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7561             {
7562             return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A,
7563             (__v16si) __B,
7564             (__v16si) __W,
7565             (__mmask16) __U);
7566             }
7567              
7568             extern __inline __m512i
7569             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7570             _mm512_maskz_xor_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7571             {
7572             return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A,
7573             (__v16si) __B,
7574             (__v16si)
7575             _mm512_setzero_si512 (),
7576             (__mmask16) __U);
7577             }
7578              
7579             extern __inline __m512i
7580             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7581             _mm512_xor_epi64 (__m512i __A, __m512i __B)
7582             {
7583             return (__m512i) ((__v8du) __A ^ (__v8du) __B);
7584             }
7585              
7586             extern __inline __m512i
7587             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7588             _mm512_mask_xor_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7589             {
7590             return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A,
7591             (__v8di) __B,
7592             (__v8di) __W,
7593             (__mmask8) __U);
7594             }
7595              
7596             extern __inline __m512i
7597             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7598             _mm512_maskz_xor_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7599             {
7600             return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A,
7601             (__v8di) __B,
7602             (__v8di)
7603             _mm512_setzero_si512 (),
7604             (__mmask8) __U);
7605             }
7606              
7607             #ifdef __OPTIMIZE__
7608             extern __inline __m512i
7609             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7610             _mm512_rol_epi32 (__m512i __A, const int __B)
7611             {
7612             return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
7613             (__v16si)
7614             _mm512_undefined_epi32 (),
7615             (__mmask16) -1);
7616             }
7617              
7618             extern __inline __m512i
7619             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7620             _mm512_mask_rol_epi32 (__m512i __W, __mmask16 __U, __m512i __A, const int __B)
7621             {
7622             return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
7623             (__v16si) __W,
7624             (__mmask16) __U);
7625             }
7626              
7627             extern __inline __m512i
7628             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7629             _mm512_maskz_rol_epi32 (__mmask16 __U, __m512i __A, const int __B)
7630             {
7631             return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
7632             (__v16si)
7633             _mm512_setzero_si512 (),
7634             (__mmask16) __U);
7635             }
7636              
7637             extern __inline __m512i
7638             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7639             _mm512_ror_epi32 (__m512i __A, int __B)
7640             {
7641             return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
7642             (__v16si)
7643             _mm512_undefined_epi32 (),
7644             (__mmask16) -1);
7645             }
7646              
7647             extern __inline __m512i
7648             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7649             _mm512_mask_ror_epi32 (__m512i __W, __mmask16 __U, __m512i __A, int __B)
7650             {
7651             return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
7652             (__v16si) __W,
7653             (__mmask16) __U);
7654             }
7655              
7656             extern __inline __m512i
7657             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7658             _mm512_maskz_ror_epi32 (__mmask16 __U, __m512i __A, int __B)
7659             {
7660             return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
7661             (__v16si)
7662             _mm512_setzero_si512 (),
7663             (__mmask16) __U);
7664             }
7665              
7666             extern __inline __m512i
7667             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7668             _mm512_rol_epi64 (__m512i __A, const int __B)
7669             {
7670             return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
7671             (__v8di)
7672             _mm512_undefined_epi32 (),
7673             (__mmask8) -1);
7674             }
7675              
7676             extern __inline __m512i
7677             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7678             _mm512_mask_rol_epi64 (__m512i __W, __mmask8 __U, __m512i __A, const int __B)
7679             {
7680             return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
7681             (__v8di) __W,
7682             (__mmask8) __U);
7683             }
7684              
7685             extern __inline __m512i
7686             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7687             _mm512_maskz_rol_epi64 (__mmask8 __U, __m512i __A, const int __B)
7688             {
7689             return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
7690             (__v8di)
7691             _mm512_setzero_si512 (),
7692             (__mmask8) __U);
7693             }
7694              
7695             extern __inline __m512i
7696             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7697             _mm512_ror_epi64 (__m512i __A, int __B)
7698             {
7699             return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
7700             (__v8di)
7701             _mm512_undefined_epi32 (),
7702             (__mmask8) -1);
7703             }
7704              
7705             extern __inline __m512i
7706             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7707             _mm512_mask_ror_epi64 (__m512i __W, __mmask8 __U, __m512i __A, int __B)
7708             {
7709             return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
7710             (__v8di) __W,
7711             (__mmask8) __U);
7712             }
7713              
7714             extern __inline __m512i
7715             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7716             _mm512_maskz_ror_epi64 (__mmask8 __U, __m512i __A, int __B)
7717             {
7718             return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
7719             (__v8di)
7720             _mm512_setzero_si512 (),
7721             (__mmask8) __U);
7722             }
7723              
7724             #else
7725             #define _mm512_rol_epi32(A, B) \
7726             ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \
7727             (int)(B), \
7728             (__v16si)_mm512_undefined_epi32 (), \
7729             (__mmask16)(-1)))
7730             #define _mm512_mask_rol_epi32(W, U, A, B) \
7731             ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \
7732             (int)(B), \
7733             (__v16si)(__m512i)(W), \
7734             (__mmask16)(U)))
7735             #define _mm512_maskz_rol_epi32(U, A, B) \
7736             ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \
7737             (int)(B), \
7738             (__v16si)_mm512_setzero_si512 (), \
7739             (__mmask16)(U)))
7740             #define _mm512_ror_epi32(A, B) \
7741             ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \
7742             (int)(B), \
7743             (__v16si)_mm512_undefined_epi32 (), \
7744             (__mmask16)(-1)))
7745             #define _mm512_mask_ror_epi32(W, U, A, B) \
7746             ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \
7747             (int)(B), \
7748             (__v16si)(__m512i)(W), \
7749             (__mmask16)(U)))
7750             #define _mm512_maskz_ror_epi32(U, A, B) \
7751             ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \
7752             (int)(B), \
7753             (__v16si)_mm512_setzero_si512 (), \
7754             (__mmask16)(U)))
7755             #define _mm512_rol_epi64(A, B) \
7756             ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \
7757             (int)(B), \
7758             (__v8di)_mm512_undefined_epi32 (), \
7759             (__mmask8)(-1)))
7760             #define _mm512_mask_rol_epi64(W, U, A, B) \
7761             ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \
7762             (int)(B), \
7763             (__v8di)(__m512i)(W), \
7764             (__mmask8)(U)))
7765             #define _mm512_maskz_rol_epi64(U, A, B) \
7766             ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \
7767             (int)(B), \
7768             (__v8di)_mm512_setzero_si512 (), \
7769             (__mmask8)(U)))
7770              
7771             #define _mm512_ror_epi64(A, B) \
7772             ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \
7773             (int)(B), \
7774             (__v8di)_mm512_undefined_epi32 (), \
7775             (__mmask8)(-1)))
7776             #define _mm512_mask_ror_epi64(W, U, A, B) \
7777             ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \
7778             (int)(B), \
7779             (__v8di)(__m512i)(W), \
7780             (__mmask8)(U)))
7781             #define _mm512_maskz_ror_epi64(U, A, B) \
7782             ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \
7783             (int)(B), \
7784             (__v8di)_mm512_setzero_si512 (), \
7785             (__mmask8)(U)))
7786             #endif
7787              
7788             extern __inline __m512i
7789             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7790             _mm512_and_si512 (__m512i __A, __m512i __B)
7791             {
7792             return (__m512i) ((__v16su) __A & (__v16su) __B);
7793             }
7794              
7795             extern __inline __m512i
7796             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7797             _mm512_and_epi32 (__m512i __A, __m512i __B)
7798             {
7799             return (__m512i) ((__v16su) __A & (__v16su) __B);
7800             }
7801              
7802             extern __inline __m512i
7803             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7804             _mm512_mask_and_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7805             {
7806             return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A,
7807             (__v16si) __B,
7808             (__v16si) __W,
7809             (__mmask16) __U);
7810             }
7811              
7812             extern __inline __m512i
7813             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7814             _mm512_maskz_and_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7815             {
7816             return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A,
7817             (__v16si) __B,
7818             (__v16si)
7819             _mm512_setzero_si512 (),
7820             (__mmask16) __U);
7821             }
7822              
7823             extern __inline __m512i
7824             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7825             _mm512_and_epi64 (__m512i __A, __m512i __B)
7826             {
7827             return (__m512i) ((__v8du) __A & (__v8du) __B);
7828             }
7829              
7830             extern __inline __m512i
7831             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7832             _mm512_mask_and_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7833             {
7834             return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A,
7835             (__v8di) __B,
7836             (__v8di) __W, __U);
7837             }
7838              
7839             extern __inline __m512i
7840             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7841             _mm512_maskz_and_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7842             {
7843             return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A,
7844             (__v8di) __B,
7845             (__v8di)
7846             _mm512_setzero_pd (),
7847             __U);
7848             }
7849              
7850             extern __inline __m512i
7851             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7852             _mm512_andnot_si512 (__m512i __A, __m512i __B)
7853             {
7854             return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7855             (__v16si) __B,
7856             (__v16si)
7857             _mm512_undefined_epi32 (),
7858             (__mmask16) -1);
7859             }
7860              
7861             extern __inline __m512i
7862             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7863             _mm512_andnot_epi32 (__m512i __A, __m512i __B)
7864             {
7865             return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7866             (__v16si) __B,
7867             (__v16si)
7868             _mm512_undefined_epi32 (),
7869             (__mmask16) -1);
7870             }
7871              
7872             extern __inline __m512i
7873             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7874             _mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7875             {
7876             return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7877             (__v16si) __B,
7878             (__v16si) __W,
7879             (__mmask16) __U);
7880             }
7881              
7882             extern __inline __m512i
7883             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7884             _mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7885             {
7886             return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7887             (__v16si) __B,
7888             (__v16si)
7889             _mm512_setzero_si512 (),
7890             (__mmask16) __U);
7891             }
7892              
7893             extern __inline __m512i
7894             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7895             _mm512_andnot_epi64 (__m512i __A, __m512i __B)
7896             {
7897             return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
7898             (__v8di) __B,
7899             (__v8di)
7900             _mm512_undefined_epi32 (),
7901             (__mmask8) -1);
7902             }
7903              
7904             extern __inline __m512i
7905             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7906             _mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7907             {
7908             return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
7909             (__v8di) __B,
7910             (__v8di) __W, __U);
7911             }
7912              
7913             extern __inline __m512i
7914             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7915             _mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7916             {
7917             return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
7918             (__v8di) __B,
7919             (__v8di)
7920             _mm512_setzero_pd (),
7921             __U);
7922             }
7923              
7924             extern __inline __mmask16
7925             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7926             _mm512_test_epi32_mask (__m512i __A, __m512i __B)
7927             {
7928             return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
7929             (__v16si) __B,
7930             (__mmask16) -1);
7931             }
7932              
7933             extern __inline __mmask16
7934             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7935             _mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
7936             {
7937             return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
7938             (__v16si) __B, __U);
7939             }
7940              
7941             extern __inline __mmask8
7942             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7943             _mm512_test_epi64_mask (__m512i __A, __m512i __B)
7944             {
7945             return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
7946             (__v8di) __B,
7947             (__mmask8) -1);
7948             }
7949              
7950             extern __inline __mmask8
7951             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7952             _mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
7953             {
7954             return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
7955             }
7956              
7957             extern __inline __mmask16
7958             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7959             _mm512_testn_epi32_mask (__m512i __A, __m512i __B)
7960             {
7961             return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
7962             (__v16si) __B,
7963             (__mmask16) -1);
7964             }
7965              
7966             extern __inline __mmask16
7967             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7968             _mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
7969             {
7970             return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
7971             (__v16si) __B, __U);
7972             }
7973              
7974             extern __inline __mmask8
7975             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7976             _mm512_testn_epi64_mask (__m512i __A, __m512i __B)
7977             {
7978             return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
7979             (__v8di) __B,
7980             (__mmask8) -1);
7981             }
7982              
7983             extern __inline __mmask8
7984             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7985             _mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
7986             {
7987             return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
7988             (__v8di) __B, __U);
7989             }
7990              
7991             extern __inline __m512
7992             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7993             _mm512_abs_ps (__m512 __A)
7994             {
7995             return (__m512) _mm512_and_epi32 ((__m512i) __A,
7996             _mm512_set1_epi32 (0x7fffffff));
7997             }
7998              
7999             extern __inline __m512
8000             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8001             _mm512_mask_abs_ps (__m512 __W, __mmask16 __U, __m512 __A)
8002             {
8003             return (__m512) _mm512_mask_and_epi32 ((__m512i) __W, __U, (__m512i) __A,
8004             _mm512_set1_epi32 (0x7fffffff));
8005             }
8006              
8007             extern __inline __m512d
8008             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8009             _mm512_abs_pd (__m512d __A)
8010             {
8011             return (__m512d) _mm512_and_epi64 ((__m512i) __A,
8012             _mm512_set1_epi64 (0x7fffffffffffffffLL));
8013             }
8014              
8015             extern __inline __m512d
8016             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8017             _mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A)
8018             {
8019             return (__m512d)
8020             _mm512_mask_and_epi64 ((__m512i) __W, __U, (__m512i) __A,
8021             _mm512_set1_epi64 (0x7fffffffffffffffLL));
8022             }
8023              
8024             extern __inline __m512i
8025             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8026             _mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
8027             {
8028             return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
8029             (__v16si) __B,
8030             (__v16si)
8031             _mm512_undefined_epi32 (),
8032             (__mmask16) -1);
8033             }
8034              
8035             extern __inline __m512i
8036             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8037             _mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
8038             __m512i __B)
8039             {
8040             return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
8041             (__v16si) __B,
8042             (__v16si) __W,
8043             (__mmask16) __U);
8044             }
8045              
8046             extern __inline __m512i
8047             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8048             _mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
8049             {
8050             return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
8051             (__v16si) __B,
8052             (__v16si)
8053             _mm512_setzero_si512 (),
8054             (__mmask16) __U);
8055             }
8056              
8057             extern __inline __m512i
8058             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8059             _mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
8060             {
8061             return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
8062             (__v8di) __B,
8063             (__v8di)
8064             _mm512_undefined_epi32 (),
8065             (__mmask8) -1);
8066             }
8067              
8068             extern __inline __m512i
8069             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8070             _mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
8071             {
8072             return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
8073             (__v8di) __B,
8074             (__v8di) __W,
8075             (__mmask8) __U);
8076             }
8077              
8078             extern __inline __m512i
8079             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8080             _mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
8081             {
8082             return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
8083             (__v8di) __B,
8084             (__v8di)
8085             _mm512_setzero_si512 (),
8086             (__mmask8) __U);
8087             }
8088              
8089             extern __inline __m512i
8090             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8091             _mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
8092             {
8093             return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
8094             (__v16si) __B,
8095             (__v16si)
8096             _mm512_undefined_epi32 (),
8097             (__mmask16) -1);
8098             }
8099              
8100             extern __inline __m512i
8101             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8102             _mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
8103             __m512i __B)
8104             {
8105             return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
8106             (__v16si) __B,
8107             (__v16si) __W,
8108             (__mmask16) __U);
8109             }
8110              
8111             extern __inline __m512i
8112             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8113             _mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
8114             {
8115             return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
8116             (__v16si) __B,
8117             (__v16si)
8118             _mm512_setzero_si512 (),
8119             (__mmask16) __U);
8120             }
8121              
8122             extern __inline __m512i
8123             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8124             _mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
8125             {
8126             return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
8127             (__v8di) __B,
8128             (__v8di)
8129             _mm512_undefined_epi32 (),
8130             (__mmask8) -1);
8131             }
8132              
8133             extern __inline __m512i
8134             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8135             _mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
8136             {
8137             return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
8138             (__v8di) __B,
8139             (__v8di) __W,
8140             (__mmask8) __U);
8141             }
8142              
8143             extern __inline __m512i
8144             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8145             _mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
8146             {
8147             return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
8148             (__v8di) __B,
8149             (__v8di)
8150             _mm512_setzero_si512 (),
8151             (__mmask8) __U);
8152             }
8153              
8154             #ifdef __x86_64__
8155             #ifdef __OPTIMIZE__
8156             extern __inline unsigned long long
8157             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8158             _mm_cvt_roundss_u64 (__m128 __A, const int __R)
8159             {
8160             return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf) __A, __R);
8161             }
8162              
8163             extern __inline long long
8164             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8165             _mm_cvt_roundss_si64 (__m128 __A, const int __R)
8166             {
8167             return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R);
8168             }
8169              
8170             extern __inline long long
8171             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8172             _mm_cvt_roundss_i64 (__m128 __A, const int __R)
8173             {
8174             return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R);
8175             }
8176              
8177             extern __inline unsigned long long
8178             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8179             _mm_cvtt_roundss_u64 (__m128 __A, const int __R)
8180             {
8181             return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf) __A, __R);
8182             }
8183              
8184             extern __inline long long
8185             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8186             _mm_cvtt_roundss_i64 (__m128 __A, const int __R)
8187             {
8188             return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R);
8189             }
8190              
8191             extern __inline long long
8192             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8193             _mm_cvtt_roundss_si64 (__m128 __A, const int __R)
8194             {
8195             return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R);
8196             }
8197             #else
8198             #define _mm_cvt_roundss_u64(A, B) \
8199             ((unsigned long long)__builtin_ia32_vcvtss2usi64(A, B))
8200              
8201             #define _mm_cvt_roundss_si64(A, B) \
8202             ((long long)__builtin_ia32_vcvtss2si64(A, B))
8203              
8204             #define _mm_cvt_roundss_i64(A, B) \
8205             ((long long)__builtin_ia32_vcvtss2si64(A, B))
8206              
8207             #define _mm_cvtt_roundss_u64(A, B) \
8208             ((unsigned long long)__builtin_ia32_vcvttss2usi64(A, B))
8209              
8210             #define _mm_cvtt_roundss_i64(A, B) \
8211             ((long long)__builtin_ia32_vcvttss2si64(A, B))
8212              
8213             #define _mm_cvtt_roundss_si64(A, B) \
8214             ((long long)__builtin_ia32_vcvttss2si64(A, B))
8215             #endif
8216             #endif
8217              
8218             #ifdef __OPTIMIZE__
8219             extern __inline unsigned
8220             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8221             _mm_cvt_roundss_u32 (__m128 __A, const int __R)
8222             {
8223             return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A, __R);
8224             }
8225              
8226             extern __inline int
8227             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8228             _mm_cvt_roundss_si32 (__m128 __A, const int __R)
8229             {
8230             return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R);
8231             }
8232              
8233             extern __inline int
8234             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8235             _mm_cvt_roundss_i32 (__m128 __A, const int __R)
8236             {
8237             return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R);
8238             }
8239              
8240             extern __inline unsigned
8241             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8242             _mm_cvtt_roundss_u32 (__m128 __A, const int __R)
8243             {
8244             return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A, __R);
8245             }
8246              
8247             extern __inline int
8248             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8249             _mm_cvtt_roundss_i32 (__m128 __A, const int __R)
8250             {
8251             return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R);
8252             }
8253              
8254             extern __inline int
8255             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8256             _mm_cvtt_roundss_si32 (__m128 __A, const int __R)
8257             {
8258             return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R);
8259             }
8260             #else
8261             #define _mm_cvt_roundss_u32(A, B) \
8262             ((unsigned)__builtin_ia32_vcvtss2usi32(A, B))
8263              
8264             #define _mm_cvt_roundss_si32(A, B) \
8265             ((int)__builtin_ia32_vcvtss2si32(A, B))
8266              
8267             #define _mm_cvt_roundss_i32(A, B) \
8268             ((int)__builtin_ia32_vcvtss2si32(A, B))
8269              
8270             #define _mm_cvtt_roundss_u32(A, B) \
8271             ((unsigned)__builtin_ia32_vcvttss2usi32(A, B))
8272              
8273             #define _mm_cvtt_roundss_si32(A, B) \
8274             ((int)__builtin_ia32_vcvttss2si32(A, B))
8275              
8276             #define _mm_cvtt_roundss_i32(A, B) \
8277             ((int)__builtin_ia32_vcvttss2si32(A, B))
8278             #endif
8279              
8280             #ifdef __x86_64__
8281             #ifdef __OPTIMIZE__
8282             extern __inline unsigned long long
8283             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8284             _mm_cvt_roundsd_u64 (__m128d __A, const int __R)
8285             {
8286             return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df) __A, __R);
8287             }
8288              
8289             extern __inline long long
8290             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8291             _mm_cvt_roundsd_si64 (__m128d __A, const int __R)
8292             {
8293             return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R);
8294             }
8295              
8296             extern __inline long long
8297             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8298             _mm_cvt_roundsd_i64 (__m128d __A, const int __R)
8299             {
8300             return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R);
8301             }
8302              
8303             extern __inline unsigned long long
8304             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8305             _mm_cvtt_roundsd_u64 (__m128d __A, const int __R)
8306             {
8307             return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df) __A, __R);
8308             }
8309              
8310             extern __inline long long
8311             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8312             _mm_cvtt_roundsd_si64 (__m128d __A, const int __R)
8313             {
8314             return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R);
8315             }
8316              
8317             extern __inline long long
8318             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8319             _mm_cvtt_roundsd_i64 (__m128d __A, const int __R)
8320             {
8321             return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R);
8322             }
8323             #else
8324             #define _mm_cvt_roundsd_u64(A, B) \
8325             ((unsigned long long)__builtin_ia32_vcvtsd2usi64(A, B))
8326              
8327             #define _mm_cvt_roundsd_si64(A, B) \
8328             ((long long)__builtin_ia32_vcvtsd2si64(A, B))
8329              
8330             #define _mm_cvt_roundsd_i64(A, B) \
8331             ((long long)__builtin_ia32_vcvtsd2si64(A, B))
8332              
8333             #define _mm_cvtt_roundsd_u64(A, B) \
8334             ((unsigned long long)__builtin_ia32_vcvttsd2usi64(A, B))
8335              
8336             #define _mm_cvtt_roundsd_si64(A, B) \
8337             ((long long)__builtin_ia32_vcvttsd2si64(A, B))
8338              
8339             #define _mm_cvtt_roundsd_i64(A, B) \
8340             ((long long)__builtin_ia32_vcvttsd2si64(A, B))
8341             #endif
8342             #endif
8343              
8344             #ifdef __OPTIMIZE__
8345             extern __inline unsigned
8346             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8347             _mm_cvt_roundsd_u32 (__m128d __A, const int __R)
8348             {
8349             return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A, __R);
8350             }
8351              
8352             extern __inline int
8353             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8354             _mm_cvt_roundsd_si32 (__m128d __A, const int __R)
8355             {
8356             return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R);
8357             }
8358              
8359             extern __inline int
8360             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8361             _mm_cvt_roundsd_i32 (__m128d __A, const int __R)
8362             {
8363             return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R);
8364             }
8365              
8366             extern __inline unsigned
8367             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8368             _mm_cvtt_roundsd_u32 (__m128d __A, const int __R)
8369             {
8370             return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A, __R);
8371             }
8372              
8373             extern __inline int
8374             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8375             _mm_cvtt_roundsd_i32 (__m128d __A, const int __R)
8376             {
8377             return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R);
8378             }
8379              
8380             extern __inline int
8381             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8382             _mm_cvtt_roundsd_si32 (__m128d __A, const int __R)
8383             {
8384             return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R);
8385             }
8386             #else
8387             #define _mm_cvt_roundsd_u32(A, B) \
8388             ((unsigned)__builtin_ia32_vcvtsd2usi32(A, B))
8389              
8390             #define _mm_cvt_roundsd_si32(A, B) \
8391             ((int)__builtin_ia32_vcvtsd2si32(A, B))
8392              
8393             #define _mm_cvt_roundsd_i32(A, B) \
8394             ((int)__builtin_ia32_vcvtsd2si32(A, B))
8395              
8396             #define _mm_cvtt_roundsd_u32(A, B) \
8397             ((unsigned)__builtin_ia32_vcvttsd2usi32(A, B))
8398              
8399             #define _mm_cvtt_roundsd_si32(A, B) \
8400             ((int)__builtin_ia32_vcvttsd2si32(A, B))
8401              
8402             #define _mm_cvtt_roundsd_i32(A, B) \
8403             ((int)__builtin_ia32_vcvttsd2si32(A, B))
8404             #endif
8405              
8406             extern __inline __m512d
8407             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8408             _mm512_movedup_pd (__m512d __A)
8409             {
8410             return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
8411             (__v8df)
8412             _mm512_undefined_pd (),
8413             (__mmask8) -1);
8414             }
8415              
8416             extern __inline __m512d
8417             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8418             _mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
8419             {
8420             return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
8421             (__v8df) __W,
8422             (__mmask8) __U);
8423             }
8424              
8425             extern __inline __m512d
8426             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8427             _mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
8428             {
8429             return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
8430             (__v8df)
8431             _mm512_setzero_pd (),
8432             (__mmask8) __U);
8433             }
8434              
8435             extern __inline __m512d
8436             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8437             _mm512_unpacklo_pd (__m512d __A, __m512d __B)
8438             {
8439             return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
8440             (__v8df) __B,
8441             (__v8df)
8442             _mm512_undefined_pd (),
8443             (__mmask8) -1);
8444             }
8445              
8446             extern __inline __m512d
8447             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8448             _mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
8449             {
8450             return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
8451             (__v8df) __B,
8452             (__v8df) __W,
8453             (__mmask8) __U);
8454             }
8455              
8456             extern __inline __m512d
8457             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8458             _mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
8459             {
8460             return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
8461             (__v8df) __B,
8462             (__v8df)
8463             _mm512_setzero_pd (),
8464             (__mmask8) __U);
8465             }
8466              
8467             extern __inline __m512d
8468             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8469             _mm512_unpackhi_pd (__m512d __A, __m512d __B)
8470             {
8471             return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
8472             (__v8df) __B,
8473             (__v8df)
8474             _mm512_undefined_pd (),
8475             (__mmask8) -1);
8476             }
8477              
8478             extern __inline __m512d
8479             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8480             _mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
8481             {
8482             return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
8483             (__v8df) __B,
8484             (__v8df) __W,
8485             (__mmask8) __U);
8486             }
8487              
8488             extern __inline __m512d
8489             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8490             _mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
8491             {
8492             return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
8493             (__v8df) __B,
8494             (__v8df)
8495             _mm512_setzero_pd (),
8496             (__mmask8) __U);
8497             }
8498              
8499             extern __inline __m512
8500             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8501             _mm512_unpackhi_ps (__m512 __A, __m512 __B)
8502             {
8503             return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
8504             (__v16sf) __B,
8505             (__v16sf)
8506             _mm512_undefined_ps (),
8507             (__mmask16) -1);
8508             }
8509              
8510             extern __inline __m512
8511             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8512             _mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
8513             {
8514             return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
8515             (__v16sf) __B,
8516             (__v16sf) __W,
8517             (__mmask16) __U);
8518             }
8519              
8520             extern __inline __m512
8521             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8522             _mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
8523             {
8524             return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
8525             (__v16sf) __B,
8526             (__v16sf)
8527             _mm512_setzero_ps (),
8528             (__mmask16) __U);
8529             }
8530              
8531             #ifdef __OPTIMIZE__
8532             extern __inline __m512d
8533             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8534             _mm512_cvt_roundps_pd (__m256 __A, const int __R)
8535             {
8536             return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8537             (__v8df)
8538             _mm512_undefined_pd (),
8539             (__mmask8) -1, __R);
8540             }
8541              
8542             extern __inline __m512d
8543             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8544             _mm512_mask_cvt_roundps_pd (__m512d __W, __mmask8 __U, __m256 __A,
8545             const int __R)
8546             {
8547             return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8548             (__v8df) __W,
8549             (__mmask8) __U, __R);
8550             }
8551              
8552             extern __inline __m512d
8553             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8554             _mm512_maskz_cvt_roundps_pd (__mmask8 __U, __m256 __A, const int __R)
8555             {
8556             return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8557             (__v8df)
8558             _mm512_setzero_pd (),
8559             (__mmask8) __U, __R);
8560             }
8561              
8562             extern __inline __m512
8563             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8564             _mm512_cvt_roundph_ps (__m256i __A, const int __R)
8565             {
8566             return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
8567             (__v16sf)
8568             _mm512_undefined_ps (),
8569             (__mmask16) -1, __R);
8570             }
8571              
8572             extern __inline __m512
8573             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8574             _mm512_mask_cvt_roundph_ps (__m512 __W, __mmask16 __U, __m256i __A,
8575             const int __R)
8576             {
8577             return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
8578             (__v16sf) __W,
8579             (__mmask16) __U, __R);
8580             }
8581              
8582             extern __inline __m512
8583             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8584             _mm512_maskz_cvt_roundph_ps (__mmask16 __U, __m256i __A, const int __R)
8585             {
8586             return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
8587             (__v16sf)
8588             _mm512_setzero_ps (),
8589             (__mmask16) __U, __R);
8590             }
8591              
8592             extern __inline __m256i
8593             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8594             _mm512_cvt_roundps_ph (__m512 __A, const int __I)
8595             {
8596             return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8597             __I,
8598             (__v16hi)
8599             _mm256_undefined_si256 (),
8600             -1);
8601             }
8602              
8603             extern __inline __m256i
8604             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8605             _mm512_cvtps_ph (__m512 __A, const int __I)
8606             {
8607             return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8608             __I,
8609             (__v16hi)
8610             _mm256_undefined_si256 (),
8611             -1);
8612             }
8613              
8614             extern __inline __m256i
8615             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8616             _mm512_mask_cvt_roundps_ph (__m256i __U, __mmask16 __W, __m512 __A,
8617             const int __I)
8618             {
8619             return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8620             __I,
8621             (__v16hi) __U,
8622             (__mmask16) __W);
8623             }
8624              
8625             extern __inline __m256i
8626             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8627             _mm512_mask_cvtps_ph (__m256i __U, __mmask16 __W, __m512 __A, const int __I)
8628             {
8629             return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8630             __I,
8631             (__v16hi) __U,
8632             (__mmask16) __W);
8633             }
8634              
8635             extern __inline __m256i
8636             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8637             _mm512_maskz_cvt_roundps_ph (__mmask16 __W, __m512 __A, const int __I)
8638             {
8639             return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8640             __I,
8641             (__v16hi)
8642             _mm256_setzero_si256 (),
8643             (__mmask16) __W);
8644             }
8645              
8646             extern __inline __m256i
8647             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8648             _mm512_maskz_cvtps_ph (__mmask16 __W, __m512 __A, const int __I)
8649             {
8650             return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8651             __I,
8652             (__v16hi)
8653             _mm256_setzero_si256 (),
8654             (__mmask16) __W);
8655             }
8656             #else
8657             #define _mm512_cvt_roundps_pd(A, B) \
8658             (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, B)
8659              
8660             #define _mm512_mask_cvt_roundps_pd(W, U, A, B) \
8661             (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)(W), U, B)
8662              
8663             #define _mm512_maskz_cvt_roundps_pd(U, A, B) \
8664             (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), U, B)
8665              
8666             #define _mm512_cvt_roundph_ps(A, B) \
8667             (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
8668              
8669             #define _mm512_mask_cvt_roundph_ps(W, U, A, B) \
8670             (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)(W), U, B)
8671              
8672             #define _mm512_maskz_cvt_roundph_ps(U, A, B) \
8673             (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), U, B)
8674              
8675             #define _mm512_cvt_roundps_ph(A, I) \
8676             ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\
8677             (__v16hi)_mm256_undefined_si256 (), -1))
8678             #define _mm512_cvtps_ph(A, I) \
8679             ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\
8680             (__v16hi)_mm256_undefined_si256 (), -1))
8681             #define _mm512_mask_cvt_roundps_ph(U, W, A, I) \
8682             ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\
8683             (__v16hi)(__m256i)(U), (__mmask16) (W)))
8684             #define _mm512_mask_cvtps_ph(U, W, A, I) \
8685             ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\
8686             (__v16hi)(__m256i)(U), (__mmask16) (W)))
8687             #define _mm512_maskz_cvt_roundps_ph(W, A, I) \
8688             ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\
8689             (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W)))
8690             #define _mm512_maskz_cvtps_ph(W, A, I) \
8691             ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\
8692             (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W)))
8693             #endif
8694              
8695             #ifdef __OPTIMIZE__
8696             extern __inline __m256
8697             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8698             _mm512_cvt_roundpd_ps (__m512d __A, const int __R)
8699             {
8700             return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
8701             (__v8sf)
8702             _mm256_undefined_ps (),
8703             (__mmask8) -1, __R);
8704             }
8705              
8706             extern __inline __m256
8707             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8708             _mm512_mask_cvt_roundpd_ps (__m256 __W, __mmask8 __U, __m512d __A,
8709             const int __R)
8710             {
8711             return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
8712             (__v8sf) __W,
8713             (__mmask8) __U, __R);
8714             }
8715              
8716             extern __inline __m256
8717             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8718             _mm512_maskz_cvt_roundpd_ps (__mmask8 __U, __m512d __A, const int __R)
8719             {
8720             return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
8721             (__v8sf)
8722             _mm256_setzero_ps (),
8723             (__mmask8) __U, __R);
8724             }
8725              
8726             extern __inline __m128
8727             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8728             _mm_cvt_roundsd_ss (__m128 __A, __m128d __B, const int __R)
8729             {
8730             return (__m128) __builtin_ia32_cvtsd2ss_round ((__v4sf) __A,
8731             (__v2df) __B,
8732             __R);
8733             }
8734              
8735             extern __inline __m128
8736             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8737             _mm_mask_cvt_roundsd_ss (__m128 __W, __mmask8 __U, __m128 __A,
8738             __m128d __B, const int __R)
8739             {
8740             return (__m128) __builtin_ia32_cvtsd2ss_mask_round ((__v4sf) __A,
8741             (__v2df) __B,
8742             (__v4sf) __W,
8743             __U,
8744             __R);
8745             }
8746              
8747             extern __inline __m128
8748             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8749             _mm_maskz_cvt_roundsd_ss (__mmask8 __U, __m128 __A,
8750             __m128d __B, const int __R)
8751             {
8752             return (__m128) __builtin_ia32_cvtsd2ss_mask_round ((__v4sf) __A,
8753             (__v2df) __B,
8754             _mm_setzero_ps (),
8755             __U,
8756             __R);
8757             }
8758              
8759             extern __inline __m128d
8760             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8761             _mm_cvt_roundss_sd (__m128d __A, __m128 __B, const int __R)
8762             {
8763             return (__m128d) __builtin_ia32_cvtss2sd_round ((__v2df) __A,
8764             (__v4sf) __B,
8765             __R);
8766             }
8767              
8768             extern __inline __m128d
8769             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8770             _mm_mask_cvt_roundss_sd (__m128d __W, __mmask8 __U, __m128d __A,
8771             __m128 __B, const int __R)
8772             {
8773             return (__m128d) __builtin_ia32_cvtss2sd_mask_round ((__v2df) __A,
8774             (__v4sf) __B,
8775             (__v2df) __W,
8776             __U,
8777             __R);
8778             }
8779              
8780             extern __inline __m128d
8781             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8782             _mm_maskz_cvt_roundss_sd (__mmask8 __U, __m128d __A,
8783             __m128 __B, const int __R)
8784             {
8785             return (__m128d) __builtin_ia32_cvtss2sd_mask_round ((__v2df) __A,
8786             (__v4sf) __B,
8787             _mm_setzero_pd (),
8788             __U,
8789             __R);
8790             }
8791             #else
8792             #define _mm512_cvt_roundpd_ps(A, B) \
8793             (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_undefined_ps(), -1, B)
8794              
8795             #define _mm512_mask_cvt_roundpd_ps(W, U, A, B) \
8796             (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)(W), U, B)
8797              
8798             #define _mm512_maskz_cvt_roundpd_ps(U, A, B) \
8799             (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), U, B)
8800              
8801             #define _mm_cvt_roundsd_ss(A, B, C) \
8802             (__m128)__builtin_ia32_cvtsd2ss_round(A, B, C)
8803              
8804             #define _mm_mask_cvt_roundsd_ss(W, U, A, B, C) \
8805             (__m128)__builtin_ia32_cvtsd2ss_mask_round ((A), (B), (W), (U), (C))
8806              
8807             #define _mm_maskz_cvt_roundsd_ss(U, A, B, C) \
8808             (__m128)__builtin_ia32_cvtsd2ss_mask_round ((A), (B), _mm_setzero_ps (), \
8809             (U), (C))
8810              
8811             #define _mm_cvt_roundss_sd(A, B, C) \
8812             (__m128d)__builtin_ia32_cvtss2sd_round(A, B, C)
8813              
8814             #define _mm_mask_cvt_roundss_sd(W, U, A, B, C) \
8815             (__m128d)__builtin_ia32_cvtss2sd_mask_round ((A), (B), (W), (U), (C))
8816              
8817             #define _mm_maskz_cvt_roundss_sd(U, A, B, C) \
8818             (__m128d)__builtin_ia32_cvtss2sd_mask_round ((A), (B), _mm_setzero_pd (), \
8819             (U), (C))
8820              
8821             #endif
8822              
8823             #define _mm_mask_cvtss_sd(W, U, A, B) \
8824             _mm_mask_cvt_roundss_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
8825              
8826             #define _mm_maskz_cvtss_sd(U, A, B) \
8827             _mm_maskz_cvt_roundss_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
8828              
8829             #define _mm_mask_cvtsd_ss(W, U, A, B) \
8830             _mm_mask_cvt_roundsd_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION)
8831              
8832             #define _mm_maskz_cvtsd_ss(U, A, B) \
8833             _mm_maskz_cvt_roundsd_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION)
8834              
8835             extern __inline void
8836             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8837             _mm512_stream_si512 (__m512i * __P, __m512i __A)
8838             {
8839             __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8840             }
8841              
8842             extern __inline void
8843             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8844             _mm512_stream_ps (float *__P, __m512 __A)
8845             {
8846             __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8847             }
8848              
8849             extern __inline void
8850             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8851             _mm512_stream_pd (double *__P, __m512d __A)
8852             {
8853             __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8854             }
8855              
8856             extern __inline __m512i
8857             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8858             _mm512_stream_load_si512 (void *__P)
8859             {
8860             return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8861             }
8862              
8863             /* Constants for mantissa extraction */
8864             typedef enum
8865             {
8866             _MM_MANT_NORM_1_2, /* interval [1, 2) */
8867             _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
8868             _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
8869             _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
8870             } _MM_MANTISSA_NORM_ENUM;
8871              
8872             typedef enum
8873             {
8874             _MM_MANT_SIGN_src, /* sign = sign(SRC) */
8875             _MM_MANT_SIGN_zero, /* sign = 0 */
8876             _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
8877             } _MM_MANTISSA_SIGN_ENUM;
8878              
8879             #ifdef __OPTIMIZE__
8880             extern __inline __m128
8881             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8882             _mm_getexp_round_ss (__m128 __A, __m128 __B, const int __R)
8883             {
8884             return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A,
8885             (__v4sf) __B,
8886             __R);
8887             }
8888              
8889             extern __inline __m128
8890             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8891             _mm_mask_getexp_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
8892             __m128 __B, const int __R)
8893             {
8894             return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
8895             (__v4sf) __B,
8896             (__v4sf) __W,
8897             (__mmask8) __U, __R);
8898             }
8899              
8900             extern __inline __m128
8901             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8902             _mm_maskz_getexp_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
8903             const int __R)
8904             {
8905             return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
8906             (__v4sf) __B,
8907             (__v4sf)
8908             _mm_setzero_ps (),
8909             (__mmask8) __U, __R);
8910             }
8911              
8912             extern __inline __m128d
8913             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8914             _mm_getexp_round_sd (__m128d __A, __m128d __B, const int __R)
8915             {
8916             return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A,
8917             (__v2df) __B,
8918             __R);
8919             }
8920              
8921             extern __inline __m128d
8922             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8923             _mm_mask_getexp_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
8924             __m128d __B, const int __R)
8925             {
8926             return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
8927             (__v2df) __B,
8928             (__v2df) __W,
8929             (__mmask8) __U, __R);
8930             }
8931              
8932             extern __inline __m128d
8933             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8934             _mm_maskz_getexp_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
8935             const int __R)
8936             {
8937             return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
8938             (__v2df) __B,
8939             (__v2df)
8940             _mm_setzero_pd (),
8941             (__mmask8) __U, __R);
8942             }
8943              
8944             extern __inline __m512
8945             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8946             _mm512_getexp_round_ps (__m512 __A, const int __R)
8947             {
8948             return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8949             (__v16sf)
8950             _mm512_undefined_ps (),
8951             (__mmask16) -1, __R);
8952             }
8953              
8954             extern __inline __m512
8955             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8956             _mm512_mask_getexp_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
8957             const int __R)
8958             {
8959             return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8960             (__v16sf) __W,
8961             (__mmask16) __U, __R);
8962             }
8963              
8964             extern __inline __m512
8965             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8966             _mm512_maskz_getexp_round_ps (__mmask16 __U, __m512 __A, const int __R)
8967             {
8968             return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8969             (__v16sf)
8970             _mm512_setzero_ps (),
8971             (__mmask16) __U, __R);
8972             }
8973              
8974             extern __inline __m512d
8975             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8976             _mm512_getexp_round_pd (__m512d __A, const int __R)
8977             {
8978             return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8979             (__v8df)
8980             _mm512_undefined_pd (),
8981             (__mmask8) -1, __R);
8982             }
8983              
8984             extern __inline __m512d
8985             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8986             _mm512_mask_getexp_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
8987             const int __R)
8988             {
8989             return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8990             (__v8df) __W,
8991             (__mmask8) __U, __R);
8992             }
8993              
8994             extern __inline __m512d
8995             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8996             _mm512_maskz_getexp_round_pd (__mmask8 __U, __m512d __A, const int __R)
8997             {
8998             return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8999             (__v8df)
9000             _mm512_setzero_pd (),
9001             (__mmask8) __U, __R);
9002             }
9003              
9004             extern __inline __m512d
9005             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9006             _mm512_getmant_round_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B,
9007             _MM_MANTISSA_SIGN_ENUM __C, const int __R)
9008             {
9009             return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
9010             (__C << 2) | __B,
9011             _mm512_undefined_pd (),
9012             (__mmask8) -1, __R);
9013             }
9014              
9015             extern __inline __m512d
9016             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9017             _mm512_mask_getmant_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
9018             _MM_MANTISSA_NORM_ENUM __B,
9019             _MM_MANTISSA_SIGN_ENUM __C, const int __R)
9020             {
9021             return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
9022             (__C << 2) | __B,
9023             (__v8df) __W, __U,
9024             __R);
9025             }
9026              
9027             extern __inline __m512d
9028             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9029             _mm512_maskz_getmant_round_pd (__mmask8 __U, __m512d __A,
9030             _MM_MANTISSA_NORM_ENUM __B,
9031             _MM_MANTISSA_SIGN_ENUM __C, const int __R)
9032             {
9033             return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
9034             (__C << 2) | __B,
9035             (__v8df)
9036             _mm512_setzero_pd (),
9037             __U, __R);
9038             }
9039              
9040             extern __inline __m512
9041             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9042             _mm512_getmant_round_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B,
9043             _MM_MANTISSA_SIGN_ENUM __C, const int __R)
9044             {
9045             return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
9046             (__C << 2) | __B,
9047             _mm512_undefined_ps (),
9048             (__mmask16) -1, __R);
9049             }
9050              
9051             extern __inline __m512
9052             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9053             _mm512_mask_getmant_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
9054             _MM_MANTISSA_NORM_ENUM __B,
9055             _MM_MANTISSA_SIGN_ENUM __C, const int __R)
9056             {
9057             return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
9058             (__C << 2) | __B,
9059             (__v16sf) __W, __U,
9060             __R);
9061             }
9062              
9063             extern __inline __m512
9064             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9065             _mm512_maskz_getmant_round_ps (__mmask16 __U, __m512 __A,
9066             _MM_MANTISSA_NORM_ENUM __B,
9067             _MM_MANTISSA_SIGN_ENUM __C, const int __R)
9068             {
9069             return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
9070             (__C << 2) | __B,
9071             (__v16sf)
9072             _mm512_setzero_ps (),
9073             __U, __R);
9074             }
9075              
9076             extern __inline __m128d
9077             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9078             _mm_getmant_round_sd (__m128d __A, __m128d __B,
9079             _MM_MANTISSA_NORM_ENUM __C,
9080             _MM_MANTISSA_SIGN_ENUM __D, const int __R)
9081             {
9082             return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A,
9083             (__v2df) __B,
9084             (__D << 2) | __C,
9085             __R);
9086             }
9087              
9088             extern __inline __m128d
9089             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9090             _mm_mask_getmant_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
9091             __m128d __B, _MM_MANTISSA_NORM_ENUM __C,
9092             _MM_MANTISSA_SIGN_ENUM __D, const int __R)
9093             {
9094             return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
9095             (__v2df) __B,
9096             (__D << 2) | __C,
9097             (__v2df) __W,
9098             __U, __R);
9099             }
9100              
9101             extern __inline __m128d
9102             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9103             _mm_maskz_getmant_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
9104             _MM_MANTISSA_NORM_ENUM __C,
9105             _MM_MANTISSA_SIGN_ENUM __D, const int __R)
9106             {
9107             return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
9108             (__v2df) __B,
9109             (__D << 2) | __C,
9110             (__v2df)
9111             _mm_setzero_pd(),
9112             __U, __R);
9113             }
9114              
9115             extern __inline __m128
9116             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9117             _mm_getmant_round_ss (__m128 __A, __m128 __B,
9118             _MM_MANTISSA_NORM_ENUM __C,
9119             _MM_MANTISSA_SIGN_ENUM __D, const int __R)
9120             {
9121             return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A,
9122             (__v4sf) __B,
9123             (__D << 2) | __C,
9124             __R);
9125             }
9126              
9127             extern __inline __m128
9128             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9129             _mm_mask_getmant_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
9130             __m128 __B, _MM_MANTISSA_NORM_ENUM __C,
9131             _MM_MANTISSA_SIGN_ENUM __D, const int __R)
9132             {
9133             return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
9134             (__v4sf) __B,
9135             (__D << 2) | __C,
9136             (__v4sf) __W,
9137             __U, __R);
9138             }
9139              
9140             extern __inline __m128
9141             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9142             _mm_maskz_getmant_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
9143             _MM_MANTISSA_NORM_ENUM __C,
9144             _MM_MANTISSA_SIGN_ENUM __D, const int __R)
9145             {
9146             return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
9147             (__v4sf) __B,
9148             (__D << 2) | __C,
9149             (__v4sf)
9150             _mm_setzero_ps(),
9151             __U, __R);
9152             }
9153              
9154             #else
9155             #define _mm512_getmant_round_pd(X, B, C, R) \
9156             ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
9157             (int)(((C)<<2) | (B)), \
9158             (__v8df)(__m512d)_mm512_undefined_pd(), \
9159             (__mmask8)-1,\
9160             (R)))
9161              
9162             #define _mm512_mask_getmant_round_pd(W, U, X, B, C, R) \
9163             ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
9164             (int)(((C)<<2) | (B)), \
9165             (__v8df)(__m512d)(W), \
9166             (__mmask8)(U),\
9167             (R)))
9168              
9169             #define _mm512_maskz_getmant_round_pd(U, X, B, C, R) \
9170             ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
9171             (int)(((C)<<2) | (B)), \
9172             (__v8df)(__m512d)_mm512_setzero_pd(), \
9173             (__mmask8)(U),\
9174             (R)))
9175             #define _mm512_getmant_round_ps(X, B, C, R) \
9176             ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
9177             (int)(((C)<<2) | (B)), \
9178             (__v16sf)(__m512)_mm512_undefined_ps(), \
9179             (__mmask16)-1,\
9180             (R)))
9181              
9182             #define _mm512_mask_getmant_round_ps(W, U, X, B, C, R) \
9183             ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
9184             (int)(((C)<<2) | (B)), \
9185             (__v16sf)(__m512)(W), \
9186             (__mmask16)(U),\
9187             (R)))
9188              
9189             #define _mm512_maskz_getmant_round_ps(U, X, B, C, R) \
9190             ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
9191             (int)(((C)<<2) | (B)), \
9192             (__v16sf)(__m512)_mm512_setzero_ps(), \
9193             (__mmask16)(U),\
9194             (R)))
9195             #define _mm_getmant_round_sd(X, Y, C, D, R) \
9196             ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X), \
9197             (__v2df)(__m128d)(Y), \
9198             (int)(((D)<<2) | (C)), \
9199             (R)))
9200              
9201             #define _mm_mask_getmant_round_sd(W, U, X, Y, C, D, R) \
9202             ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
9203             (__v2df)(__m128d)(Y), \
9204             (int)(((D)<<2) | (C)), \
9205             (__v2df)(__m128d)(W), \
9206             (__mmask8)(U),\
9207             (R)))
9208              
9209             #define _mm_maskz_getmant_round_sd(U, X, Y, C, D, R) \
9210             ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
9211             (__v2df)(__m128d)(Y), \
9212             (int)(((D)<<2) | (C)), \
9213             (__v2df)(__m128d)_mm_setzero_pd(), \
9214             (__mmask8)(U),\
9215             (R)))
9216              
9217             #define _mm_getmant_round_ss(X, Y, C, D, R) \
9218             ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X), \
9219             (__v4sf)(__m128)(Y), \
9220             (int)(((D)<<2) | (C)), \
9221             (R)))
9222              
9223             #define _mm_mask_getmant_round_ss(W, U, X, Y, C, D, R) \
9224             ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
9225             (__v4sf)(__m128)(Y), \
9226             (int)(((D)<<2) | (C)), \
9227             (__v4sf)(__m128)(W), \
9228             (__mmask8)(U),\
9229             (R)))
9230              
9231             #define _mm_maskz_getmant_round_ss(U, X, Y, C, D, R) \
9232             ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
9233             (__v4sf)(__m128)(Y), \
9234             (int)(((D)<<2) | (C)), \
9235             (__v4sf)(__m128)_mm_setzero_ps(), \
9236             (__mmask8)(U),\
9237             (R)))
9238              
9239             #define _mm_getexp_round_ss(A, B, R) \
9240             ((__m128)__builtin_ia32_getexpss128_round((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), R))
9241              
9242             #define _mm_mask_getexp_round_ss(W, U, A, B, C) \
9243             (__m128)__builtin_ia32_getexpss_mask_round(A, B, W, U, C)
9244              
9245             #define _mm_maskz_getexp_round_ss(U, A, B, C) \
9246             (__m128)__builtin_ia32_getexpss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
9247              
9248             #define _mm_getexp_round_sd(A, B, R) \
9249             ((__m128d)__builtin_ia32_getexpsd128_round((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), R))
9250              
9251             #define _mm_mask_getexp_round_sd(W, U, A, B, C) \
9252             (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, W, U, C)
9253              
9254             #define _mm_maskz_getexp_round_sd(U, A, B, C) \
9255             (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
9256              
9257              
9258             #define _mm512_getexp_round_ps(A, R) \
9259             ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
9260             (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, R))
9261              
9262             #define _mm512_mask_getexp_round_ps(W, U, A, R) \
9263             ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
9264             (__v16sf)(__m512)(W), (__mmask16)(U), R))
9265              
9266             #define _mm512_maskz_getexp_round_ps(U, A, R) \
9267             ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
9268             (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), R))
9269              
9270             #define _mm512_getexp_round_pd(A, R) \
9271             ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
9272             (__v8df)_mm512_undefined_pd(), (__mmask8)-1, R))
9273              
9274             #define _mm512_mask_getexp_round_pd(W, U, A, R) \
9275             ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
9276             (__v8df)(__m512d)(W), (__mmask8)(U), R))
9277              
9278             #define _mm512_maskz_getexp_round_pd(U, A, R) \
9279             ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
9280             (__v8df)_mm512_setzero_pd(), (__mmask8)(U), R))
9281             #endif
9282              
9283             #ifdef __OPTIMIZE__
9284             extern __inline __m512
9285             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9286             _mm512_roundscale_round_ps (__m512 __A, const int __imm, const int __R)
9287             {
9288             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
9289             (__v16sf)
9290             _mm512_undefined_ps (),
9291             -1, __R);
9292             }
9293              
9294             extern __inline __m512
9295             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9296             _mm512_mask_roundscale_round_ps (__m512 __A, __mmask16 __B, __m512 __C,
9297             const int __imm, const int __R)
9298             {
9299             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,
9300             (__v16sf) __A,
9301             (__mmask16) __B, __R);
9302             }
9303              
9304             extern __inline __m512
9305             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9306             _mm512_maskz_roundscale_round_ps (__mmask16 __A, __m512 __B,
9307             const int __imm, const int __R)
9308             {
9309             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B,
9310             __imm,
9311             (__v16sf)
9312             _mm512_setzero_ps (),
9313             (__mmask16) __A, __R);
9314             }
9315              
9316             extern __inline __m512d
9317             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9318             _mm512_roundscale_round_pd (__m512d __A, const int __imm, const int __R)
9319             {
9320             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
9321             (__v8df)
9322             _mm512_undefined_pd (),
9323             -1, __R);
9324             }
9325              
9326             extern __inline __m512d
9327             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9328             _mm512_mask_roundscale_round_pd (__m512d __A, __mmask8 __B,
9329             __m512d __C, const int __imm, const int __R)
9330             {
9331             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,
9332             (__v8df) __A,
9333             (__mmask8) __B, __R);
9334             }
9335              
9336             extern __inline __m512d
9337             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9338             _mm512_maskz_roundscale_round_pd (__mmask8 __A, __m512d __B,
9339             const int __imm, const int __R)
9340             {
9341             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B,
9342             __imm,
9343             (__v8df)
9344             _mm512_setzero_pd (),
9345             (__mmask8) __A, __R);
9346             }
9347              
9348             extern __inline __m128
9349             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9350             _mm_roundscale_round_ss (__m128 __A, __m128 __B, const int __imm,
9351             const int __R)
9352             {
9353             return (__m128)
9354             __builtin_ia32_rndscaless_mask_round ((__v4sf) __A,
9355             (__v4sf) __B, __imm,
9356             (__v4sf)
9357             _mm_setzero_ps (),
9358             (__mmask8) -1,
9359             __R);
9360             }
9361              
9362             extern __inline __m128
9363             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9364             _mm_mask_roundscale_round_ss (__m128 __A, __mmask8 __B, __m128 __C,
9365             __m128 __D, const int __imm, const int __R)
9366             {
9367             return (__m128)
9368             __builtin_ia32_rndscaless_mask_round ((__v4sf) __C,
9369             (__v4sf) __D, __imm,
9370             (__v4sf) __A,
9371             (__mmask8) __B,
9372             __R);
9373             }
9374              
9375             extern __inline __m128
9376             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9377             _mm_maskz_roundscale_round_ss (__mmask8 __A, __m128 __B, __m128 __C,
9378             const int __imm, const int __R)
9379             {
9380             return (__m128)
9381             __builtin_ia32_rndscaless_mask_round ((__v4sf) __B,
9382             (__v4sf) __C, __imm,
9383             (__v4sf)
9384             _mm_setzero_ps (),
9385             (__mmask8) __A,
9386             __R);
9387             }
9388              
9389             extern __inline __m128d
9390             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9391             _mm_roundscale_round_sd (__m128d __A, __m128d __B, const int __imm,
9392             const int __R)
9393             {
9394             return (__m128d)
9395             __builtin_ia32_rndscalesd_mask_round ((__v2df) __A,
9396             (__v2df) __B, __imm,
9397             (__v2df)
9398             _mm_setzero_pd (),
9399             (__mmask8) -1,
9400             __R);
9401             }
9402              
9403             extern __inline __m128d
9404             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9405             _mm_mask_roundscale_round_sd (__m128d __A, __mmask8 __B, __m128d __C,
9406             __m128d __D, const int __imm, const int __R)
9407             {
9408             return (__m128d)
9409             __builtin_ia32_rndscalesd_mask_round ((__v2df) __C,
9410             (__v2df) __D, __imm,
9411             (__v2df) __A,
9412             (__mmask8) __B,
9413             __R);
9414             }
9415              
9416             extern __inline __m128d
9417             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9418             _mm_maskz_roundscale_round_sd (__mmask8 __A, __m128d __B, __m128d __C,
9419             const int __imm, const int __R)
9420             {
9421             return (__m128d)
9422             __builtin_ia32_rndscalesd_mask_round ((__v2df) __B,
9423             (__v2df) __C, __imm,
9424             (__v2df)
9425             _mm_setzero_pd (),
9426             (__mmask8) __A,
9427             __R);
9428             }
9429              
9430             #else
9431             #define _mm512_roundscale_round_ps(A, B, R) \
9432             ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\
9433             (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), R))
9434             #define _mm512_mask_roundscale_round_ps(A, B, C, D, R) \
9435             ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \
9436             (int)(D), \
9437             (__v16sf)(__m512)(A), \
9438             (__mmask16)(B), R))
9439             #define _mm512_maskz_roundscale_round_ps(A, B, C, R) \
9440             ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \
9441             (int)(C), \
9442             (__v16sf)_mm512_setzero_ps(),\
9443             (__mmask16)(A), R))
9444             #define _mm512_roundscale_round_pd(A, B, R) \
9445             ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\
9446             (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), R))
9447             #define _mm512_mask_roundscale_round_pd(A, B, C, D, R) \
9448             ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \
9449             (int)(D), \
9450             (__v8df)(__m512d)(A), \
9451             (__mmask8)(B), R))
9452             #define _mm512_maskz_roundscale_round_pd(A, B, C, R) \
9453             ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \
9454             (int)(C), \
9455             (__v8df)_mm512_setzero_pd(),\
9456             (__mmask8)(A), R))
9457             #define _mm_roundscale_round_ss(A, B, I, R) \
9458             ((__m128) \
9459             __builtin_ia32_rndscaless_mask_round ((__v4sf) (__m128) (A), \
9460             (__v4sf) (__m128) (B), \
9461             (int) (I), \
9462             (__v4sf) _mm_setzero_ps (), \
9463             (__mmask8) (-1), \
9464             (int) (R)))
9465             #define _mm_mask_roundscale_round_ss(A, U, B, C, I, R) \
9466             ((__m128) \
9467             __builtin_ia32_rndscaless_mask_round ((__v4sf) (__m128) (B), \
9468             (__v4sf) (__m128) (C), \
9469             (int) (I), \
9470             (__v4sf) (__m128) (A), \
9471             (__mmask8) (U), \
9472             (int) (R)))
9473             #define _mm_maskz_roundscale_round_ss(U, A, B, I, R) \
9474             ((__m128) \
9475             __builtin_ia32_rndscaless_mask_round ((__v4sf) (__m128) (A), \
9476             (__v4sf) (__m128) (B), \
9477             (int) (I), \
9478             (__v4sf) _mm_setzero_ps (), \
9479             (__mmask8) (U), \
9480             (int) (R)))
9481             #define _mm_roundscale_round_sd(A, B, I, R) \
9482             ((__m128d) \
9483             __builtin_ia32_rndscalesd_mask_round ((__v2df) (__m128d) (A), \
9484             (__v2df) (__m128d) (B), \
9485             (int) (I), \
9486             (__v2df) _mm_setzero_pd (), \
9487             (__mmask8) (-1), \
9488             (int) (R)))
9489             #define _mm_mask_roundscale_round_sd(A, U, B, C, I, R) \
9490             ((__m128d) \
9491             __builtin_ia32_rndscalesd_mask_round ((__v2df) (__m128d) (B), \
9492             (__v2df) (__m128d) (C), \
9493             (int) (I), \
9494             (__v2df) (__m128d) (A), \
9495             (__mmask8) (U), \
9496             (int) (R)))
9497             #define _mm_maskz_roundscale_round_sd(U, A, B, I, R) \
9498             ((__m128d) \
9499             __builtin_ia32_rndscalesd_mask_round ((__v2df) (__m128d) (A), \
9500             (__v2df) (__m128d) (B), \
9501             (int) (I), \
9502             (__v2df) _mm_setzero_pd (), \
9503             (__mmask8) (U), \
9504             (int) (R)))
9505             #endif
9506              
9507             extern __inline __m512
9508             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9509             _mm512_floor_ps (__m512 __A)
9510             {
9511             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9512             _MM_FROUND_FLOOR,
9513             (__v16sf) __A, -1,
9514             _MM_FROUND_CUR_DIRECTION);
9515             }
9516              
9517             extern __inline __m512d
9518             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9519             _mm512_floor_pd (__m512d __A)
9520             {
9521             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9522             _MM_FROUND_FLOOR,
9523             (__v8df) __A, -1,
9524             _MM_FROUND_CUR_DIRECTION);
9525             }
9526              
9527             extern __inline __m512
9528             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9529             _mm512_ceil_ps (__m512 __A)
9530             {
9531             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9532             _MM_FROUND_CEIL,
9533             (__v16sf) __A, -1,
9534             _MM_FROUND_CUR_DIRECTION);
9535             }
9536              
9537             extern __inline __m512d
9538             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9539             _mm512_ceil_pd (__m512d __A)
9540             {
9541             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9542             _MM_FROUND_CEIL,
9543             (__v8df) __A, -1,
9544             _MM_FROUND_CUR_DIRECTION);
9545             }
9546              
9547             extern __inline __m512
9548             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9549             _mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
9550             {
9551             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9552             _MM_FROUND_FLOOR,
9553             (__v16sf) __W, __U,
9554             _MM_FROUND_CUR_DIRECTION);
9555             }
9556              
9557             extern __inline __m512d
9558             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9559             _mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
9560             {
9561             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9562             _MM_FROUND_FLOOR,
9563             (__v8df) __W, __U,
9564             _MM_FROUND_CUR_DIRECTION);
9565             }
9566              
9567             extern __inline __m512
9568             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9569             _mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
9570             {
9571             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9572             _MM_FROUND_CEIL,
9573             (__v16sf) __W, __U,
9574             _MM_FROUND_CUR_DIRECTION);
9575             }
9576              
9577             extern __inline __m512d
9578             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9579             _mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
9580             {
9581             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9582             _MM_FROUND_CEIL,
9583             (__v8df) __W, __U,
9584             _MM_FROUND_CUR_DIRECTION);
9585             }
9586              
9587             #ifdef __OPTIMIZE__
9588             extern __inline __m512i
9589             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9590             _mm512_alignr_epi32 (__m512i __A, __m512i __B, const int __imm)
9591             {
9592             return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
9593             (__v16si) __B, __imm,
9594             (__v16si)
9595             _mm512_undefined_epi32 (),
9596             (__mmask16) -1);
9597             }
9598              
9599             extern __inline __m512i
9600             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9601             _mm512_mask_alignr_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
9602             __m512i __B, const int __imm)
9603             {
9604             return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
9605             (__v16si) __B, __imm,
9606             (__v16si) __W,
9607             (__mmask16) __U);
9608             }
9609              
9610             extern __inline __m512i
9611             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9612             _mm512_maskz_alignr_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
9613             const int __imm)
9614             {
9615             return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
9616             (__v16si) __B, __imm,
9617             (__v16si)
9618             _mm512_setzero_si512 (),
9619             (__mmask16) __U);
9620             }
9621              
9622             extern __inline __m512i
9623             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9624             _mm512_alignr_epi64 (__m512i __A, __m512i __B, const int __imm)
9625             {
9626             return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
9627             (__v8di) __B, __imm,
9628             (__v8di)
9629             _mm512_undefined_epi32 (),
9630             (__mmask8) -1);
9631             }
9632              
9633             extern __inline __m512i
9634             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9635             _mm512_mask_alignr_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
9636             __m512i __B, const int __imm)
9637             {
9638             return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
9639             (__v8di) __B, __imm,
9640             (__v8di) __W,
9641             (__mmask8) __U);
9642             }
9643              
9644             extern __inline __m512i
9645             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9646             _mm512_maskz_alignr_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
9647             const int __imm)
9648             {
9649             return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
9650             (__v8di) __B, __imm,
9651             (__v8di)
9652             _mm512_setzero_si512 (),
9653             (__mmask8) __U);
9654             }
9655             #else
9656             #define _mm512_alignr_epi32(X, Y, C) \
9657             ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \
9658             (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_undefined_epi32 (),\
9659             (__mmask16)-1))
9660              
9661             #define _mm512_mask_alignr_epi32(W, U, X, Y, C) \
9662             ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \
9663             (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)(W), \
9664             (__mmask16)(U)))
9665              
9666             #define _mm512_maskz_alignr_epi32(U, X, Y, C) \
9667             ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \
9668             (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_setzero_si512 (),\
9669             (__mmask16)(U)))
9670              
9671             #define _mm512_alignr_epi64(X, Y, C) \
9672             ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \
9673             (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_undefined_epi32 (), \
9674             (__mmask8)-1))
9675              
9676             #define _mm512_mask_alignr_epi64(W, U, X, Y, C) \
9677             ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \
9678             (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)(W), (__mmask8)(U)))
9679              
9680             #define _mm512_maskz_alignr_epi64(U, X, Y, C) \
9681             ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \
9682             (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_setzero_si512 (),\
9683             (__mmask8)(U)))
9684             #endif
9685              
9686             extern __inline __mmask16
9687             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9688             _mm512_cmpeq_epi32_mask (__m512i __A, __m512i __B)
9689             {
9690             return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A,
9691             (__v16si) __B,
9692             (__mmask16) -1);
9693             }
9694              
9695             extern __inline __mmask16
9696             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9697             _mm512_mask_cmpeq_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
9698             {
9699             return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A,
9700             (__v16si) __B, __U);
9701             }
9702              
9703             extern __inline __mmask8
9704             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9705             _mm512_mask_cmpeq_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
9706             {
9707             return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A,
9708             (__v8di) __B, __U);
9709             }
9710              
9711             extern __inline __mmask8
9712             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9713             _mm512_cmpeq_epi64_mask (__m512i __A, __m512i __B)
9714             {
9715             return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A,
9716             (__v8di) __B,
9717             (__mmask8) -1);
9718             }
9719              
9720             extern __inline __mmask16
9721             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9722             _mm512_cmpgt_epi32_mask (__m512i __A, __m512i __B)
9723             {
9724             return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A,
9725             (__v16si) __B,
9726             (__mmask16) -1);
9727             }
9728              
9729             extern __inline __mmask16
9730             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9731             _mm512_mask_cmpgt_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
9732             {
9733             return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A,
9734             (__v16si) __B, __U);
9735             }
9736              
9737             extern __inline __mmask8
9738             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9739             _mm512_mask_cmpgt_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
9740             {
9741             return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A,
9742             (__v8di) __B, __U);
9743             }
9744              
9745             extern __inline __mmask8
9746             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9747             _mm512_cmpgt_epi64_mask (__m512i __A, __m512i __B)
9748             {
9749             return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A,
9750             (__v8di) __B,
9751             (__mmask8) -1);
9752             }
9753              
9754             extern __inline __mmask16
9755             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9756             _mm512_cmpge_epi32_mask (__m512i __X, __m512i __Y)
9757             {
9758             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9759             (__v16si) __Y, 5,
9760             (__mmask16) -1);
9761             }
9762              
9763             extern __inline __mmask16
9764             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9765             _mm512_mask_cmpge_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9766             {
9767             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9768             (__v16si) __Y, 5,
9769             (__mmask16) __M);
9770             }
9771              
9772             extern __inline __mmask16
9773             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9774             _mm512_mask_cmpge_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9775             {
9776             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9777             (__v16si) __Y, 5,
9778             (__mmask16) __M);
9779             }
9780              
9781             extern __inline __mmask16
9782             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9783             _mm512_cmpge_epu32_mask (__m512i __X, __m512i __Y)
9784             {
9785             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9786             (__v16si) __Y, 5,
9787             (__mmask16) -1);
9788             }
9789              
9790             extern __inline __mmask8
9791             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9792             _mm512_mask_cmpge_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9793             {
9794             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9795             (__v8di) __Y, 5,
9796             (__mmask8) __M);
9797             }
9798              
9799             extern __inline __mmask8
9800             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9801             _mm512_cmpge_epi64_mask (__m512i __X, __m512i __Y)
9802             {
9803             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9804             (__v8di) __Y, 5,
9805             (__mmask8) -1);
9806             }
9807              
9808             extern __inline __mmask8
9809             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9810             _mm512_mask_cmpge_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9811             {
9812             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9813             (__v8di) __Y, 5,
9814             (__mmask8) __M);
9815             }
9816              
9817             extern __inline __mmask8
9818             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9819             _mm512_cmpge_epu64_mask (__m512i __X, __m512i __Y)
9820             {
9821             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9822             (__v8di) __Y, 5,
9823             (__mmask8) -1);
9824             }
9825              
9826             extern __inline __mmask16
9827             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9828             _mm512_mask_cmple_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9829             {
9830             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9831             (__v16si) __Y, 2,
9832             (__mmask16) __M);
9833             }
9834              
9835             extern __inline __mmask16
9836             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9837             _mm512_cmple_epi32_mask (__m512i __X, __m512i __Y)
9838             {
9839             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9840             (__v16si) __Y, 2,
9841             (__mmask16) -1);
9842             }
9843              
9844             extern __inline __mmask16
9845             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9846             _mm512_mask_cmple_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9847             {
9848             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9849             (__v16si) __Y, 2,
9850             (__mmask16) __M);
9851             }
9852              
9853             extern __inline __mmask16
9854             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9855             _mm512_cmple_epu32_mask (__m512i __X, __m512i __Y)
9856             {
9857             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9858             (__v16si) __Y, 2,
9859             (__mmask16) -1);
9860             }
9861              
9862             extern __inline __mmask8
9863             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9864             _mm512_mask_cmple_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9865             {
9866             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9867             (__v8di) __Y, 2,
9868             (__mmask8) __M);
9869             }
9870              
9871             extern __inline __mmask8
9872             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9873             _mm512_cmple_epi64_mask (__m512i __X, __m512i __Y)
9874             {
9875             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9876             (__v8di) __Y, 2,
9877             (__mmask8) -1);
9878             }
9879              
9880             extern __inline __mmask8
9881             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9882             _mm512_mask_cmple_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9883             {
9884             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9885             (__v8di) __Y, 2,
9886             (__mmask8) __M);
9887             }
9888              
9889             extern __inline __mmask8
9890             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9891             _mm512_cmple_epu64_mask (__m512i __X, __m512i __Y)
9892             {
9893             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9894             (__v8di) __Y, 2,
9895             (__mmask8) -1);
9896             }
9897              
9898             extern __inline __mmask16
9899             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9900             _mm512_mask_cmplt_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9901             {
9902             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9903             (__v16si) __Y, 1,
9904             (__mmask16) __M);
9905             }
9906              
9907             extern __inline __mmask16
9908             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9909             _mm512_cmplt_epi32_mask (__m512i __X, __m512i __Y)
9910             {
9911             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9912             (__v16si) __Y, 1,
9913             (__mmask16) -1);
9914             }
9915              
9916             extern __inline __mmask16
9917             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9918             _mm512_mask_cmplt_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9919             {
9920             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9921             (__v16si) __Y, 1,
9922             (__mmask16) __M);
9923             }
9924              
9925             extern __inline __mmask16
9926             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9927             _mm512_cmplt_epu32_mask (__m512i __X, __m512i __Y)
9928             {
9929             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9930             (__v16si) __Y, 1,
9931             (__mmask16) -1);
9932             }
9933              
9934             extern __inline __mmask8
9935             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9936             _mm512_mask_cmplt_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9937             {
9938             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9939             (__v8di) __Y, 1,
9940             (__mmask8) __M);
9941             }
9942              
9943             extern __inline __mmask8
9944             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9945             _mm512_cmplt_epi64_mask (__m512i __X, __m512i __Y)
9946             {
9947             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9948             (__v8di) __Y, 1,
9949             (__mmask8) -1);
9950             }
9951              
9952             extern __inline __mmask8
9953             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9954             _mm512_mask_cmplt_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9955             {
9956             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9957             (__v8di) __Y, 1,
9958             (__mmask8) __M);
9959             }
9960              
9961             extern __inline __mmask8
9962             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9963             _mm512_cmplt_epu64_mask (__m512i __X, __m512i __Y)
9964             {
9965             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9966             (__v8di) __Y, 1,
9967             (__mmask8) -1);
9968             }
9969              
9970             extern __inline __mmask16
9971             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9972             _mm512_cmpneq_epi32_mask (__m512i __X, __m512i __Y)
9973             {
9974             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9975             (__v16si) __Y, 4,
9976             (__mmask16) -1);
9977             }
9978              
9979             extern __inline __mmask16
9980             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9981             _mm512_mask_cmpneq_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9982             {
9983             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9984             (__v16si) __Y, 4,
9985             (__mmask16) __M);
9986             }
9987              
9988             extern __inline __mmask16
9989             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9990             _mm512_mask_cmpneq_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9991             {
9992             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9993             (__v16si) __Y, 4,
9994             (__mmask16) __M);
9995             }
9996              
9997             extern __inline __mmask16
9998             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9999             _mm512_cmpneq_epu32_mask (__m512i __X, __m512i __Y)
10000             {
10001             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
10002             (__v16si) __Y, 4,
10003             (__mmask16) -1);
10004             }
10005              
10006             extern __inline __mmask8
10007             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10008             _mm512_mask_cmpneq_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
10009             {
10010             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
10011             (__v8di) __Y, 4,
10012             (__mmask8) __M);
10013             }
10014              
10015             extern __inline __mmask8
10016             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10017             _mm512_cmpneq_epi64_mask (__m512i __X, __m512i __Y)
10018             {
10019             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
10020             (__v8di) __Y, 4,
10021             (__mmask8) -1);
10022             }
10023              
10024             extern __inline __mmask8
10025             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10026             _mm512_mask_cmpneq_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
10027             {
10028             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
10029             (__v8di) __Y, 4,
10030             (__mmask8) __M);
10031             }
10032              
10033             extern __inline __mmask8
10034             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10035             _mm512_cmpneq_epu64_mask (__m512i __X, __m512i __Y)
10036             {
10037             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
10038             (__v8di) __Y, 4,
10039             (__mmask8) -1);
10040             }
10041              
10042             #define _MM_CMPINT_EQ 0x0
10043             #define _MM_CMPINT_LT 0x1
10044             #define _MM_CMPINT_LE 0x2
10045             #define _MM_CMPINT_UNUSED 0x3
10046             #define _MM_CMPINT_NE 0x4
10047             #define _MM_CMPINT_NLT 0x5
10048             #define _MM_CMPINT_GE 0x5
10049             #define _MM_CMPINT_NLE 0x6
10050             #define _MM_CMPINT_GT 0x6
10051              
10052             #ifdef __OPTIMIZE__
10053             extern __inline __mmask16
10054             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10055             _kshiftli_mask16 (__mmask16 __A, unsigned int __B)
10056             {
10057             return (__mmask16) __builtin_ia32_kshiftlihi ((__mmask16) __A,
10058             (__mmask8) __B);
10059             }
10060              
10061             extern __inline __mmask16
10062             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10063             _kshiftri_mask16 (__mmask16 __A, unsigned int __B)
10064             {
10065             return (__mmask16) __builtin_ia32_kshiftrihi ((__mmask16) __A,
10066             (__mmask8) __B);
10067             }
10068              
10069             extern __inline __mmask8
10070             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10071             _mm512_cmp_epi64_mask (__m512i __X, __m512i __Y, const int __P)
10072             {
10073             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
10074             (__v8di) __Y, __P,
10075             (__mmask8) -1);
10076             }
10077              
10078             extern __inline __mmask16
10079             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10080             _mm512_cmp_epi32_mask (__m512i __X, __m512i __Y, const int __P)
10081             {
10082             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
10083             (__v16si) __Y, __P,
10084             (__mmask16) -1);
10085             }
10086              
10087             extern __inline __mmask8
10088             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10089             _mm512_cmp_epu64_mask (__m512i __X, __m512i __Y, const int __P)
10090             {
10091             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
10092             (__v8di) __Y, __P,
10093             (__mmask8) -1);
10094             }
10095              
10096             extern __inline __mmask16
10097             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10098             _mm512_cmp_epu32_mask (__m512i __X, __m512i __Y, const int __P)
10099             {
10100             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
10101             (__v16si) __Y, __P,
10102             (__mmask16) -1);
10103             }
10104              
10105             extern __inline __mmask8
10106             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10107             _mm512_cmp_round_pd_mask (__m512d __X, __m512d __Y, const int __P,
10108             const int __R)
10109             {
10110             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
10111             (__v8df) __Y, __P,
10112             (__mmask8) -1, __R);
10113             }
10114              
10115             extern __inline __mmask16
10116             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10117             _mm512_cmp_round_ps_mask (__m512 __X, __m512 __Y, const int __P, const int __R)
10118             {
10119             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
10120             (__v16sf) __Y, __P,
10121             (__mmask16) -1, __R);
10122             }
10123              
10124             extern __inline __mmask8
10125             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10126             _mm512_mask_cmp_epi64_mask (__mmask8 __U, __m512i __X, __m512i __Y,
10127             const int __P)
10128             {
10129             return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
10130             (__v8di) __Y, __P,
10131             (__mmask8) __U);
10132             }
10133              
10134             extern __inline __mmask16
10135             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10136             _mm512_mask_cmp_epi32_mask (__mmask16 __U, __m512i __X, __m512i __Y,
10137             const int __P)
10138             {
10139             return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
10140             (__v16si) __Y, __P,
10141             (__mmask16) __U);
10142             }
10143              
10144             extern __inline __mmask8
10145             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10146             _mm512_mask_cmp_epu64_mask (__mmask8 __U, __m512i __X, __m512i __Y,
10147             const int __P)
10148             {
10149             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
10150             (__v8di) __Y, __P,
10151             (__mmask8) __U);
10152             }
10153              
10154             extern __inline __mmask16
10155             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10156             _mm512_mask_cmp_epu32_mask (__mmask16 __U, __m512i __X, __m512i __Y,
10157             const int __P)
10158             {
10159             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
10160             (__v16si) __Y, __P,
10161             (__mmask16) __U);
10162             }
10163              
10164             extern __inline __mmask8
10165             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10166             _mm512_mask_cmp_round_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y,
10167             const int __P, const int __R)
10168             {
10169             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
10170             (__v8df) __Y, __P,
10171             (__mmask8) __U, __R);
10172             }
10173              
10174             extern __inline __mmask16
10175             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10176             _mm512_mask_cmp_round_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y,
10177             const int __P, const int __R)
10178             {
10179             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
10180             (__v16sf) __Y, __P,
10181             (__mmask16) __U, __R);
10182             }
10183              
10184             extern __inline __mmask8
10185             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10186             _mm_cmp_round_sd_mask (__m128d __X, __m128d __Y, const int __P, const int __R)
10187             {
10188             return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
10189             (__v2df) __Y, __P,
10190             (__mmask8) -1, __R);
10191             }
10192              
10193             extern __inline __mmask8
10194             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10195             _mm_mask_cmp_round_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y,
10196             const int __P, const int __R)
10197             {
10198             return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
10199             (__v2df) __Y, __P,
10200             (__mmask8) __M, __R);
10201             }
10202              
10203             extern __inline __mmask8
10204             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10205             _mm_cmp_round_ss_mask (__m128 __X, __m128 __Y, const int __P, const int __R)
10206             {
10207             return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
10208             (__v4sf) __Y, __P,
10209             (__mmask8) -1, __R);
10210             }
10211              
10212             extern __inline __mmask8
10213             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10214             _mm_mask_cmp_round_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y,
10215             const int __P, const int __R)
10216             {
10217             return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
10218             (__v4sf) __Y, __P,
10219             (__mmask8) __M, __R);
10220             }
10221              
10222             #else
10223             #define _kshiftli_mask16(X, Y) \
10224             ((__mmask16) __builtin_ia32_kshiftlihi ((__mmask16)(X), (__mmask8)(Y)))
10225              
10226             #define _kshiftri_mask16(X, Y) \
10227             ((__mmask16) __builtin_ia32_kshiftrihi ((__mmask16)(X), (__mmask8)(Y)))
10228              
10229             #define _mm512_cmp_epi64_mask(X, Y, P) \
10230             ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \
10231             (__v8di)(__m512i)(Y), (int)(P),\
10232             (__mmask8)-1))
10233              
10234             #define _mm512_cmp_epi32_mask(X, Y, P) \
10235             ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \
10236             (__v16si)(__m512i)(Y), (int)(P), \
10237             (__mmask16)-1))
10238              
10239             #define _mm512_cmp_epu64_mask(X, Y, P) \
10240             ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \
10241             (__v8di)(__m512i)(Y), (int)(P),\
10242             (__mmask8)-1))
10243              
10244             #define _mm512_cmp_epu32_mask(X, Y, P) \
10245             ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \
10246             (__v16si)(__m512i)(Y), (int)(P), \
10247             (__mmask16)-1))
10248              
10249             #define _mm512_cmp_round_pd_mask(X, Y, P, R) \
10250             ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
10251             (__v8df)(__m512d)(Y), (int)(P),\
10252             (__mmask8)-1, R))
10253              
10254             #define _mm512_cmp_round_ps_mask(X, Y, P, R) \
10255             ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
10256             (__v16sf)(__m512)(Y), (int)(P),\
10257             (__mmask16)-1, R))
10258              
10259             #define _mm512_mask_cmp_epi64_mask(M, X, Y, P) \
10260             ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \
10261             (__v8di)(__m512i)(Y), (int)(P),\
10262             (__mmask8)(M)))
10263              
10264             #define _mm512_mask_cmp_epi32_mask(M, X, Y, P) \
10265             ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \
10266             (__v16si)(__m512i)(Y), (int)(P), \
10267             (__mmask16)(M)))
10268              
10269             #define _mm512_mask_cmp_epu64_mask(M, X, Y, P) \
10270             ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \
10271             (__v8di)(__m512i)(Y), (int)(P),\
10272             (__mmask8)(M)))
10273              
10274             #define _mm512_mask_cmp_epu32_mask(M, X, Y, P) \
10275             ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \
10276             (__v16si)(__m512i)(Y), (int)(P), \
10277             (__mmask16)(M)))
10278              
10279             #define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R) \
10280             ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
10281             (__v8df)(__m512d)(Y), (int)(P),\
10282             (__mmask8)(M), R))
10283              
10284             #define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R) \
10285             ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
10286             (__v16sf)(__m512)(Y), (int)(P),\
10287             (__mmask16)(M), R))
10288              
10289             #define _mm_cmp_round_sd_mask(X, Y, P, R) \
10290             ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
10291             (__v2df)(__m128d)(Y), (int)(P),\
10292             (__mmask8)-1, R))
10293              
10294             #define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) \
10295             ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
10296             (__v2df)(__m128d)(Y), (int)(P),\
10297             (M), R))
10298              
10299             #define _mm_cmp_round_ss_mask(X, Y, P, R) \
10300             ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
10301             (__v4sf)(__m128)(Y), (int)(P), \
10302             (__mmask8)-1, R))
10303              
10304             #define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) \
10305             ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
10306             (__v4sf)(__m128)(Y), (int)(P), \
10307             (M), R))
10308             #endif
10309              
10310             #ifdef __OPTIMIZE__
10311             extern __inline __m512
10312             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10313             _mm512_i32gather_ps (__m512i __index, void const *__addr, int __scale)
10314             {
10315             __m512 __v1_old = _mm512_undefined_ps ();
10316             __mmask16 __mask = 0xFFFF;
10317              
10318             return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
10319             __addr,
10320             (__v16si) __index,
10321             __mask, __scale);
10322             }
10323              
10324             extern __inline __m512
10325             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10326             _mm512_mask_i32gather_ps (__m512 __v1_old, __mmask16 __mask,
10327             __m512i __index, void const *__addr, int __scale)
10328             {
10329             return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
10330             __addr,
10331             (__v16si) __index,
10332             __mask, __scale);
10333             }
10334              
10335             extern __inline __m512d
10336             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10337             _mm512_i32gather_pd (__m256i __index, void const *__addr, int __scale)
10338             {
10339             __m512d __v1_old = _mm512_undefined_pd ();
10340             __mmask8 __mask = 0xFF;
10341              
10342             return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
10343             __addr,
10344             (__v8si) __index, __mask,
10345             __scale);
10346             }
10347              
10348             extern __inline __m512d
10349             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10350             _mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask,
10351             __m256i __index, void const *__addr, int __scale)
10352             {
10353             return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
10354             __addr,
10355             (__v8si) __index,
10356             __mask, __scale);
10357             }
10358              
10359             extern __inline __m256
10360             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10361             _mm512_i64gather_ps (__m512i __index, void const *__addr, int __scale)
10362             {
10363             __m256 __v1_old = _mm256_undefined_ps ();
10364             __mmask8 __mask = 0xFF;
10365              
10366             return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
10367             __addr,
10368             (__v8di) __index, __mask,
10369             __scale);
10370             }
10371              
10372             extern __inline __m256
10373             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10374             _mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask,
10375             __m512i __index, void const *__addr, int __scale)
10376             {
10377             return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
10378             __addr,
10379             (__v8di) __index,
10380             __mask, __scale);
10381             }
10382              
10383             extern __inline __m512d
10384             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10385             _mm512_i64gather_pd (__m512i __index, void const *__addr, int __scale)
10386             {
10387             __m512d __v1_old = _mm512_undefined_pd ();
10388             __mmask8 __mask = 0xFF;
10389              
10390             return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
10391             __addr,
10392             (__v8di) __index, __mask,
10393             __scale);
10394             }
10395              
10396             extern __inline __m512d
10397             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10398             _mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask,
10399             __m512i __index, void const *__addr, int __scale)
10400             {
10401             return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
10402             __addr,
10403             (__v8di) __index,
10404             __mask, __scale);
10405             }
10406              
10407             extern __inline __m512i
10408             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10409             _mm512_i32gather_epi32 (__m512i __index, void const *__addr, int __scale)
10410             {
10411             __m512i __v1_old = _mm512_undefined_epi32 ();
10412             __mmask16 __mask = 0xFFFF;
10413              
10414             return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
10415             __addr,
10416             (__v16si) __index,
10417             __mask, __scale);
10418             }
10419              
10420             extern __inline __m512i
10421             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10422             _mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask,
10423             __m512i __index, void const *__addr, int __scale)
10424             {
10425             return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
10426             __addr,
10427             (__v16si) __index,
10428             __mask, __scale);
10429             }
10430              
10431             extern __inline __m512i
10432             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10433             _mm512_i32gather_epi64 (__m256i __index, void const *__addr, int __scale)
10434             {
10435             __m512i __v1_old = _mm512_undefined_epi32 ();
10436             __mmask8 __mask = 0xFF;
10437              
10438             return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
10439             __addr,
10440             (__v8si) __index, __mask,
10441             __scale);
10442             }
10443              
10444             extern __inline __m512i
10445             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10446             _mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask,
10447             __m256i __index, void const *__addr,
10448             int __scale)
10449             {
10450             return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
10451             __addr,
10452             (__v8si) __index,
10453             __mask, __scale);
10454             }
10455              
10456             extern __inline __m256i
10457             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10458             _mm512_i64gather_epi32 (__m512i __index, void const *__addr, int __scale)
10459             {
10460             __m256i __v1_old = _mm256_undefined_si256 ();
10461             __mmask8 __mask = 0xFF;
10462              
10463             return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
10464             __addr,
10465             (__v8di) __index,
10466             __mask, __scale);
10467             }
10468              
10469             extern __inline __m256i
10470             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10471             _mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask,
10472             __m512i __index, void const *__addr, int __scale)
10473             {
10474             return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
10475             __addr,
10476             (__v8di) __index,
10477             __mask, __scale);
10478             }
10479              
10480             extern __inline __m512i
10481             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10482             _mm512_i64gather_epi64 (__m512i __index, void const *__addr, int __scale)
10483             {
10484             __m512i __v1_old = _mm512_undefined_epi32 ();
10485             __mmask8 __mask = 0xFF;
10486              
10487             return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
10488             __addr,
10489             (__v8di) __index, __mask,
10490             __scale);
10491             }
10492              
10493             extern __inline __m512i
10494             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10495             _mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask,
10496             __m512i __index, void const *__addr,
10497             int __scale)
10498             {
10499             return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
10500             __addr,
10501             (__v8di) __index,
10502             __mask, __scale);
10503             }
10504              
10505             extern __inline void
10506             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10507             _mm512_i32scatter_ps (void *__addr, __m512i __index, __m512 __v1, int __scale)
10508             {
10509             __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
10510             (__v16si) __index, (__v16sf) __v1, __scale);
10511             }
10512              
10513             extern __inline void
10514             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10515             _mm512_mask_i32scatter_ps (void *__addr, __mmask16 __mask,
10516             __m512i __index, __m512 __v1, int __scale)
10517             {
10518             __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,
10519             (__v16sf) __v1, __scale);
10520             }
10521              
10522             extern __inline void
10523             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10524             _mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1,
10525             int __scale)
10526             {
10527             __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
10528             (__v8si) __index, (__v8df) __v1, __scale);
10529             }
10530              
10531             extern __inline void
10532             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10533             _mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
10534             __m256i __index, __m512d __v1, int __scale)
10535             {
10536             __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
10537             (__v8df) __v1, __scale);
10538             }
10539              
10540             extern __inline void
10541             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10542             _mm512_i64scatter_ps (void *__addr, __m512i __index, __m256 __v1, int __scale)
10543             {
10544             __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
10545             (__v8di) __index, (__v8sf) __v1, __scale);
10546             }
10547              
10548             extern __inline void
10549             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10550             _mm512_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
10551             __m512i __index, __m256 __v1, int __scale)
10552             {
10553             __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index,
10554             (__v8sf) __v1, __scale);
10555             }
10556              
10557             extern __inline void
10558             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10559             _mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1,
10560             int __scale)
10561             {
10562             __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
10563             (__v8di) __index, (__v8df) __v1, __scale);
10564             }
10565              
10566             extern __inline void
10567             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10568             _mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
10569             __m512i __index, __m512d __v1, int __scale)
10570             {
10571             __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
10572             (__v8df) __v1, __scale);
10573             }
10574              
10575             extern __inline void
10576             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10577             _mm512_i32scatter_epi32 (void *__addr, __m512i __index,
10578             __m512i __v1, int __scale)
10579             {
10580             __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF,
10581             (__v16si) __index, (__v16si) __v1, __scale);
10582             }
10583              
10584             extern __inline void
10585             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10586             _mm512_mask_i32scatter_epi32 (void *__addr, __mmask16 __mask,
10587             __m512i __index, __m512i __v1, int __scale)
10588             {
10589             __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
10590             (__v16si) __v1, __scale);
10591             }
10592              
10593             extern __inline void
10594             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10595             _mm512_i32scatter_epi64 (void *__addr, __m256i __index,
10596             __m512i __v1, int __scale)
10597             {
10598             __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF,
10599             (__v8si) __index, (__v8di) __v1, __scale);
10600             }
10601              
10602             extern __inline void
10603             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10604             _mm512_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
10605             __m256i __index, __m512i __v1, int __scale)
10606             {
10607             __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,
10608             (__v8di) __v1, __scale);
10609             }
10610              
10611             extern __inline void
10612             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10613             _mm512_i64scatter_epi32 (void *__addr, __m512i __index,
10614             __m256i __v1, int __scale)
10615             {
10616             __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF,
10617             (__v8di) __index, (__v8si) __v1, __scale);
10618             }
10619              
10620             extern __inline void
10621             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10622             _mm512_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
10623             __m512i __index, __m256i __v1, int __scale)
10624             {
10625             __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,
10626             (__v8si) __v1, __scale);
10627             }
10628              
10629             extern __inline void
10630             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10631             _mm512_i64scatter_epi64 (void *__addr, __m512i __index,
10632             __m512i __v1, int __scale)
10633             {
10634             __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF,
10635             (__v8di) __index, (__v8di) __v1, __scale);
10636             }
10637              
10638             extern __inline void
10639             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10640             _mm512_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
10641             __m512i __index, __m512i __v1, int __scale)
10642             {
10643             __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index,
10644             (__v8di) __v1, __scale);
10645             }
10646             #else
10647             #define _mm512_i32gather_ps(INDEX, ADDR, SCALE) \
10648             (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\
10649             (void const *) (ADDR), \
10650             (__v16si)(__m512i) (INDEX), \
10651             (__mmask16)0xFFFF, \
10652             (int) (SCALE))
10653              
10654             #define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
10655             (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512) (V1OLD), \
10656             (void const *) (ADDR), \
10657             (__v16si)(__m512i) (INDEX), \
10658             (__mmask16) (MASK), \
10659             (int) (SCALE))
10660              
10661             #define _mm512_i32gather_pd(INDEX, ADDR, SCALE) \
10662             (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(), \
10663             (void const *) (ADDR), \
10664             (__v8si)(__m256i) (INDEX), \
10665             (__mmask8)0xFF, (int) (SCALE))
10666              
10667             #define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
10668             (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d) (V1OLD), \
10669             (void const *) (ADDR), \
10670             (__v8si)(__m256i) (INDEX), \
10671             (__mmask8) (MASK), \
10672             (int) (SCALE))
10673              
10674             #define _mm512_i64gather_ps(INDEX, ADDR, SCALE) \
10675             (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(), \
10676             (void const *) (ADDR), \
10677             (__v8di)(__m512i) (INDEX), \
10678             (__mmask8)0xFF, (int) (SCALE))
10679              
10680             #define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
10681             (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256) (V1OLD), \
10682             (void const *) (ADDR), \
10683             (__v8di)(__m512i) (INDEX), \
10684             (__mmask8) (MASK), \
10685             (int) (SCALE))
10686              
10687             #define _mm512_i64gather_pd(INDEX, ADDR, SCALE) \
10688             (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(), \
10689             (void const *) (ADDR), \
10690             (__v8di)(__m512i) (INDEX), \
10691             (__mmask8)0xFF, (int) (SCALE))
10692              
10693             #define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
10694             (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d) (V1OLD), \
10695             (void const *) (ADDR), \
10696             (__v8di)(__m512i) (INDEX), \
10697             (__mmask8) (MASK), \
10698             (int) (SCALE))
10699              
10700             #define _mm512_i32gather_epi32(INDEX, ADDR, SCALE) \
10701             (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_epi32 (),\
10702             (void const *) (ADDR), \
10703             (__v16si)(__m512i) (INDEX), \
10704             (__mmask16)0xFFFF, \
10705             (int) (SCALE))
10706              
10707             #define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
10708             (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i) (V1OLD), \
10709             (void const *) (ADDR), \
10710             (__v16si)(__m512i) (INDEX), \
10711             (__mmask16) (MASK), \
10712             (int) (SCALE))
10713              
10714             #define _mm512_i32gather_epi64(INDEX, ADDR, SCALE) \
10715             (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_epi32 (),\
10716             (void const *) (ADDR), \
10717             (__v8si)(__m256i) (INDEX), \
10718             (__mmask8)0xFF, (int) (SCALE))
10719              
10720             #define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
10721             (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i) (V1OLD), \
10722             (void const *) (ADDR), \
10723             (__v8si)(__m256i) (INDEX), \
10724             (__mmask8) (MASK), \
10725             (int) (SCALE))
10726              
10727             #define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \
10728             (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(),\
10729             (void const *) (ADDR), \
10730             (__v8di)(__m512i) (INDEX), \
10731             (__mmask8)0xFF, (int) (SCALE))
10732              
10733             #define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
10734             (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i) (V1OLD), \
10735             (void const *) (ADDR), \
10736             (__v8di)(__m512i) (INDEX), \
10737             (__mmask8) (MASK), \
10738             (int) (SCALE))
10739              
10740             #define _mm512_i64gather_epi64(INDEX, ADDR, SCALE) \
10741             (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_epi32 (),\
10742             (void const *) (ADDR), \
10743             (__v8di)(__m512i) (INDEX), \
10744             (__mmask8)0xFF, (int) (SCALE))
10745              
10746             #define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
10747             (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i) (V1OLD), \
10748             (void const *) (ADDR), \
10749             (__v8di)(__m512i) (INDEX), \
10750             (__mmask8) (MASK), \
10751             (int) (SCALE))
10752              
10753             #define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE) \
10754             __builtin_ia32_scattersiv16sf ((void *) (ADDR), (__mmask16)0xFFFF, \
10755             (__v16si)(__m512i) (INDEX), \
10756             (__v16sf)(__m512) (V1), (int) (SCALE))
10757              
10758             #define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
10759             __builtin_ia32_scattersiv16sf ((void *) (ADDR), (__mmask16) (MASK), \
10760             (__v16si)(__m512i) (INDEX), \
10761             (__v16sf)(__m512) (V1), (int) (SCALE))
10762              
10763             #define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE) \
10764             __builtin_ia32_scattersiv8df ((void *) (ADDR), (__mmask8)0xFF, \
10765             (__v8si)(__m256i) (INDEX), \
10766             (__v8df)(__m512d) (V1), (int) (SCALE))
10767              
10768             #define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
10769             __builtin_ia32_scattersiv8df ((void *) (ADDR), (__mmask8) (MASK), \
10770             (__v8si)(__m256i) (INDEX), \
10771             (__v8df)(__m512d) (V1), (int) (SCALE))
10772              
10773             #define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE) \
10774             __builtin_ia32_scatterdiv16sf ((void *) (ADDR), (__mmask8)0xFF, \
10775             (__v8di)(__m512i) (INDEX), \
10776             (__v8sf)(__m256) (V1), (int) (SCALE))
10777              
10778             #define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
10779             __builtin_ia32_scatterdiv16sf ((void *) (ADDR), (__mmask16) (MASK), \
10780             (__v8di)(__m512i) (INDEX), \
10781             (__v8sf)(__m256) (V1), (int) (SCALE))
10782              
10783             #define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE) \
10784             __builtin_ia32_scatterdiv8df ((void *) (ADDR), (__mmask8)0xFF, \
10785             (__v8di)(__m512i) (INDEX), \
10786             (__v8df)(__m512d) (V1), (int) (SCALE))
10787              
10788             #define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
10789             __builtin_ia32_scatterdiv8df ((void *) (ADDR), (__mmask8) (MASK), \
10790             (__v8di)(__m512i) (INDEX), \
10791             (__v8df)(__m512d) (V1), (int) (SCALE))
10792              
10793             #define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \
10794             __builtin_ia32_scattersiv16si ((void *) (ADDR), (__mmask16)0xFFFF, \
10795             (__v16si)(__m512i) (INDEX), \
10796             (__v16si)(__m512i) (V1), (int) (SCALE))
10797              
10798             #define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
10799             __builtin_ia32_scattersiv16si ((void *) (ADDR), (__mmask16) (MASK), \
10800             (__v16si)(__m512i) (INDEX), \
10801             (__v16si)(__m512i) (V1), (int) (SCALE))
10802              
10803             #define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \
10804             __builtin_ia32_scattersiv8di ((void *) (ADDR), (__mmask8)0xFF, \
10805             (__v8si)(__m256i) (INDEX), \
10806             (__v8di)(__m512i) (V1), (int) (SCALE))
10807              
10808             #define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
10809             __builtin_ia32_scattersiv8di ((void *) (ADDR), (__mmask8) (MASK), \
10810             (__v8si)(__m256i) (INDEX), \
10811             (__v8di)(__m512i) (V1), (int) (SCALE))
10812              
10813             #define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \
10814             __builtin_ia32_scatterdiv16si ((void *) (ADDR), (__mmask8)0xFF, \
10815             (__v8di)(__m512i) (INDEX), \
10816             (__v8si)(__m256i) (V1), (int) (SCALE))
10817              
10818             #define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
10819             __builtin_ia32_scatterdiv16si ((void *) (ADDR), (__mmask8) (MASK), \
10820             (__v8di)(__m512i) (INDEX), \
10821             (__v8si)(__m256i) (V1), (int) (SCALE))
10822              
10823             #define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \
10824             __builtin_ia32_scatterdiv8di ((void *) (ADDR), (__mmask8)0xFF, \
10825             (__v8di)(__m512i) (INDEX), \
10826             (__v8di)(__m512i) (V1), (int) (SCALE))
10827              
10828             #define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
10829             __builtin_ia32_scatterdiv8di ((void *) (ADDR), (__mmask8) (MASK), \
10830             (__v8di)(__m512i) (INDEX), \
10831             (__v8di)(__m512i) (V1), (int) (SCALE))
10832             #endif
10833              
10834             extern __inline __m512d
10835             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10836             _mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
10837             {
10838             return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
10839             (__v8df) __W,
10840             (__mmask8) __U);
10841             }
10842              
10843             extern __inline __m512d
10844             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10845             _mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
10846             {
10847             return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
10848             (__v8df)
10849             _mm512_setzero_pd (),
10850             (__mmask8) __U);
10851             }
10852              
10853             extern __inline void
10854             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10855             _mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
10856             {
10857             __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
10858             (__mmask8) __U);
10859             }
10860              
10861             extern __inline __m512
10862             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10863             _mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
10864             {
10865             return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
10866             (__v16sf) __W,
10867             (__mmask16) __U);
10868             }
10869              
10870             extern __inline __m512
10871             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10872             _mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
10873             {
10874             return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
10875             (__v16sf)
10876             _mm512_setzero_ps (),
10877             (__mmask16) __U);
10878             }
10879              
10880             extern __inline void
10881             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10882             _mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
10883             {
10884             __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
10885             (__mmask16) __U);
10886             }
10887              
10888             extern __inline __m512i
10889             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10890             _mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10891             {
10892             return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
10893             (__v8di) __W,
10894             (__mmask8) __U);
10895             }
10896              
10897             extern __inline __m512i
10898             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10899             _mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
10900             {
10901             return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
10902             (__v8di)
10903             _mm512_setzero_si512 (),
10904             (__mmask8) __U);
10905             }
10906              
10907             extern __inline void
10908             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10909             _mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
10910             {
10911             __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
10912             (__mmask8) __U);
10913             }
10914              
10915             extern __inline __m512i
10916             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10917             _mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10918             {
10919             return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
10920             (__v16si) __W,
10921             (__mmask16) __U);
10922             }
10923              
10924             extern __inline __m512i
10925             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10926             _mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
10927             {
10928             return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
10929             (__v16si)
10930             _mm512_setzero_si512 (),
10931             (__mmask16) __U);
10932             }
10933              
10934             extern __inline void
10935             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10936             _mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
10937             {
10938             __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
10939             (__mmask16) __U);
10940             }
10941              
10942             extern __inline __m512d
10943             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10944             _mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
10945             {
10946             return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
10947             (__v8df) __W,
10948             (__mmask8) __U);
10949             }
10950              
10951             extern __inline __m512d
10952             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10953             _mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
10954             {
10955             return (__m512d) __builtin_ia32_expanddf512_maskz ((__v8df) __A,
10956             (__v8df)
10957             _mm512_setzero_pd (),
10958             (__mmask8) __U);
10959             }
10960              
10961             extern __inline __m512d
10962             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10963             _mm512_mask_expandloadu_pd (__m512d __W, __mmask8 __U, void const *__P)
10964             {
10965             return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *) __P,
10966             (__v8df) __W,
10967             (__mmask8) __U);
10968             }
10969              
10970             extern __inline __m512d
10971             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10972             _mm512_maskz_expandloadu_pd (__mmask8 __U, void const *__P)
10973             {
10974             return (__m512d) __builtin_ia32_expandloaddf512_maskz ((const __v8df *) __P,
10975             (__v8df)
10976             _mm512_setzero_pd (),
10977             (__mmask8) __U);
10978             }
10979              
10980             extern __inline __m512
10981             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10982             _mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
10983             {
10984             return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
10985             (__v16sf) __W,
10986             (__mmask16) __U);
10987             }
10988              
10989             extern __inline __m512
10990             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10991             _mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
10992             {
10993             return (__m512) __builtin_ia32_expandsf512_maskz ((__v16sf) __A,
10994             (__v16sf)
10995             _mm512_setzero_ps (),
10996             (__mmask16) __U);
10997             }
10998              
10999             extern __inline __m512
11000             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11001             _mm512_mask_expandloadu_ps (__m512 __W, __mmask16 __U, void const *__P)
11002             {
11003             return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *) __P,
11004             (__v16sf) __W,
11005             (__mmask16) __U);
11006             }
11007              
11008             extern __inline __m512
11009             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11010             _mm512_maskz_expandloadu_ps (__mmask16 __U, void const *__P)
11011             {
11012             return (__m512) __builtin_ia32_expandloadsf512_maskz ((const __v16sf *) __P,
11013             (__v16sf)
11014             _mm512_setzero_ps (),
11015             (__mmask16) __U);
11016             }
11017              
11018             extern __inline __m512i
11019             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11020             _mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
11021             {
11022             return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
11023             (__v8di) __W,
11024             (__mmask8) __U);
11025             }
11026              
11027             extern __inline __m512i
11028             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11029             _mm512_maskz_expand_epi64 (__mmask8 __U, __m512i __A)
11030             {
11031             return (__m512i) __builtin_ia32_expanddi512_maskz ((__v8di) __A,
11032             (__v8di)
11033             _mm512_setzero_si512 (),
11034             (__mmask8) __U);
11035             }
11036              
11037             extern __inline __m512i
11038             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11039             _mm512_mask_expandloadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
11040             {
11041             return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *) __P,
11042             (__v8di) __W,
11043             (__mmask8) __U);
11044             }
11045              
11046             extern __inline __m512i
11047             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11048             _mm512_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P)
11049             {
11050             return (__m512i)
11051             __builtin_ia32_expandloaddi512_maskz ((const __v8di *) __P,
11052             (__v8di)
11053             _mm512_setzero_si512 (),
11054             (__mmask8) __U);
11055             }
11056              
11057             extern __inline __m512i
11058             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11059             _mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
11060             {
11061             return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
11062             (__v16si) __W,
11063             (__mmask16) __U);
11064             }
11065              
11066             extern __inline __m512i
11067             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11068             _mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
11069             {
11070             return (__m512i) __builtin_ia32_expandsi512_maskz ((__v16si) __A,
11071             (__v16si)
11072             _mm512_setzero_si512 (),
11073             (__mmask16) __U);
11074             }
11075              
11076             extern __inline __m512i
11077             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11078             _mm512_mask_expandloadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
11079             {
11080             return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *) __P,
11081             (__v16si) __W,
11082             (__mmask16) __U);
11083             }
11084              
11085             extern __inline __m512i
11086             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11087             _mm512_maskz_expandloadu_epi32 (__mmask16 __U, void const *__P)
11088             {
11089             return (__m512i) __builtin_ia32_expandloadsi512_maskz ((const __v16si *) __P,
11090             (__v16si)
11091             _mm512_setzero_si512
11092             (), (__mmask16) __U);
11093             }
11094              
11095             /* Mask arithmetic operations */
11096             #define _kand_mask16 _mm512_kand
11097             #define _kandn_mask16 _mm512_kandn
11098             #define _knot_mask16 _mm512_knot
11099             #define _kor_mask16 _mm512_kor
11100             #define _kxnor_mask16 _mm512_kxnor
11101             #define _kxor_mask16 _mm512_kxor
11102              
11103             extern __inline unsigned char
11104             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11105             _kortest_mask16_u8 (__mmask16 __A, __mmask16 __B, unsigned char *__CF)
11106             {
11107             *__CF = (unsigned char) __builtin_ia32_kortestchi (__A, __B);
11108             return (unsigned char) __builtin_ia32_kortestzhi (__A, __B);
11109             }
11110              
11111             extern __inline unsigned char
11112             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11113             _kortestz_mask16_u8 (__mmask16 __A, __mmask16 __B)
11114             {
11115             return (unsigned char) __builtin_ia32_kortestzhi ((__mmask16) __A,
11116             (__mmask16) __B);
11117             }
11118              
11119             extern __inline unsigned char
11120             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11121             _kortestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
11122             {
11123             return (unsigned char) __builtin_ia32_kortestchi ((__mmask16) __A,
11124             (__mmask16) __B);
11125             }
11126              
11127             extern __inline unsigned int
11128             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11129             _cvtmask16_u32 (__mmask16 __A)
11130             {
11131             return (unsigned int) __builtin_ia32_kmovw ((__mmask16 ) __A);
11132             }
11133              
11134             extern __inline __mmask16
11135             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11136             _cvtu32_mask16 (unsigned int __A)
11137             {
11138             return (__mmask16) __builtin_ia32_kmovw ((__mmask16 ) __A);
11139             }
11140              
11141             extern __inline __mmask16
11142             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11143             _load_mask16 (__mmask16 *__A)
11144             {
11145             return (__mmask16) __builtin_ia32_kmovw (*(__mmask16 *) __A);
11146             }
11147              
11148             extern __inline void
11149             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11150             _store_mask16 (__mmask16 *__A, __mmask16 __B)
11151             {
11152             *(__mmask16 *) __A = __builtin_ia32_kmovw (__B);
11153             }
11154              
11155             extern __inline __mmask16
11156             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11157             _mm512_kand (__mmask16 __A, __mmask16 __B)
11158             {
11159             return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
11160             }
11161              
11162             extern __inline __mmask16
11163             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11164             _mm512_kandn (__mmask16 __A, __mmask16 __B)
11165             {
11166             return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A,
11167             (__mmask16) __B);
11168             }
11169              
11170             extern __inline __mmask16
11171             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11172             _mm512_kor (__mmask16 __A, __mmask16 __B)
11173             {
11174             return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
11175             }
11176              
11177             extern __inline int
11178             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11179             _mm512_kortestz (__mmask16 __A, __mmask16 __B)
11180             {
11181             return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
11182             (__mmask16) __B);
11183             }
11184              
11185             extern __inline int
11186             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11187             _mm512_kortestc (__mmask16 __A, __mmask16 __B)
11188             {
11189             return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
11190             (__mmask16) __B);
11191             }
11192              
11193             extern __inline __mmask16
11194             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11195             _mm512_kxnor (__mmask16 __A, __mmask16 __B)
11196             {
11197             return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
11198             }
11199              
11200             extern __inline __mmask16
11201             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11202             _mm512_kxor (__mmask16 __A, __mmask16 __B)
11203             {
11204             return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
11205             }
11206              
11207             extern __inline __mmask16
11208             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11209             _mm512_knot (__mmask16 __A)
11210             {
11211             return (__mmask16) __builtin_ia32_knothi ((__mmask16) __A);
11212             }
11213              
11214             extern __inline __mmask16
11215             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11216             _mm512_kunpackb (__mmask16 __A, __mmask16 __B)
11217             {
11218             return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
11219             }
11220              
11221             extern __inline __mmask16
11222             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11223             _kunpackb_mask16 (__mmask8 __A, __mmask8 __B)
11224             {
11225             return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
11226             }
11227              
11228             #ifdef __OPTIMIZE__
11229             extern __inline __m512i
11230             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11231             _mm512_maskz_inserti32x4 (__mmask16 __B, __m512i __C, __m128i __D,
11232             const int __imm)
11233             {
11234             return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C,
11235             (__v4si) __D,
11236             __imm,
11237             (__v16si)
11238             _mm512_setzero_si512 (),
11239             __B);
11240             }
11241              
11242             extern __inline __m512
11243             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11244             _mm512_maskz_insertf32x4 (__mmask16 __B, __m512 __C, __m128 __D,
11245             const int __imm)
11246             {
11247             return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C,
11248             (__v4sf) __D,
11249             __imm,
11250             (__v16sf)
11251             _mm512_setzero_ps (), __B);
11252             }
11253              
11254             extern __inline __m512i
11255             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11256             _mm512_mask_inserti32x4 (__m512i __A, __mmask16 __B, __m512i __C,
11257             __m128i __D, const int __imm)
11258             {
11259             return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C,
11260             (__v4si) __D,
11261             __imm,
11262             (__v16si) __A,
11263             __B);
11264             }
11265              
11266             extern __inline __m512
11267             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11268             _mm512_mask_insertf32x4 (__m512 __A, __mmask16 __B, __m512 __C,
11269             __m128 __D, const int __imm)
11270             {
11271             return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C,
11272             (__v4sf) __D,
11273             __imm,
11274             (__v16sf) __A, __B);
11275             }
11276             #else
11277             #define _mm512_maskz_insertf32x4(A, X, Y, C) \
11278             ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \
11279             (__v4sf)(__m128) (Y), (int) (C), (__v16sf)_mm512_setzero_ps(), \
11280             (__mmask16)(A)))
11281              
11282             #define _mm512_maskz_inserti32x4(A, X, Y, C) \
11283             ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \
11284             (__v4si)(__m128i) (Y), (int) (C), (__v16si)_mm512_setzero_si512 (), \
11285             (__mmask16)(A)))
11286              
11287             #define _mm512_mask_insertf32x4(A, B, X, Y, C) \
11288             ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \
11289             (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (A), \
11290             (__mmask16)(B)))
11291              
11292             #define _mm512_mask_inserti32x4(A, B, X, Y, C) \
11293             ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \
11294             (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (A), \
11295             (__mmask16)(B)))
11296             #endif
11297              
11298             extern __inline __m512i
11299             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11300             _mm512_max_epi64 (__m512i __A, __m512i __B)
11301             {
11302             return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
11303             (__v8di) __B,
11304             (__v8di)
11305             _mm512_undefined_epi32 (),
11306             (__mmask8) -1);
11307             }
11308              
11309             extern __inline __m512i
11310             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11311             _mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
11312             {
11313             return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
11314             (__v8di) __B,
11315             (__v8di)
11316             _mm512_setzero_si512 (),
11317             __M);
11318             }
11319              
11320             extern __inline __m512i
11321             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11322             _mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
11323             {
11324             return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
11325             (__v8di) __B,
11326             (__v8di) __W, __M);
11327             }
11328              
11329             extern __inline __m512i
11330             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11331             _mm512_min_epi64 (__m512i __A, __m512i __B)
11332             {
11333             return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
11334             (__v8di) __B,
11335             (__v8di)
11336             _mm512_undefined_epi32 (),
11337             (__mmask8) -1);
11338             }
11339              
11340             extern __inline __m512i
11341             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11342             _mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
11343             {
11344             return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
11345             (__v8di) __B,
11346             (__v8di) __W, __M);
11347             }
11348              
11349             extern __inline __m512i
11350             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11351             _mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
11352             {
11353             return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
11354             (__v8di) __B,
11355             (__v8di)
11356             _mm512_setzero_si512 (),
11357             __M);
11358             }
11359              
11360             extern __inline __m512i
11361             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11362             _mm512_max_epu64 (__m512i __A, __m512i __B)
11363             {
11364             return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
11365             (__v8di) __B,
11366             (__v8di)
11367             _mm512_undefined_epi32 (),
11368             (__mmask8) -1);
11369             }
11370              
11371             extern __inline __m512i
11372             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11373             _mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
11374             {
11375             return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
11376             (__v8di) __B,
11377             (__v8di)
11378             _mm512_setzero_si512 (),
11379             __M);
11380             }
11381              
11382             extern __inline __m512i
11383             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11384             _mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
11385             {
11386             return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
11387             (__v8di) __B,
11388             (__v8di) __W, __M);
11389             }
11390              
11391             extern __inline __m512i
11392             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11393             _mm512_min_epu64 (__m512i __A, __m512i __B)
11394             {
11395             return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
11396             (__v8di) __B,
11397             (__v8di)
11398             _mm512_undefined_epi32 (),
11399             (__mmask8) -1);
11400             }
11401              
11402             extern __inline __m512i
11403             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11404             _mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
11405             {
11406             return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
11407             (__v8di) __B,
11408             (__v8di) __W, __M);
11409             }
11410              
11411             extern __inline __m512i
11412             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11413             _mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
11414             {
11415             return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
11416             (__v8di) __B,
11417             (__v8di)
11418             _mm512_setzero_si512 (),
11419             __M);
11420             }
11421              
11422             extern __inline __m512i
11423             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11424             _mm512_max_epi32 (__m512i __A, __m512i __B)
11425             {
11426             return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
11427             (__v16si) __B,
11428             (__v16si)
11429             _mm512_undefined_epi32 (),
11430             (__mmask16) -1);
11431             }
11432              
11433             extern __inline __m512i
11434             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11435             _mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
11436             {
11437             return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
11438             (__v16si) __B,
11439             (__v16si)
11440             _mm512_setzero_si512 (),
11441             __M);
11442             }
11443              
11444             extern __inline __m512i
11445             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11446             _mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
11447             {
11448             return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
11449             (__v16si) __B,
11450             (__v16si) __W, __M);
11451             }
11452              
11453             extern __inline __m512i
11454             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11455             _mm512_min_epi32 (__m512i __A, __m512i __B)
11456             {
11457             return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
11458             (__v16si) __B,
11459             (__v16si)
11460             _mm512_undefined_epi32 (),
11461             (__mmask16) -1);
11462             }
11463              
11464             extern __inline __m512i
11465             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11466             _mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
11467             {
11468             return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
11469             (__v16si) __B,
11470             (__v16si)
11471             _mm512_setzero_si512 (),
11472             __M);
11473             }
11474              
11475             extern __inline __m512i
11476             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11477             _mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
11478             {
11479             return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
11480             (__v16si) __B,
11481             (__v16si) __W, __M);
11482             }
11483              
11484             extern __inline __m512i
11485             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11486             _mm512_max_epu32 (__m512i __A, __m512i __B)
11487             {
11488             return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
11489             (__v16si) __B,
11490             (__v16si)
11491             _mm512_undefined_epi32 (),
11492             (__mmask16) -1);
11493             }
11494              
11495             extern __inline __m512i
11496             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11497             _mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
11498             {
11499             return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
11500             (__v16si) __B,
11501             (__v16si)
11502             _mm512_setzero_si512 (),
11503             __M);
11504             }
11505              
11506             extern __inline __m512i
11507             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11508             _mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
11509             {
11510             return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
11511             (__v16si) __B,
11512             (__v16si) __W, __M);
11513             }
11514              
11515             extern __inline __m512i
11516             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11517             _mm512_min_epu32 (__m512i __A, __m512i __B)
11518             {
11519             return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
11520             (__v16si) __B,
11521             (__v16si)
11522             _mm512_undefined_epi32 (),
11523             (__mmask16) -1);
11524             }
11525              
11526             extern __inline __m512i
11527             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11528             _mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
11529             {
11530             return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
11531             (__v16si) __B,
11532             (__v16si)
11533             _mm512_setzero_si512 (),
11534             __M);
11535             }
11536              
11537             extern __inline __m512i
11538             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11539             _mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
11540             {
11541             return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
11542             (__v16si) __B,
11543             (__v16si) __W, __M);
11544             }
11545              
11546             extern __inline __m512
11547             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11548             _mm512_unpacklo_ps (__m512 __A, __m512 __B)
11549             {
11550             return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
11551             (__v16sf) __B,
11552             (__v16sf)
11553             _mm512_undefined_ps (),
11554             (__mmask16) -1);
11555             }
11556              
11557             extern __inline __m512
11558             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11559             _mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11560             {
11561             return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
11562             (__v16sf) __B,
11563             (__v16sf) __W,
11564             (__mmask16) __U);
11565             }
11566              
11567             extern __inline __m512
11568             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11569             _mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
11570             {
11571             return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
11572             (__v16sf) __B,
11573             (__v16sf)
11574             _mm512_setzero_ps (),
11575             (__mmask16) __U);
11576             }
11577              
11578             #ifdef __OPTIMIZE__
11579             extern __inline __m128d
11580             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11581             _mm_max_round_sd (__m128d __A, __m128d __B, const int __R)
11582             {
11583             return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A,
11584             (__v2df) __B,
11585             __R);
11586             }
11587              
11588             extern __inline __m128d
11589             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11590             _mm_mask_max_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
11591             __m128d __B, const int __R)
11592             {
11593             return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
11594             (__v2df) __B,
11595             (__v2df) __W,
11596             (__mmask8) __U, __R);
11597             }
11598              
11599             extern __inline __m128d
11600             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11601             _mm_maskz_max_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
11602             const int __R)
11603             {
11604             return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
11605             (__v2df) __B,
11606             (__v2df)
11607             _mm_setzero_pd (),
11608             (__mmask8) __U, __R);
11609             }
11610              
11611             extern __inline __m128
11612             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11613             _mm_max_round_ss (__m128 __A, __m128 __B, const int __R)
11614             {
11615             return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A,
11616             (__v4sf) __B,
11617             __R);
11618             }
11619              
11620             extern __inline __m128
11621             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11622             _mm_mask_max_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
11623             __m128 __B, const int __R)
11624             {
11625             return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
11626             (__v4sf) __B,
11627             (__v4sf) __W,
11628             (__mmask8) __U, __R);
11629             }
11630              
11631             extern __inline __m128
11632             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11633             _mm_maskz_max_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
11634             const int __R)
11635             {
11636             return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
11637             (__v4sf) __B,
11638             (__v4sf)
11639             _mm_setzero_ps (),
11640             (__mmask8) __U, __R);
11641             }
11642              
11643             extern __inline __m128d
11644             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11645             _mm_min_round_sd (__m128d __A, __m128d __B, const int __R)
11646             {
11647             return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A,
11648             (__v2df) __B,
11649             __R);
11650             }
11651              
11652             extern __inline __m128d
11653             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11654             _mm_mask_min_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
11655             __m128d __B, const int __R)
11656             {
11657             return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
11658             (__v2df) __B,
11659             (__v2df) __W,
11660             (__mmask8) __U, __R);
11661             }
11662              
11663             extern __inline __m128d
11664             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11665             _mm_maskz_min_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
11666             const int __R)
11667             {
11668             return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
11669             (__v2df) __B,
11670             (__v2df)
11671             _mm_setzero_pd (),
11672             (__mmask8) __U, __R);
11673             }
11674              
11675             extern __inline __m128
11676             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11677             _mm_min_round_ss (__m128 __A, __m128 __B, const int __R)
11678             {
11679             return (__m128) __builtin_ia32_minss_round ((__v4sf) __A,
11680             (__v4sf) __B,
11681             __R);
11682             }
11683              
11684             extern __inline __m128
11685             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11686             _mm_mask_min_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
11687             __m128 __B, const int __R)
11688             {
11689             return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
11690             (__v4sf) __B,
11691             (__v4sf) __W,
11692             (__mmask8) __U, __R);
11693             }
11694              
11695             extern __inline __m128
11696             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11697             _mm_maskz_min_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
11698             const int __R)
11699             {
11700             return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
11701             (__v4sf) __B,
11702             (__v4sf)
11703             _mm_setzero_ps (),
11704             (__mmask8) __U, __R);
11705             }
11706              
11707             #else
11708             #define _mm_max_round_sd(A, B, C) \
11709             (__m128d)__builtin_ia32_maxsd_round(A, B, C)
11710              
11711             #define _mm_mask_max_round_sd(W, U, A, B, C) \
11712             (__m128d)__builtin_ia32_maxsd_mask_round(A, B, W, U, C)
11713              
11714             #define _mm_maskz_max_round_sd(U, A, B, C) \
11715             (__m128d)__builtin_ia32_maxsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
11716              
11717             #define _mm_max_round_ss(A, B, C) \
11718             (__m128)__builtin_ia32_maxss_round(A, B, C)
11719              
11720             #define _mm_mask_max_round_ss(W, U, A, B, C) \
11721             (__m128)__builtin_ia32_maxss_mask_round(A, B, W, U, C)
11722              
11723             #define _mm_maskz_max_round_ss(U, A, B, C) \
11724             (__m128)__builtin_ia32_maxss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
11725              
11726             #define _mm_min_round_sd(A, B, C) \
11727             (__m128d)__builtin_ia32_minsd_round(A, B, C)
11728              
11729             #define _mm_mask_min_round_sd(W, U, A, B, C) \
11730             (__m128d)__builtin_ia32_minsd_mask_round(A, B, W, U, C)
11731              
11732             #define _mm_maskz_min_round_sd(U, A, B, C) \
11733             (__m128d)__builtin_ia32_minsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
11734              
11735             #define _mm_min_round_ss(A, B, C) \
11736             (__m128)__builtin_ia32_minss_round(A, B, C)
11737              
11738             #define _mm_mask_min_round_ss(W, U, A, B, C) \
11739             (__m128)__builtin_ia32_minss_mask_round(A, B, W, U, C)
11740              
11741             #define _mm_maskz_min_round_ss(U, A, B, C) \
11742             (__m128)__builtin_ia32_minss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
11743              
11744             #endif
11745              
11746             extern __inline __m512d
11747             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11748             _mm512_mask_blend_pd (__mmask8 __U, __m512d __A, __m512d __W)
11749             {
11750             return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
11751             (__v8df) __W,
11752             (__mmask8) __U);
11753             }
11754              
11755             extern __inline __m512
11756             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11757             _mm512_mask_blend_ps (__mmask16 __U, __m512 __A, __m512 __W)
11758             {
11759             return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
11760             (__v16sf) __W,
11761             (__mmask16) __U);
11762             }
11763              
11764             extern __inline __m512i
11765             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11766             _mm512_mask_blend_epi64 (__mmask8 __U, __m512i __A, __m512i __W)
11767             {
11768             return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
11769             (__v8di) __W,
11770             (__mmask8) __U);
11771             }
11772              
11773             extern __inline __m512i
11774             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11775             _mm512_mask_blend_epi32 (__mmask16 __U, __m512i __A, __m512i __W)
11776             {
11777             return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
11778             (__v16si) __W,
11779             (__mmask16) __U);
11780             }
11781              
11782             #ifdef __OPTIMIZE__
11783             extern __inline __m128d
11784             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11785             _mm_fmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11786             {
11787             return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11788             (__v2df) __A,
11789             (__v2df) __B,
11790             __R);
11791             }
11792              
11793             extern __inline __m128
11794             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11795             _mm_fmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11796             {
11797             return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11798             (__v4sf) __A,
11799             (__v4sf) __B,
11800             __R);
11801             }
11802              
11803             extern __inline __m128d
11804             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11805             _mm_fmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11806             {
11807             return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11808             (__v2df) __A,
11809             -(__v2df) __B,
11810             __R);
11811             }
11812              
11813             extern __inline __m128
11814             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11815             _mm_fmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11816             {
11817             return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11818             (__v4sf) __A,
11819             -(__v4sf) __B,
11820             __R);
11821             }
11822              
11823             extern __inline __m128d
11824             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11825             _mm_fnmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11826             {
11827             return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11828             -(__v2df) __A,
11829             (__v2df) __B,
11830             __R);
11831             }
11832              
11833             extern __inline __m128
11834             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11835             _mm_fnmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11836             {
11837             return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11838             -(__v4sf) __A,
11839             (__v4sf) __B,
11840             __R);
11841             }
11842              
11843             extern __inline __m128d
11844             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11845             _mm_fnmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11846             {
11847             return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11848             -(__v2df) __A,
11849             -(__v2df) __B,
11850             __R);
11851             }
11852              
11853             extern __inline __m128
11854             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11855             _mm_fnmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11856             {
11857             return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11858             -(__v4sf) __A,
11859             -(__v4sf) __B,
11860             __R);
11861             }
11862             #else
11863             #define _mm_fmadd_round_sd(A, B, C, R) \
11864             (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, C, R)
11865              
11866             #define _mm_fmadd_round_ss(A, B, C, R) \
11867             (__m128)__builtin_ia32_vfmaddss3_round(A, B, C, R)
11868              
11869             #define _mm_fmsub_round_sd(A, B, C, R) \
11870             (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, -(C), R)
11871              
11872             #define _mm_fmsub_round_ss(A, B, C, R) \
11873             (__m128)__builtin_ia32_vfmaddss3_round(A, B, -(C), R)
11874              
11875             #define _mm_fnmadd_round_sd(A, B, C, R) \
11876             (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), C, R)
11877              
11878             #define _mm_fnmadd_round_ss(A, B, C, R) \
11879             (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), C, R)
11880              
11881             #define _mm_fnmsub_round_sd(A, B, C, R) \
11882             (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), -(C), R)
11883              
11884             #define _mm_fnmsub_round_ss(A, B, C, R) \
11885             (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), -(C), R)
11886             #endif
11887              
11888             extern __inline __m128d
11889             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11890             _mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
11891             {
11892             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
11893             (__v2df) __A,
11894             (__v2df) __B,
11895             (__mmask8) __U,
11896             _MM_FROUND_CUR_DIRECTION);
11897             }
11898              
11899             extern __inline __m128
11900             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11901             _mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
11902             {
11903             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
11904             (__v4sf) __A,
11905             (__v4sf) __B,
11906             (__mmask8) __U,
11907             _MM_FROUND_CUR_DIRECTION);
11908             }
11909              
11910             extern __inline __m128d
11911             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11912             _mm_mask3_fmadd_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U)
11913             {
11914             return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
11915             (__v2df) __A,
11916             (__v2df) __B,
11917             (__mmask8) __U,
11918             _MM_FROUND_CUR_DIRECTION);
11919             }
11920              
11921             extern __inline __m128
11922             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11923             _mm_mask3_fmadd_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U)
11924             {
11925             return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
11926             (__v4sf) __A,
11927             (__v4sf) __B,
11928             (__mmask8) __U,
11929             _MM_FROUND_CUR_DIRECTION);
11930             }
11931              
11932             extern __inline __m128d
11933             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11934             _mm_maskz_fmadd_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B)
11935             {
11936             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
11937             (__v2df) __A,
11938             (__v2df) __B,
11939             (__mmask8) __U,
11940             _MM_FROUND_CUR_DIRECTION);
11941             }
11942              
11943             extern __inline __m128
11944             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11945             _mm_maskz_fmadd_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B)
11946             {
11947             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
11948             (__v4sf) __A,
11949             (__v4sf) __B,
11950             (__mmask8) __U,
11951             _MM_FROUND_CUR_DIRECTION);
11952             }
11953              
11954             extern __inline __m128d
11955             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11956             _mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
11957             {
11958             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
11959             (__v2df) __A,
11960             -(__v2df) __B,
11961             (__mmask8) __U,
11962             _MM_FROUND_CUR_DIRECTION);
11963             }
11964              
11965             extern __inline __m128
11966             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11967             _mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
11968             {
11969             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
11970             (__v4sf) __A,
11971             -(__v4sf) __B,
11972             (__mmask8) __U,
11973             _MM_FROUND_CUR_DIRECTION);
11974             }
11975              
11976             extern __inline __m128d
11977             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11978             _mm_mask3_fmsub_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U)
11979             {
11980             return (__m128d) __builtin_ia32_vfmsubsd3_mask3 ((__v2df) __W,
11981             (__v2df) __A,
11982             (__v2df) __B,
11983             (__mmask8) __U,
11984             _MM_FROUND_CUR_DIRECTION);
11985             }
11986              
11987             extern __inline __m128
11988             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11989             _mm_mask3_fmsub_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U)
11990             {
11991             return (__m128) __builtin_ia32_vfmsubss3_mask3 ((__v4sf) __W,
11992             (__v4sf) __A,
11993             (__v4sf) __B,
11994             (__mmask8) __U,
11995             _MM_FROUND_CUR_DIRECTION);
11996             }
11997              
11998             extern __inline __m128d
11999             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12000             _mm_maskz_fmsub_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B)
12001             {
12002             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12003             (__v2df) __A,
12004             -(__v2df) __B,
12005             (__mmask8) __U,
12006             _MM_FROUND_CUR_DIRECTION);
12007             }
12008              
12009             extern __inline __m128
12010             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12011             _mm_maskz_fmsub_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B)
12012             {
12013             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12014             (__v4sf) __A,
12015             -(__v4sf) __B,
12016             (__mmask8) __U,
12017             _MM_FROUND_CUR_DIRECTION);
12018             }
12019              
12020             extern __inline __m128d
12021             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12022             _mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
12023             {
12024             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
12025             -(__v2df) __A,
12026             (__v2df) __B,
12027             (__mmask8) __U,
12028             _MM_FROUND_CUR_DIRECTION);
12029             }
12030              
12031             extern __inline __m128
12032             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12033             _mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
12034             {
12035             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
12036             -(__v4sf) __A,
12037             (__v4sf) __B,
12038             (__mmask8) __U,
12039             _MM_FROUND_CUR_DIRECTION);
12040             }
12041              
12042             extern __inline __m128d
12043             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12044             _mm_mask3_fnmadd_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U)
12045             {
12046             return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
12047             -(__v2df) __A,
12048             (__v2df) __B,
12049             (__mmask8) __U,
12050             _MM_FROUND_CUR_DIRECTION);
12051             }
12052              
12053             extern __inline __m128
12054             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12055             _mm_mask3_fnmadd_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U)
12056             {
12057             return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
12058             -(__v4sf) __A,
12059             (__v4sf) __B,
12060             (__mmask8) __U,
12061             _MM_FROUND_CUR_DIRECTION);
12062             }
12063              
12064             extern __inline __m128d
12065             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12066             _mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B)
12067             {
12068             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12069             -(__v2df) __A,
12070             (__v2df) __B,
12071             (__mmask8) __U,
12072             _MM_FROUND_CUR_DIRECTION);
12073             }
12074              
12075             extern __inline __m128
12076             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12077             _mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B)
12078             {
12079             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12080             -(__v4sf) __A,
12081             (__v4sf) __B,
12082             (__mmask8) __U,
12083             _MM_FROUND_CUR_DIRECTION);
12084             }
12085              
12086             extern __inline __m128d
12087             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12088             _mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
12089             {
12090             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
12091             -(__v2df) __A,
12092             -(__v2df) __B,
12093             (__mmask8) __U,
12094             _MM_FROUND_CUR_DIRECTION);
12095             }
12096              
12097             extern __inline __m128
12098             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12099             _mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
12100             {
12101             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
12102             -(__v4sf) __A,
12103             -(__v4sf) __B,
12104             (__mmask8) __U,
12105             _MM_FROUND_CUR_DIRECTION);
12106             }
12107              
12108             extern __inline __m128d
12109             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12110             _mm_mask3_fnmsub_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U)
12111             {
12112             return (__m128d) __builtin_ia32_vfmsubsd3_mask3 ((__v2df) __W,
12113             -(__v2df) __A,
12114             (__v2df) __B,
12115             (__mmask8) __U,
12116             _MM_FROUND_CUR_DIRECTION);
12117             }
12118              
12119             extern __inline __m128
12120             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12121             _mm_mask3_fnmsub_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U)
12122             {
12123             return (__m128) __builtin_ia32_vfmsubss3_mask3 ((__v4sf) __W,
12124             -(__v4sf) __A,
12125             (__v4sf) __B,
12126             (__mmask8) __U,
12127             _MM_FROUND_CUR_DIRECTION);
12128             }
12129              
12130             extern __inline __m128d
12131             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12132             _mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B)
12133             {
12134             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12135             -(__v2df) __A,
12136             -(__v2df) __B,
12137             (__mmask8) __U,
12138             _MM_FROUND_CUR_DIRECTION);
12139             }
12140              
12141             extern __inline __m128
12142             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12143             _mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B)
12144             {
12145             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12146             -(__v4sf) __A,
12147             -(__v4sf) __B,
12148             (__mmask8) __U,
12149             _MM_FROUND_CUR_DIRECTION);
12150             }
12151              
12152             #ifdef __OPTIMIZE__
12153             extern __inline __m128d
12154             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12155             _mm_mask_fmadd_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
12156             const int __R)
12157             {
12158             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
12159             (__v2df) __A,
12160             (__v2df) __B,
12161             (__mmask8) __U, __R);
12162             }
12163              
12164             extern __inline __m128
12165             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12166             _mm_mask_fmadd_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
12167             const int __R)
12168             {
12169             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
12170             (__v4sf) __A,
12171             (__v4sf) __B,
12172             (__mmask8) __U, __R);
12173             }
12174              
12175             extern __inline __m128d
12176             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12177             _mm_mask3_fmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U,
12178             const int __R)
12179             {
12180             return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
12181             (__v2df) __A,
12182             (__v2df) __B,
12183             (__mmask8) __U, __R);
12184             }
12185              
12186             extern __inline __m128
12187             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12188             _mm_mask3_fmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U,
12189             const int __R)
12190             {
12191             return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
12192             (__v4sf) __A,
12193             (__v4sf) __B,
12194             (__mmask8) __U, __R);
12195             }
12196              
12197             extern __inline __m128d
12198             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12199             _mm_maskz_fmadd_round_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B,
12200             const int __R)
12201             {
12202             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12203             (__v2df) __A,
12204             (__v2df) __B,
12205             (__mmask8) __U, __R);
12206             }
12207              
12208             extern __inline __m128
12209             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12210             _mm_maskz_fmadd_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
12211             const int __R)
12212             {
12213             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12214             (__v4sf) __A,
12215             (__v4sf) __B,
12216             (__mmask8) __U, __R);
12217             }
12218              
12219             extern __inline __m128d
12220             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12221             _mm_mask_fmsub_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
12222             const int __R)
12223             {
12224             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
12225             (__v2df) __A,
12226             -(__v2df) __B,
12227             (__mmask8) __U, __R);
12228             }
12229              
12230             extern __inline __m128
12231             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12232             _mm_mask_fmsub_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
12233             const int __R)
12234             {
12235             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
12236             (__v4sf) __A,
12237             -(__v4sf) __B,
12238             (__mmask8) __U, __R);
12239             }
12240              
12241             extern __inline __m128d
12242             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12243             _mm_mask3_fmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U,
12244             const int __R)
12245             {
12246             return (__m128d) __builtin_ia32_vfmsubsd3_mask3 ((__v2df) __W,
12247             (__v2df) __A,
12248             (__v2df) __B,
12249             (__mmask8) __U, __R);
12250             }
12251              
12252             extern __inline __m128
12253             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12254             _mm_mask3_fmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U,
12255             const int __R)
12256             {
12257             return (__m128) __builtin_ia32_vfmsubss3_mask3 ((__v4sf) __W,
12258             (__v4sf) __A,
12259             (__v4sf) __B,
12260             (__mmask8) __U, __R);
12261             }
12262              
12263             extern __inline __m128d
12264             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12265             _mm_maskz_fmsub_round_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B,
12266             const int __R)
12267             {
12268             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12269             (__v2df) __A,
12270             -(__v2df) __B,
12271             (__mmask8) __U, __R);
12272             }
12273              
12274             extern __inline __m128
12275             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12276             _mm_maskz_fmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
12277             const int __R)
12278             {
12279             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12280             (__v4sf) __A,
12281             -(__v4sf) __B,
12282             (__mmask8) __U, __R);
12283             }
12284              
12285             extern __inline __m128d
12286             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12287             _mm_mask_fnmadd_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
12288             const int __R)
12289             {
12290             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
12291             -(__v2df) __A,
12292             (__v2df) __B,
12293             (__mmask8) __U, __R);
12294             }
12295              
12296             extern __inline __m128
12297             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12298             _mm_mask_fnmadd_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
12299             const int __R)
12300             {
12301             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
12302             -(__v4sf) __A,
12303             (__v4sf) __B,
12304             (__mmask8) __U, __R);
12305             }
12306              
12307             extern __inline __m128d
12308             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12309             _mm_mask3_fnmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U,
12310             const int __R)
12311             {
12312             return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
12313             -(__v2df) __A,
12314             (__v2df) __B,
12315             (__mmask8) __U, __R);
12316             }
12317              
12318             extern __inline __m128
12319             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12320             _mm_mask3_fnmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U,
12321             const int __R)
12322             {
12323             return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
12324             -(__v4sf) __A,
12325             (__v4sf) __B,
12326             (__mmask8) __U, __R);
12327             }
12328              
12329             extern __inline __m128d
12330             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12331             _mm_maskz_fnmadd_round_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B,
12332             const int __R)
12333             {
12334             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12335             -(__v2df) __A,
12336             (__v2df) __B,
12337             (__mmask8) __U, __R);
12338             }
12339              
12340             extern __inline __m128
12341             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12342             _mm_maskz_fnmadd_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
12343             const int __R)
12344             {
12345             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12346             -(__v4sf) __A,
12347             (__v4sf) __B,
12348             (__mmask8) __U, __R);
12349             }
12350              
12351             extern __inline __m128d
12352             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12353             _mm_mask_fnmsub_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
12354             const int __R)
12355             {
12356             return (__m128d) __builtin_ia32_vfmaddsd3_mask ((__v2df) __W,
12357             -(__v2df) __A,
12358             -(__v2df) __B,
12359             (__mmask8) __U, __R);
12360             }
12361              
12362             extern __inline __m128
12363             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12364             _mm_mask_fnmsub_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
12365             const int __R)
12366             {
12367             return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __W,
12368             -(__v4sf) __A,
12369             -(__v4sf) __B,
12370             (__mmask8) __U, __R);
12371             }
12372              
12373             extern __inline __m128d
12374             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12375             _mm_mask3_fnmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, __mmask8 __U,
12376             const int __R)
12377             {
12378             return (__m128d) __builtin_ia32_vfmsubsd3_mask3 ((__v2df) __W,
12379             -(__v2df) __A,
12380             (__v2df) __B,
12381             (__mmask8) __U, __R);
12382             }
12383              
12384             extern __inline __m128
12385             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12386             _mm_mask3_fnmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, __mmask8 __U,
12387             const int __R)
12388             {
12389             return (__m128) __builtin_ia32_vfmsubss3_mask3 ((__v4sf) __W,
12390             -(__v4sf) __A,
12391             (__v4sf) __B,
12392             (__mmask8) __U, __R);
12393             }
12394              
12395             extern __inline __m128d
12396             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12397             _mm_maskz_fnmsub_round_sd (__mmask8 __U, __m128d __W, __m128d __A, __m128d __B,
12398             const int __R)
12399             {
12400             return (__m128d) __builtin_ia32_vfmaddsd3_maskz ((__v2df) __W,
12401             -(__v2df) __A,
12402             -(__v2df) __B,
12403             (__mmask8) __U, __R);
12404             }
12405              
12406             extern __inline __m128
12407             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12408             _mm_maskz_fnmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
12409             const int __R)
12410             {
12411             return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __W,
12412             -(__v4sf) __A,
12413             -(__v4sf) __B,
12414             (__mmask8) __U, __R);
12415             }
12416             #else
12417             #define _mm_mask_fmadd_round_sd(A, U, B, C, R) \
12418             (__m128d) __builtin_ia32_vfmaddsd3_mask (A, B, C, U, R)
12419              
12420             #define _mm_mask_fmadd_round_ss(A, U, B, C, R) \
12421             (__m128) __builtin_ia32_vfmaddss3_mask (A, B, C, U, R)
12422              
12423             #define _mm_mask3_fmadd_round_sd(A, B, C, U, R) \
12424             (__m128d) __builtin_ia32_vfmaddsd3_mask3 (A, B, C, U, R)
12425              
12426             #define _mm_mask3_fmadd_round_ss(A, B, C, U, R) \
12427             (__m128) __builtin_ia32_vfmaddss3_mask3 (A, B, C, U, R)
12428              
12429             #define _mm_maskz_fmadd_round_sd(U, A, B, C, R) \
12430             (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, B, C, U, R)
12431              
12432             #define _mm_maskz_fmadd_round_ss(U, A, B, C, R) \
12433             (__m128) __builtin_ia32_vfmaddss3_maskz (A, B, C, U, R)
12434              
12435             #define _mm_mask_fmsub_round_sd(A, U, B, C, R) \
12436             (__m128d) __builtin_ia32_vfmaddsd3_mask (A, B, -(C), U, R)
12437              
12438             #define _mm_mask_fmsub_round_ss(A, U, B, C, R) \
12439             (__m128) __builtin_ia32_vfmaddss3_mask (A, B, -(C), U, R)
12440              
12441             #define _mm_mask3_fmsub_round_sd(A, B, C, U, R) \
12442             (__m128d) __builtin_ia32_vfmsubsd3_mask3 (A, B, C, U, R)
12443              
12444             #define _mm_mask3_fmsub_round_ss(A, B, C, U, R) \
12445             (__m128) __builtin_ia32_vfmsubss3_mask3 (A, B, C, U, R)
12446              
12447             #define _mm_maskz_fmsub_round_sd(U, A, B, C, R) \
12448             (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, B, -(C), U, R)
12449              
12450             #define _mm_maskz_fmsub_round_ss(U, A, B, C, R) \
12451             (__m128) __builtin_ia32_vfmaddss3_maskz (A, B, -(C), U, R)
12452              
12453             #define _mm_mask_fnmadd_round_sd(A, U, B, C, R) \
12454             (__m128d) __builtin_ia32_vfmaddsd3_mask (A, -(B), C, U, R)
12455              
12456             #define _mm_mask_fnmadd_round_ss(A, U, B, C, R) \
12457             (__m128) __builtin_ia32_vfmaddss3_mask (A, -(B), C, U, R)
12458              
12459             #define _mm_mask3_fnmadd_round_sd(A, B, C, U, R) \
12460             (__m128d) __builtin_ia32_vfmaddsd3_mask3 (A, -(B), C, U, R)
12461              
12462             #define _mm_mask3_fnmadd_round_ss(A, B, C, U, R) \
12463             (__m128) __builtin_ia32_vfmaddss3_mask3 (A, -(B), C, U, R)
12464              
12465             #define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) \
12466             (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, -(B), C, U, R)
12467              
12468             #define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) \
12469             (__m128) __builtin_ia32_vfmaddss3_maskz (A, -(B), C, U, R)
12470              
12471             #define _mm_mask_fnmsub_round_sd(A, U, B, C, R) \
12472             (__m128d) __builtin_ia32_vfmaddsd3_mask (A, -(B), -(C), U, R)
12473              
12474             #define _mm_mask_fnmsub_round_ss(A, U, B, C, R) \
12475             (__m128) __builtin_ia32_vfmaddss3_mask (A, -(B), -(C), U, R)
12476              
12477             #define _mm_mask3_fnmsub_round_sd(A, B, C, U, R) \
12478             (__m128d) __builtin_ia32_vfmsubsd3_mask3 (A, -(B), C, U, R)
12479              
12480             #define _mm_mask3_fnmsub_round_ss(A, B, C, U, R) \
12481             (__m128) __builtin_ia32_vfmsubss3_mask3 (A, -(B), C, U, R)
12482              
12483             #define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) \
12484             (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, -(B), -(C), U, R)
12485              
12486             #define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) \
12487             (__m128) __builtin_ia32_vfmaddss3_maskz (A, -(B), -(C), U, R)
12488             #endif
12489              
12490             #ifdef __OPTIMIZE__
12491             extern __inline int
12492             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12493             _mm_comi_round_ss (__m128 __A, __m128 __B, const int __P, const int __R)
12494             {
12495             return __builtin_ia32_vcomiss ((__v4sf) __A, (__v4sf) __B, __P, __R);
12496             }
12497              
12498             extern __inline int
12499             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12500             _mm_comi_round_sd (__m128d __A, __m128d __B, const int __P, const int __R)
12501             {
12502             return __builtin_ia32_vcomisd ((__v2df) __A, (__v2df) __B, __P, __R);
12503             }
12504             #else
12505             #define _mm_comi_round_ss(A, B, C, D)\
12506             __builtin_ia32_vcomiss(A, B, C, D)
12507             #define _mm_comi_round_sd(A, B, C, D)\
12508             __builtin_ia32_vcomisd(A, B, C, D)
12509             #endif
12510              
12511             extern __inline __m512d
12512             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12513             _mm512_sqrt_pd (__m512d __A)
12514             {
12515             return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
12516             (__v8df)
12517             _mm512_undefined_pd (),
12518             (__mmask8) -1,
12519             _MM_FROUND_CUR_DIRECTION);
12520             }
12521              
12522             extern __inline __m512d
12523             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12524             _mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
12525             {
12526             return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
12527             (__v8df) __W,
12528             (__mmask8) __U,
12529             _MM_FROUND_CUR_DIRECTION);
12530             }
12531              
12532             extern __inline __m512d
12533             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12534             _mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
12535             {
12536             return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
12537             (__v8df)
12538             _mm512_setzero_pd (),
12539             (__mmask8) __U,
12540             _MM_FROUND_CUR_DIRECTION);
12541             }
12542              
12543             extern __inline __m512
12544             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12545             _mm512_sqrt_ps (__m512 __A)
12546             {
12547             return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
12548             (__v16sf)
12549             _mm512_undefined_ps (),
12550             (__mmask16) -1,
12551             _MM_FROUND_CUR_DIRECTION);
12552             }
12553              
12554             extern __inline __m512
12555             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12556             _mm512_mask_sqrt_ps (__m512 __W, __mmask16 __U, __m512 __A)
12557             {
12558             return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
12559             (__v16sf) __W,
12560             (__mmask16) __U,
12561             _MM_FROUND_CUR_DIRECTION);
12562             }
12563              
12564             extern __inline __m512
12565             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12566             _mm512_maskz_sqrt_ps (__mmask16 __U, __m512 __A)
12567             {
12568             return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
12569             (__v16sf)
12570             _mm512_setzero_ps (),
12571             (__mmask16) __U,
12572             _MM_FROUND_CUR_DIRECTION);
12573             }
12574              
12575             extern __inline __m512d
12576             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12577             _mm512_add_pd (__m512d __A, __m512d __B)
12578             {
12579             return (__m512d) ((__v8df)__A + (__v8df)__B);
12580             }
12581              
12582             extern __inline __m512d
12583             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12584             _mm512_mask_add_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
12585             {
12586             return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
12587             (__v8df) __B,
12588             (__v8df) __W,
12589             (__mmask8) __U,
12590             _MM_FROUND_CUR_DIRECTION);
12591             }
12592              
12593             extern __inline __m512d
12594             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12595             _mm512_maskz_add_pd (__mmask8 __U, __m512d __A, __m512d __B)
12596             {
12597             return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
12598             (__v8df) __B,
12599             (__v8df)
12600             _mm512_setzero_pd (),
12601             (__mmask8) __U,
12602             _MM_FROUND_CUR_DIRECTION);
12603             }
12604              
12605             extern __inline __m512
12606             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12607             _mm512_add_ps (__m512 __A, __m512 __B)
12608             {
12609             return (__m512) ((__v16sf)__A + (__v16sf)__B);
12610             }
12611              
12612             extern __inline __m512
12613             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12614             _mm512_mask_add_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
12615             {
12616             return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
12617             (__v16sf) __B,
12618             (__v16sf) __W,
12619             (__mmask16) __U,
12620             _MM_FROUND_CUR_DIRECTION);
12621             }
12622              
12623             extern __inline __m512
12624             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12625             _mm512_maskz_add_ps (__mmask16 __U, __m512 __A, __m512 __B)
12626             {
12627             return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
12628             (__v16sf) __B,
12629             (__v16sf)
12630             _mm512_setzero_ps (),
12631             (__mmask16) __U,
12632             _MM_FROUND_CUR_DIRECTION);
12633             }
12634              
12635             extern __inline __m128d
12636             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12637             _mm_mask_add_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
12638             {
12639             return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
12640             (__v2df) __B,
12641             (__v2df) __W,
12642             (__mmask8) __U,
12643             _MM_FROUND_CUR_DIRECTION);
12644             }
12645              
12646             extern __inline __m128d
12647             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12648             _mm_maskz_add_sd (__mmask8 __U, __m128d __A, __m128d __B)
12649             {
12650             return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
12651             (__v2df) __B,
12652             (__v2df)
12653             _mm_setzero_pd (),
12654             (__mmask8) __U,
12655             _MM_FROUND_CUR_DIRECTION);
12656             }
12657              
12658             extern __inline __m128
12659             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12660             _mm_mask_add_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
12661             {
12662             return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
12663             (__v4sf) __B,
12664             (__v4sf) __W,
12665             (__mmask8) __U,
12666             _MM_FROUND_CUR_DIRECTION);
12667             }
12668              
12669             extern __inline __m128
12670             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12671             _mm_maskz_add_ss (__mmask8 __U, __m128 __A, __m128 __B)
12672             {
12673             return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
12674             (__v4sf) __B,
12675             (__v4sf)
12676             _mm_setzero_ps (),
12677             (__mmask8) __U,
12678             _MM_FROUND_CUR_DIRECTION);
12679             }
12680              
12681             extern __inline __m512d
12682             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12683             _mm512_sub_pd (__m512d __A, __m512d __B)
12684             {
12685             return (__m512d) ((__v8df)__A - (__v8df)__B);
12686             }
12687              
12688             extern __inline __m512d
12689             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12690             _mm512_mask_sub_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
12691             {
12692             return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
12693             (__v8df) __B,
12694             (__v8df) __W,
12695             (__mmask8) __U,
12696             _MM_FROUND_CUR_DIRECTION);
12697             }
12698              
12699             extern __inline __m512d
12700             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12701             _mm512_maskz_sub_pd (__mmask8 __U, __m512d __A, __m512d __B)
12702             {
12703             return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
12704             (__v8df) __B,
12705             (__v8df)
12706             _mm512_setzero_pd (),
12707             (__mmask8) __U,
12708             _MM_FROUND_CUR_DIRECTION);
12709             }
12710              
12711             extern __inline __m512
12712             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12713             _mm512_sub_ps (__m512 __A, __m512 __B)
12714             {
12715             return (__m512) ((__v16sf)__A - (__v16sf)__B);
12716             }
12717              
12718             extern __inline __m512
12719             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12720             _mm512_mask_sub_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
12721             {
12722             return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
12723             (__v16sf) __B,
12724             (__v16sf) __W,
12725             (__mmask16) __U,
12726             _MM_FROUND_CUR_DIRECTION);
12727             }
12728              
12729             extern __inline __m512
12730             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12731             _mm512_maskz_sub_ps (__mmask16 __U, __m512 __A, __m512 __B)
12732             {
12733             return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
12734             (__v16sf) __B,
12735             (__v16sf)
12736             _mm512_setzero_ps (),
12737             (__mmask16) __U,
12738             _MM_FROUND_CUR_DIRECTION);
12739             }
12740              
12741             extern __inline __m128d
12742             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12743             _mm_mask_sub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
12744             {
12745             return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
12746             (__v2df) __B,
12747             (__v2df) __W,
12748             (__mmask8) __U,
12749             _MM_FROUND_CUR_DIRECTION);
12750             }
12751              
12752             extern __inline __m128d
12753             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12754             _mm_maskz_sub_sd (__mmask8 __U, __m128d __A, __m128d __B)
12755             {
12756             return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
12757             (__v2df) __B,
12758             (__v2df)
12759             _mm_setzero_pd (),
12760             (__mmask8) __U,
12761             _MM_FROUND_CUR_DIRECTION);
12762             }
12763              
12764             extern __inline __m128
12765             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12766             _mm_mask_sub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
12767             {
12768             return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
12769             (__v4sf) __B,
12770             (__v4sf) __W,
12771             (__mmask8) __U,
12772             _MM_FROUND_CUR_DIRECTION);
12773             }
12774              
12775             extern __inline __m128
12776             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12777             _mm_maskz_sub_ss (__mmask8 __U, __m128 __A, __m128 __B)
12778             {
12779             return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
12780             (__v4sf) __B,
12781             (__v4sf)
12782             _mm_setzero_ps (),
12783             (__mmask8) __U,
12784             _MM_FROUND_CUR_DIRECTION);
12785             }
12786              
12787             extern __inline __m512d
12788             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12789             _mm512_mul_pd (__m512d __A, __m512d __B)
12790             {
12791             return (__m512d) ((__v8df)__A * (__v8df)__B);
12792             }
12793              
12794             extern __inline __m512d
12795             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12796             _mm512_mask_mul_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
12797             {
12798             return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
12799             (__v8df) __B,
12800             (__v8df) __W,
12801             (__mmask8) __U,
12802             _MM_FROUND_CUR_DIRECTION);
12803             }
12804              
12805             extern __inline __m512d
12806             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12807             _mm512_maskz_mul_pd (__mmask8 __U, __m512d __A, __m512d __B)
12808             {
12809             return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
12810             (__v8df) __B,
12811             (__v8df)
12812             _mm512_setzero_pd (),
12813             (__mmask8) __U,
12814             _MM_FROUND_CUR_DIRECTION);
12815             }
12816              
12817             extern __inline __m512
12818             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12819             _mm512_mul_ps (__m512 __A, __m512 __B)
12820             {
12821             return (__m512) ((__v16sf)__A * (__v16sf)__B);
12822             }
12823              
12824             extern __inline __m512
12825             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12826             _mm512_mask_mul_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
12827             {
12828             return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
12829             (__v16sf) __B,
12830             (__v16sf) __W,
12831             (__mmask16) __U,
12832             _MM_FROUND_CUR_DIRECTION);
12833             }
12834              
12835             extern __inline __m512
12836             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12837             _mm512_maskz_mul_ps (__mmask16 __U, __m512 __A, __m512 __B)
12838             {
12839             return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
12840             (__v16sf) __B,
12841             (__v16sf)
12842             _mm512_setzero_ps (),
12843             (__mmask16) __U,
12844             _MM_FROUND_CUR_DIRECTION);
12845             }
12846              
12847             extern __inline __m128d
12848             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12849             _mm_mask_mul_sd (__m128d __W, __mmask8 __U, __m128d __A,
12850             __m128d __B)
12851             {
12852             return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
12853             (__v2df) __B,
12854             (__v2df) __W,
12855             (__mmask8) __U,
12856             _MM_FROUND_CUR_DIRECTION);
12857             }
12858              
12859             extern __inline __m128d
12860             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12861             _mm_maskz_mul_sd (__mmask8 __U, __m128d __A, __m128d __B)
12862             {
12863             return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
12864             (__v2df) __B,
12865             (__v2df)
12866             _mm_setzero_pd (),
12867             (__mmask8) __U,
12868             _MM_FROUND_CUR_DIRECTION);
12869             }
12870              
12871             extern __inline __m128
12872             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12873             _mm_mask_mul_ss (__m128 __W, __mmask8 __U, __m128 __A,
12874             __m128 __B)
12875             {
12876             return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
12877             (__v4sf) __B,
12878             (__v4sf) __W,
12879             (__mmask8) __U,
12880             _MM_FROUND_CUR_DIRECTION);
12881             }
12882              
12883             extern __inline __m128
12884             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12885             _mm_maskz_mul_ss (__mmask8 __U, __m128 __A, __m128 __B)
12886             {
12887             return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
12888             (__v4sf) __B,
12889             (__v4sf)
12890             _mm_setzero_ps (),
12891             (__mmask8) __U,
12892             _MM_FROUND_CUR_DIRECTION);
12893             }
12894              
12895             extern __inline __m512d
12896             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12897             _mm512_div_pd (__m512d __M, __m512d __V)
12898             {
12899             return (__m512d) ((__v8df)__M / (__v8df)__V);
12900             }
12901              
12902             extern __inline __m512d
12903             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12904             _mm512_mask_div_pd (__m512d __W, __mmask8 __U, __m512d __M, __m512d __V)
12905             {
12906             return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
12907             (__v8df) __V,
12908             (__v8df) __W,
12909             (__mmask8) __U,
12910             _MM_FROUND_CUR_DIRECTION);
12911             }
12912              
12913             extern __inline __m512d
12914             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12915             _mm512_maskz_div_pd (__mmask8 __U, __m512d __M, __m512d __V)
12916             {
12917             return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
12918             (__v8df) __V,
12919             (__v8df)
12920             _mm512_setzero_pd (),
12921             (__mmask8) __U,
12922             _MM_FROUND_CUR_DIRECTION);
12923             }
12924              
12925             extern __inline __m512
12926             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12927             _mm512_div_ps (__m512 __A, __m512 __B)
12928             {
12929             return (__m512) ((__v16sf)__A / (__v16sf)__B);
12930             }
12931              
12932             extern __inline __m512
12933             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12934             _mm512_mask_div_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
12935             {
12936             return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
12937             (__v16sf) __B,
12938             (__v16sf) __W,
12939             (__mmask16) __U,
12940             _MM_FROUND_CUR_DIRECTION);
12941             }
12942              
12943             extern __inline __m512
12944             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12945             _mm512_maskz_div_ps (__mmask16 __U, __m512 __A, __m512 __B)
12946             {
12947             return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
12948             (__v16sf) __B,
12949             (__v16sf)
12950             _mm512_setzero_ps (),
12951             (__mmask16) __U,
12952             _MM_FROUND_CUR_DIRECTION);
12953             }
12954              
12955             extern __inline __m128d
12956             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12957             _mm_mask_div_sd (__m128d __W, __mmask8 __U, __m128d __A,
12958             __m128d __B)
12959             {
12960             return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
12961             (__v2df) __B,
12962             (__v2df) __W,
12963             (__mmask8) __U,
12964             _MM_FROUND_CUR_DIRECTION);
12965             }
12966              
12967             extern __inline __m128d
12968             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12969             _mm_maskz_div_sd (__mmask8 __U, __m128d __A, __m128d __B)
12970             {
12971             return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
12972             (__v2df) __B,
12973             (__v2df)
12974             _mm_setzero_pd (),
12975             (__mmask8) __U,
12976             _MM_FROUND_CUR_DIRECTION);
12977             }
12978              
12979             extern __inline __m128
12980             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12981             _mm_mask_div_ss (__m128 __W, __mmask8 __U, __m128 __A,
12982             __m128 __B)
12983             {
12984             return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
12985             (__v4sf) __B,
12986             (__v4sf) __W,
12987             (__mmask8) __U,
12988             _MM_FROUND_CUR_DIRECTION);
12989             }
12990              
12991             extern __inline __m128
12992             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12993             _mm_maskz_div_ss (__mmask8 __U, __m128 __A, __m128 __B)
12994             {
12995             return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
12996             (__v4sf) __B,
12997             (__v4sf)
12998             _mm_setzero_ps (),
12999             (__mmask8) __U,
13000             _MM_FROUND_CUR_DIRECTION);
13001             }
13002              
13003             extern __inline __m512d
13004             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13005             _mm512_max_pd (__m512d __A, __m512d __B)
13006             {
13007             return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
13008             (__v8df) __B,
13009             (__v8df)
13010             _mm512_undefined_pd (),
13011             (__mmask8) -1,
13012             _MM_FROUND_CUR_DIRECTION);
13013             }
13014              
13015             extern __inline __m512d
13016             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13017             _mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
13018             {
13019             return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
13020             (__v8df) __B,
13021             (__v8df) __W,
13022             (__mmask8) __U,
13023             _MM_FROUND_CUR_DIRECTION);
13024             }
13025              
13026             extern __inline __m512d
13027             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13028             _mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
13029             {
13030             return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
13031             (__v8df) __B,
13032             (__v8df)
13033             _mm512_setzero_pd (),
13034             (__mmask8) __U,
13035             _MM_FROUND_CUR_DIRECTION);
13036             }
13037              
13038             extern __inline __m512
13039             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13040             _mm512_max_ps (__m512 __A, __m512 __B)
13041             {
13042             return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
13043             (__v16sf) __B,
13044             (__v16sf)
13045             _mm512_undefined_ps (),
13046             (__mmask16) -1,
13047             _MM_FROUND_CUR_DIRECTION);
13048             }
13049              
13050             extern __inline __m512
13051             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13052             _mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
13053             {
13054             return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
13055             (__v16sf) __B,
13056             (__v16sf) __W,
13057             (__mmask16) __U,
13058             _MM_FROUND_CUR_DIRECTION);
13059             }
13060              
13061             extern __inline __m512
13062             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13063             _mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
13064             {
13065             return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
13066             (__v16sf) __B,
13067             (__v16sf)
13068             _mm512_setzero_ps (),
13069             (__mmask16) __U,
13070             _MM_FROUND_CUR_DIRECTION);
13071             }
13072              
13073             extern __inline __m128d
13074             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13075             _mm_mask_max_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
13076             {
13077             return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
13078             (__v2df) __B,
13079             (__v2df) __W,
13080             (__mmask8) __U,
13081             _MM_FROUND_CUR_DIRECTION);
13082             }
13083              
13084             extern __inline __m128d
13085             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13086             _mm_maskz_max_sd (__mmask8 __U, __m128d __A, __m128d __B)
13087             {
13088             return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
13089             (__v2df) __B,
13090             (__v2df)
13091             _mm_setzero_pd (),
13092             (__mmask8) __U,
13093             _MM_FROUND_CUR_DIRECTION);
13094             }
13095              
13096             extern __inline __m128
13097             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13098             _mm_mask_max_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
13099             {
13100             return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
13101             (__v4sf) __B,
13102             (__v4sf) __W,
13103             (__mmask8) __U,
13104             _MM_FROUND_CUR_DIRECTION);
13105             }
13106              
13107             extern __inline __m128
13108             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13109             _mm_maskz_max_ss (__mmask8 __U, __m128 __A, __m128 __B)
13110             {
13111             return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
13112             (__v4sf) __B,
13113             (__v4sf)
13114             _mm_setzero_ps (),
13115             (__mmask8) __U,
13116             _MM_FROUND_CUR_DIRECTION);
13117             }
13118              
13119             extern __inline __m512d
13120             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13121             _mm512_min_pd (__m512d __A, __m512d __B)
13122             {
13123             return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
13124             (__v8df) __B,
13125             (__v8df)
13126             _mm512_undefined_pd (),
13127             (__mmask8) -1,
13128             _MM_FROUND_CUR_DIRECTION);
13129             }
13130              
13131             extern __inline __m512d
13132             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13133             _mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
13134             {
13135             return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
13136             (__v8df) __B,
13137             (__v8df) __W,
13138             (__mmask8) __U,
13139             _MM_FROUND_CUR_DIRECTION);
13140             }
13141              
13142             extern __inline __m512d
13143             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13144             _mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
13145             {
13146             return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
13147             (__v8df) __B,
13148             (__v8df)
13149             _mm512_setzero_pd (),
13150             (__mmask8) __U,
13151             _MM_FROUND_CUR_DIRECTION);
13152             }
13153              
13154             extern __inline __m512
13155             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13156             _mm512_min_ps (__m512 __A, __m512 __B)
13157             {
13158             return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
13159             (__v16sf) __B,
13160             (__v16sf)
13161             _mm512_undefined_ps (),
13162             (__mmask16) -1,
13163             _MM_FROUND_CUR_DIRECTION);
13164             }
13165              
13166             extern __inline __m512
13167             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13168             _mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
13169             {
13170             return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
13171             (__v16sf) __B,
13172             (__v16sf) __W,
13173             (__mmask16) __U,
13174             _MM_FROUND_CUR_DIRECTION);
13175             }
13176              
13177             extern __inline __m512
13178             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13179             _mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
13180             {
13181             return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
13182             (__v16sf) __B,
13183             (__v16sf)
13184             _mm512_setzero_ps (),
13185             (__mmask16) __U,
13186             _MM_FROUND_CUR_DIRECTION);
13187             }
13188              
13189             extern __inline __m128d
13190             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13191             _mm_mask_min_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
13192             {
13193             return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
13194             (__v2df) __B,
13195             (__v2df) __W,
13196             (__mmask8) __U,
13197             _MM_FROUND_CUR_DIRECTION);
13198             }
13199              
13200             extern __inline __m128d
13201             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13202             _mm_maskz_min_sd (__mmask8 __U, __m128d __A, __m128d __B)
13203             {
13204             return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
13205             (__v2df) __B,
13206             (__v2df)
13207             _mm_setzero_pd (),
13208             (__mmask8) __U,
13209             _MM_FROUND_CUR_DIRECTION);
13210             }
13211              
13212             extern __inline __m128
13213             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13214             _mm_mask_min_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
13215             {
13216             return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
13217             (__v4sf) __B,
13218             (__v4sf) __W,
13219             (__mmask8) __U,
13220             _MM_FROUND_CUR_DIRECTION);
13221             }
13222              
13223             extern __inline __m128
13224             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13225             _mm_maskz_min_ss (__mmask8 __U, __m128 __A, __m128 __B)
13226             {
13227             return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
13228             (__v4sf) __B,
13229             (__v4sf)
13230             _mm_setzero_ps (),
13231             (__mmask8) __U,
13232             _MM_FROUND_CUR_DIRECTION);
13233             }
13234              
13235             extern __inline __m512d
13236             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13237             _mm512_scalef_pd (__m512d __A, __m512d __B)
13238             {
13239             return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
13240             (__v8df) __B,
13241             (__v8df)
13242             _mm512_undefined_pd (),
13243             (__mmask8) -1,
13244             _MM_FROUND_CUR_DIRECTION);
13245             }
13246              
13247             extern __inline __m512d
13248             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13249             _mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
13250             {
13251             return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
13252             (__v8df) __B,
13253             (__v8df) __W,
13254             (__mmask8) __U,
13255             _MM_FROUND_CUR_DIRECTION);
13256             }
13257              
13258             extern __inline __m512d
13259             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13260             _mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
13261             {
13262             return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
13263             (__v8df) __B,
13264             (__v8df)
13265             _mm512_setzero_pd (),
13266             (__mmask8) __U,
13267             _MM_FROUND_CUR_DIRECTION);
13268             }
13269              
13270             extern __inline __m512
13271             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13272             _mm512_scalef_ps (__m512 __A, __m512 __B)
13273             {
13274             return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
13275             (__v16sf) __B,
13276             (__v16sf)
13277             _mm512_undefined_ps (),
13278             (__mmask16) -1,
13279             _MM_FROUND_CUR_DIRECTION);
13280             }
13281              
13282             extern __inline __m512
13283             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13284             _mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
13285             {
13286             return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
13287             (__v16sf) __B,
13288             (__v16sf) __W,
13289             (__mmask16) __U,
13290             _MM_FROUND_CUR_DIRECTION);
13291             }
13292              
13293             extern __inline __m512
13294             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13295             _mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
13296             {
13297             return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
13298             (__v16sf) __B,
13299             (__v16sf)
13300             _mm512_setzero_ps (),
13301             (__mmask16) __U,
13302             _MM_FROUND_CUR_DIRECTION);
13303             }
13304              
13305             extern __inline __m128d
13306             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13307             _mm_scalef_sd (__m128d __A, __m128d __B)
13308             {
13309             return (__m128d) __builtin_ia32_scalefsd_mask_round ((__v2df) __A,
13310             (__v2df) __B,
13311             (__v2df)
13312             _mm_setzero_pd (),
13313             (__mmask8) -1,
13314             _MM_FROUND_CUR_DIRECTION);
13315             }
13316              
13317             extern __inline __m128
13318             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13319             _mm_scalef_ss (__m128 __A, __m128 __B)
13320             {
13321             return (__m128) __builtin_ia32_scalefss_mask_round ((__v4sf) __A,
13322             (__v4sf) __B,
13323             (__v4sf)
13324             _mm_setzero_ps (),
13325             (__mmask8) -1,
13326             _MM_FROUND_CUR_DIRECTION);
13327             }
13328              
13329             extern __inline __m512d
13330             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13331             _mm512_fmadd_pd (__m512d __A, __m512d __B, __m512d __C)
13332             {
13333             return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
13334             (__v8df) __B,
13335             (__v8df) __C,
13336             (__mmask8) -1,
13337             _MM_FROUND_CUR_DIRECTION);
13338             }
13339              
13340             extern __inline __m512d
13341             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13342             _mm512_mask_fmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
13343             {
13344             return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
13345             (__v8df) __B,
13346             (__v8df) __C,
13347             (__mmask8) __U,
13348             _MM_FROUND_CUR_DIRECTION);
13349             }
13350              
13351             extern __inline __m512d
13352             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13353             _mm512_mask3_fmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
13354             {
13355             return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
13356             (__v8df) __B,
13357             (__v8df) __C,
13358             (__mmask8) __U,
13359             _MM_FROUND_CUR_DIRECTION);
13360             }
13361              
13362             extern __inline __m512d
13363             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13364             _mm512_maskz_fmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
13365             {
13366             return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
13367             (__v8df) __B,
13368             (__v8df) __C,
13369             (__mmask8) __U,
13370             _MM_FROUND_CUR_DIRECTION);
13371             }
13372              
13373             extern __inline __m512
13374             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13375             _mm512_fmadd_ps (__m512 __A, __m512 __B, __m512 __C)
13376             {
13377             return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
13378             (__v16sf) __B,
13379             (__v16sf) __C,
13380             (__mmask16) -1,
13381             _MM_FROUND_CUR_DIRECTION);
13382             }
13383              
13384             extern __inline __m512
13385             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13386             _mm512_mask_fmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
13387             {
13388             return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
13389             (__v16sf) __B,
13390             (__v16sf) __C,
13391             (__mmask16) __U,
13392             _MM_FROUND_CUR_DIRECTION);
13393             }
13394              
13395             extern __inline __m512
13396             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13397             _mm512_mask3_fmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
13398             {
13399             return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
13400             (__v16sf) __B,
13401             (__v16sf) __C,
13402             (__mmask16) __U,
13403             _MM_FROUND_CUR_DIRECTION);
13404             }
13405              
13406             extern __inline __m512
13407             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13408             _mm512_maskz_fmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
13409             {
13410             return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
13411             (__v16sf) __B,
13412             (__v16sf) __C,
13413             (__mmask16) __U,
13414             _MM_FROUND_CUR_DIRECTION);
13415             }
13416              
13417             extern __inline __m512d
13418             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13419             _mm512_fmsub_pd (__m512d __A, __m512d __B, __m512d __C)
13420             {
13421             return (__m512d) __builtin_ia32_vfmsubpd512_mask ((__v8df) __A,
13422             (__v8df) __B,
13423             (__v8df) __C,
13424             (__mmask8) -1,
13425             _MM_FROUND_CUR_DIRECTION);
13426             }
13427              
13428             extern __inline __m512d
13429             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13430             _mm512_mask_fmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
13431             {
13432             return (__m512d) __builtin_ia32_vfmsubpd512_mask ((__v8df) __A,
13433             (__v8df) __B,
13434             (__v8df) __C,
13435             (__mmask8) __U,
13436             _MM_FROUND_CUR_DIRECTION);
13437             }
13438              
13439             extern __inline __m512d
13440             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13441             _mm512_mask3_fmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
13442             {
13443             return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
13444             (__v8df) __B,
13445             (__v8df) __C,
13446             (__mmask8) __U,
13447             _MM_FROUND_CUR_DIRECTION);
13448             }
13449              
13450             extern __inline __m512d
13451             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13452             _mm512_maskz_fmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
13453             {
13454             return (__m512d) __builtin_ia32_vfmsubpd512_maskz ((__v8df) __A,
13455             (__v8df) __B,
13456             (__v8df) __C,
13457             (__mmask8) __U,
13458             _MM_FROUND_CUR_DIRECTION);
13459             }
13460              
13461             extern __inline __m512
13462             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13463             _mm512_fmsub_ps (__m512 __A, __m512 __B, __m512 __C)
13464             {
13465             return (__m512) __builtin_ia32_vfmsubps512_mask ((__v16sf) __A,
13466             (__v16sf) __B,
13467             (__v16sf) __C,
13468             (__mmask16) -1,
13469             _MM_FROUND_CUR_DIRECTION);
13470             }
13471              
13472             extern __inline __m512
13473             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13474             _mm512_mask_fmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
13475             {
13476             return (__m512) __builtin_ia32_vfmsubps512_mask ((__v16sf) __A,
13477             (__v16sf) __B,
13478             (__v16sf) __C,
13479             (__mmask16) __U,
13480             _MM_FROUND_CUR_DIRECTION);
13481             }
13482              
13483             extern __inline __m512
13484             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13485             _mm512_mask3_fmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
13486             {
13487             return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
13488             (__v16sf) __B,
13489             (__v16sf) __C,
13490             (__mmask16) __U,
13491             _MM_FROUND_CUR_DIRECTION);
13492             }
13493              
13494             extern __inline __m512
13495             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13496             _mm512_maskz_fmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
13497             {
13498             return (__m512) __builtin_ia32_vfmsubps512_maskz ((__v16sf) __A,
13499             (__v16sf) __B,
13500             (__v16sf) __C,
13501             (__mmask16) __U,
13502             _MM_FROUND_CUR_DIRECTION);
13503             }
13504              
13505             extern __inline __m512d
13506             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13507             _mm512_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C)
13508             {
13509             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
13510             (__v8df) __B,
13511             (__v8df) __C,
13512             (__mmask8) -1,
13513             _MM_FROUND_CUR_DIRECTION);
13514             }
13515              
13516             extern __inline __m512d
13517             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13518             _mm512_mask_fmaddsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
13519             {
13520             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
13521             (__v8df) __B,
13522             (__v8df) __C,
13523             (__mmask8) __U,
13524             _MM_FROUND_CUR_DIRECTION);
13525             }
13526              
13527             extern __inline __m512d
13528             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13529             _mm512_mask3_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
13530             {
13531             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
13532             (__v8df) __B,
13533             (__v8df) __C,
13534             (__mmask8) __U,
13535             _MM_FROUND_CUR_DIRECTION);
13536             }
13537              
13538             extern __inline __m512d
13539             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13540             _mm512_maskz_fmaddsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
13541             {
13542             return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
13543             (__v8df) __B,
13544             (__v8df) __C,
13545             (__mmask8) __U,
13546             _MM_FROUND_CUR_DIRECTION);
13547             }
13548              
13549             extern __inline __m512
13550             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13551             _mm512_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C)
13552             {
13553             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
13554             (__v16sf) __B,
13555             (__v16sf) __C,
13556             (__mmask16) -1,
13557             _MM_FROUND_CUR_DIRECTION);
13558             }
13559              
13560             extern __inline __m512
13561             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13562             _mm512_mask_fmaddsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
13563             {
13564             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
13565             (__v16sf) __B,
13566             (__v16sf) __C,
13567             (__mmask16) __U,
13568             _MM_FROUND_CUR_DIRECTION);
13569             }
13570              
13571             extern __inline __m512
13572             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13573             _mm512_mask3_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
13574             {
13575             return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
13576             (__v16sf) __B,
13577             (__v16sf) __C,
13578             (__mmask16) __U,
13579             _MM_FROUND_CUR_DIRECTION);
13580             }
13581              
13582             extern __inline __m512
13583             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13584             _mm512_maskz_fmaddsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
13585             {
13586             return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
13587             (__v16sf) __B,
13588             (__v16sf) __C,
13589             (__mmask16) __U,
13590             _MM_FROUND_CUR_DIRECTION);
13591             }
13592              
13593             extern __inline __m512d
13594             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13595             _mm512_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C)
13596             {
13597             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
13598             (__v8df) __B,
13599             -(__v8df) __C,
13600             (__mmask8) -1,
13601             _MM_FROUND_CUR_DIRECTION);
13602             }
13603              
13604             extern __inline __m512d
13605             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13606             _mm512_mask_fmsubadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
13607             {
13608             return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
13609             (__v8df) __B,
13610             -(__v8df) __C,
13611             (__mmask8) __U,
13612             _MM_FROUND_CUR_DIRECTION);
13613             }
13614              
13615             extern __inline __m512d
13616             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13617             _mm512_mask3_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
13618             {
13619             return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
13620             (__v8df) __B,
13621             (__v8df) __C,
13622             (__mmask8) __U,
13623             _MM_FROUND_CUR_DIRECTION);
13624             }
13625              
13626             extern __inline __m512d
13627             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13628             _mm512_maskz_fmsubadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
13629             {
13630             return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
13631             (__v8df) __B,
13632             -(__v8df) __C,
13633             (__mmask8) __U,
13634             _MM_FROUND_CUR_DIRECTION);
13635             }
13636              
13637             extern __inline __m512
13638             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13639             _mm512_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C)
13640             {
13641             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
13642             (__v16sf) __B,
13643             -(__v16sf) __C,
13644             (__mmask16) -1,
13645             _MM_FROUND_CUR_DIRECTION);
13646             }
13647              
13648             extern __inline __m512
13649             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13650             _mm512_mask_fmsubadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
13651             {
13652             return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
13653             (__v16sf) __B,
13654             -(__v16sf) __C,
13655             (__mmask16) __U,
13656             _MM_FROUND_CUR_DIRECTION);
13657             }
13658              
13659             extern __inline __m512
13660             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13661             _mm512_mask3_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
13662             {
13663             return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
13664             (__v16sf) __B,
13665             (__v16sf) __C,
13666             (__mmask16) __U,
13667             _MM_FROUND_CUR_DIRECTION);
13668             }
13669              
13670             extern __inline __m512
13671             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13672             _mm512_maskz_fmsubadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
13673             {
13674             return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
13675             (__v16sf) __B,
13676             -(__v16sf) __C,
13677             (__mmask16) __U,
13678             _MM_FROUND_CUR_DIRECTION);
13679             }
13680              
13681             extern __inline __m512d
13682             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13683             _mm512_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C)
13684             {
13685             return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
13686             (__v8df) __B,
13687             (__v8df) __C,
13688             (__mmask8) -1,
13689             _MM_FROUND_CUR_DIRECTION);
13690             }
13691              
13692             extern __inline __m512d
13693             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13694             _mm512_mask_fnmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
13695             {
13696             return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
13697             (__v8df) __B,
13698             (__v8df) __C,
13699             (__mmask8) __U,
13700             _MM_FROUND_CUR_DIRECTION);
13701             }
13702              
13703             extern __inline __m512d
13704             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13705             _mm512_mask3_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
13706             {
13707             return (__m512d) __builtin_ia32_vfnmaddpd512_mask3 ((__v8df) __A,
13708             (__v8df) __B,
13709             (__v8df) __C,
13710             (__mmask8) __U,
13711             _MM_FROUND_CUR_DIRECTION);
13712             }
13713              
13714             extern __inline __m512d
13715             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13716             _mm512_maskz_fnmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
13717             {
13718             return (__m512d) __builtin_ia32_vfnmaddpd512_maskz ((__v8df) __A,
13719             (__v8df) __B,
13720             (__v8df) __C,
13721             (__mmask8) __U,
13722             _MM_FROUND_CUR_DIRECTION);
13723             }
13724              
13725             extern __inline __m512
13726             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13727             _mm512_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C)
13728             {
13729             return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
13730             (__v16sf) __B,
13731             (__v16sf) __C,
13732             (__mmask16) -1,
13733             _MM_FROUND_CUR_DIRECTION);
13734             }
13735              
13736             extern __inline __m512
13737             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13738             _mm512_mask_fnmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
13739             {
13740             return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
13741             (__v16sf) __B,
13742             (__v16sf) __C,
13743             (__mmask16) __U,
13744             _MM_FROUND_CUR_DIRECTION);
13745             }
13746              
13747             extern __inline __m512
13748             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13749             _mm512_mask3_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
13750             {
13751             return (__m512) __builtin_ia32_vfnmaddps512_mask3 ((__v16sf) __A,
13752             (__v16sf) __B,
13753             (__v16sf) __C,
13754             (__mmask16) __U,
13755             _MM_FROUND_CUR_DIRECTION);
13756             }
13757              
13758             extern __inline __m512
13759             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13760             _mm512_maskz_fnmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
13761             {
13762             return (__m512) __builtin_ia32_vfnmaddps512_maskz ((__v16sf) __A,
13763             (__v16sf) __B,
13764             (__v16sf) __C,
13765             (__mmask16) __U,
13766             _MM_FROUND_CUR_DIRECTION);
13767             }
13768              
13769             extern __inline __m512d
13770             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13771             _mm512_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C)
13772             {
13773             return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
13774             (__v8df) __B,
13775             (__v8df) __C,
13776             (__mmask8) -1,
13777             _MM_FROUND_CUR_DIRECTION);
13778             }
13779              
13780             extern __inline __m512d
13781             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13782             _mm512_mask_fnmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
13783             {
13784             return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
13785             (__v8df) __B,
13786             (__v8df) __C,
13787             (__mmask8) __U,
13788             _MM_FROUND_CUR_DIRECTION);
13789             }
13790              
13791             extern __inline __m512d
13792             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13793             _mm512_mask3_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
13794             {
13795             return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
13796             (__v8df) __B,
13797             (__v8df) __C,
13798             (__mmask8) __U,
13799             _MM_FROUND_CUR_DIRECTION);
13800             }
13801              
13802             extern __inline __m512d
13803             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13804             _mm512_maskz_fnmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
13805             {
13806             return (__m512d) __builtin_ia32_vfnmsubpd512_maskz ((__v8df) __A,
13807             (__v8df) __B,
13808             (__v8df) __C,
13809             (__mmask8) __U,
13810             _MM_FROUND_CUR_DIRECTION);
13811             }
13812              
13813             extern __inline __m512
13814             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13815             _mm512_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C)
13816             {
13817             return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
13818             (__v16sf) __B,
13819             (__v16sf) __C,
13820             (__mmask16) -1,
13821             _MM_FROUND_CUR_DIRECTION);
13822             }
13823              
13824             extern __inline __m512
13825             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13826             _mm512_mask_fnmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
13827             {
13828             return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
13829             (__v16sf) __B,
13830             (__v16sf) __C,
13831             (__mmask16) __U,
13832             _MM_FROUND_CUR_DIRECTION);
13833             }
13834              
13835             extern __inline __m512
13836             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13837             _mm512_mask3_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
13838             {
13839             return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
13840             (__v16sf) __B,
13841             (__v16sf) __C,
13842             (__mmask16) __U,
13843             _MM_FROUND_CUR_DIRECTION);
13844             }
13845              
13846             extern __inline __m512
13847             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13848             _mm512_maskz_fnmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
13849             {
13850             return (__m512) __builtin_ia32_vfnmsubps512_maskz ((__v16sf) __A,
13851             (__v16sf) __B,
13852             (__v16sf) __C,
13853             (__mmask16) __U,
13854             _MM_FROUND_CUR_DIRECTION);
13855             }
13856              
13857             extern __inline __m256i
13858             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13859             _mm512_cvttpd_epi32 (__m512d __A)
13860             {
13861             return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
13862             (__v8si)
13863             _mm256_undefined_si256 (),
13864             (__mmask8) -1,
13865             _MM_FROUND_CUR_DIRECTION);
13866             }
13867              
13868             extern __inline __m256i
13869             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13870             _mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
13871             {
13872             return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
13873             (__v8si) __W,
13874             (__mmask8) __U,
13875             _MM_FROUND_CUR_DIRECTION);
13876             }
13877              
13878             extern __inline __m256i
13879             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13880             _mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
13881             {
13882             return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
13883             (__v8si)
13884             _mm256_setzero_si256 (),
13885             (__mmask8) __U,
13886             _MM_FROUND_CUR_DIRECTION);
13887             }
13888              
13889             extern __inline __m256i
13890             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13891             _mm512_cvttpd_epu32 (__m512d __A)
13892             {
13893             return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
13894             (__v8si)
13895             _mm256_undefined_si256 (),
13896             (__mmask8) -1,
13897             _MM_FROUND_CUR_DIRECTION);
13898             }
13899              
13900             extern __inline __m256i
13901             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13902             _mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
13903             {
13904             return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
13905             (__v8si) __W,
13906             (__mmask8) __U,
13907             _MM_FROUND_CUR_DIRECTION);
13908             }
13909              
13910             extern __inline __m256i
13911             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13912             _mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
13913             {
13914             return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
13915             (__v8si)
13916             _mm256_setzero_si256 (),
13917             (__mmask8) __U,
13918             _MM_FROUND_CUR_DIRECTION);
13919             }
13920              
13921             extern __inline __m256i
13922             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13923             _mm512_cvtpd_epi32 (__m512d __A)
13924             {
13925             return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
13926             (__v8si)
13927             _mm256_undefined_si256 (),
13928             (__mmask8) -1,
13929             _MM_FROUND_CUR_DIRECTION);
13930             }
13931              
13932             extern __inline __m256i
13933             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13934             _mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
13935             {
13936             return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
13937             (__v8si) __W,
13938             (__mmask8) __U,
13939             _MM_FROUND_CUR_DIRECTION);
13940             }
13941              
13942             extern __inline __m256i
13943             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13944             _mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
13945             {
13946             return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
13947             (__v8si)
13948             _mm256_setzero_si256 (),
13949             (__mmask8) __U,
13950             _MM_FROUND_CUR_DIRECTION);
13951             }
13952              
13953             extern __inline __m256i
13954             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13955             _mm512_cvtpd_epu32 (__m512d __A)
13956             {
13957             return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
13958             (__v8si)
13959             _mm256_undefined_si256 (),
13960             (__mmask8) -1,
13961             _MM_FROUND_CUR_DIRECTION);
13962             }
13963              
13964             extern __inline __m256i
13965             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13966             _mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
13967             {
13968             return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
13969             (__v8si) __W,
13970             (__mmask8) __U,
13971             _MM_FROUND_CUR_DIRECTION);
13972             }
13973              
13974             extern __inline __m256i
13975             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13976             _mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
13977             {
13978             return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
13979             (__v8si)
13980             _mm256_setzero_si256 (),
13981             (__mmask8) __U,
13982             _MM_FROUND_CUR_DIRECTION);
13983             }
13984              
13985             extern __inline __m512i
13986             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13987             _mm512_cvttps_epi32 (__m512 __A)
13988             {
13989             return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
13990             (__v16si)
13991             _mm512_undefined_epi32 (),
13992             (__mmask16) -1,
13993             _MM_FROUND_CUR_DIRECTION);
13994             }
13995              
13996             extern __inline __m512i
13997             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13998             _mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
13999             {
14000             return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
14001             (__v16si) __W,
14002             (__mmask16) __U,
14003             _MM_FROUND_CUR_DIRECTION);
14004             }
14005              
14006             extern __inline __m512i
14007             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14008             _mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
14009             {
14010             return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
14011             (__v16si)
14012             _mm512_setzero_si512 (),
14013             (__mmask16) __U,
14014             _MM_FROUND_CUR_DIRECTION);
14015             }
14016              
14017             extern __inline __m512i
14018             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14019             _mm512_cvttps_epu32 (__m512 __A)
14020             {
14021             return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
14022             (__v16si)
14023             _mm512_undefined_epi32 (),
14024             (__mmask16) -1,
14025             _MM_FROUND_CUR_DIRECTION);
14026             }
14027              
14028             extern __inline __m512i
14029             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14030             _mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
14031             {
14032             return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
14033             (__v16si) __W,
14034             (__mmask16) __U,
14035             _MM_FROUND_CUR_DIRECTION);
14036             }
14037              
14038             extern __inline __m512i
14039             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14040             _mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
14041             {
14042             return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
14043             (__v16si)
14044             _mm512_setzero_si512 (),
14045             (__mmask16) __U,
14046             _MM_FROUND_CUR_DIRECTION);
14047             }
14048              
14049             extern __inline __m512i
14050             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14051             _mm512_cvtps_epi32 (__m512 __A)
14052             {
14053             return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
14054             (__v16si)
14055             _mm512_undefined_epi32 (),
14056             (__mmask16) -1,
14057             _MM_FROUND_CUR_DIRECTION);
14058             }
14059              
14060             extern __inline __m512i
14061             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14062             _mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
14063             {
14064             return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
14065             (__v16si) __W,
14066             (__mmask16) __U,
14067             _MM_FROUND_CUR_DIRECTION);
14068             }
14069              
14070             extern __inline __m512i
14071             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14072             _mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
14073             {
14074             return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
14075             (__v16si)
14076             _mm512_setzero_si512 (),
14077             (__mmask16) __U,
14078             _MM_FROUND_CUR_DIRECTION);
14079             }
14080              
14081             extern __inline __m512i
14082             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14083             _mm512_cvtps_epu32 (__m512 __A)
14084             {
14085             return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
14086             (__v16si)
14087             _mm512_undefined_epi32 (),
14088             (__mmask16) -1,
14089             _MM_FROUND_CUR_DIRECTION);
14090             }
14091              
14092             extern __inline __m512i
14093             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14094             _mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
14095             {
14096             return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
14097             (__v16si) __W,
14098             (__mmask16) __U,
14099             _MM_FROUND_CUR_DIRECTION);
14100             }
14101              
14102             extern __inline __m512i
14103             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14104             _mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
14105             {
14106             return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
14107             (__v16si)
14108             _mm512_setzero_si512 (),
14109             (__mmask16) __U,
14110             _MM_FROUND_CUR_DIRECTION);
14111             }
14112              
14113             extern __inline double
14114             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14115             _mm512_cvtsd_f64 (__m512d __A)
14116             {
14117             return __A[0];
14118             }
14119              
14120             extern __inline float
14121             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14122             _mm512_cvtss_f32 (__m512 __A)
14123             {
14124             return __A[0];
14125             }
14126              
14127             #ifdef __x86_64__
14128             extern __inline __m128
14129             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14130             _mm_cvtu64_ss (__m128 __A, unsigned long long __B)
14131             {
14132             return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
14133             _MM_FROUND_CUR_DIRECTION);
14134             }
14135              
14136             extern __inline __m128d
14137             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14138             _mm_cvtu64_sd (__m128d __A, unsigned long long __B)
14139             {
14140             return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
14141             _MM_FROUND_CUR_DIRECTION);
14142             }
14143             #endif
14144              
14145             extern __inline __m128
14146             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14147             _mm_cvtu32_ss (__m128 __A, unsigned __B)
14148             {
14149             return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
14150             _MM_FROUND_CUR_DIRECTION);
14151             }
14152              
14153             extern __inline __m512
14154             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14155             _mm512_cvtepi32_ps (__m512i __A)
14156             {
14157             return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
14158             (__v16sf)
14159             _mm512_undefined_ps (),
14160             (__mmask16) -1,
14161             _MM_FROUND_CUR_DIRECTION);
14162             }
14163              
14164             extern __inline __m512
14165             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14166             _mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
14167             {
14168             return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
14169             (__v16sf) __W,
14170             (__mmask16) __U,
14171             _MM_FROUND_CUR_DIRECTION);
14172             }
14173              
14174             extern __inline __m512
14175             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14176             _mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
14177             {
14178             return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
14179             (__v16sf)
14180             _mm512_setzero_ps (),
14181             (__mmask16) __U,
14182             _MM_FROUND_CUR_DIRECTION);
14183             }
14184              
14185             extern __inline __m512
14186             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14187             _mm512_cvtepu32_ps (__m512i __A)
14188             {
14189             return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
14190             (__v16sf)
14191             _mm512_undefined_ps (),
14192             (__mmask16) -1,
14193             _MM_FROUND_CUR_DIRECTION);
14194             }
14195              
14196             extern __inline __m512
14197             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14198             _mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
14199             {
14200             return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
14201             (__v16sf) __W,
14202             (__mmask16) __U,
14203             _MM_FROUND_CUR_DIRECTION);
14204             }
14205              
14206             extern __inline __m512
14207             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14208             _mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
14209             {
14210             return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
14211             (__v16sf)
14212             _mm512_setzero_ps (),
14213             (__mmask16) __U,
14214             _MM_FROUND_CUR_DIRECTION);
14215             }
14216              
14217             #ifdef __OPTIMIZE__
14218             extern __inline __m512d
14219             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14220             _mm512_fixupimm_pd (__m512d __A, __m512d __B, __m512i __C, const int __imm)
14221             {
14222             return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
14223             (__v8df) __B,
14224             (__v8di) __C,
14225             __imm,
14226             (__mmask8) -1,
14227             _MM_FROUND_CUR_DIRECTION);
14228             }
14229              
14230             extern __inline __m512d
14231             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14232             _mm512_mask_fixupimm_pd (__m512d __A, __mmask8 __U, __m512d __B,
14233             __m512i __C, const int __imm)
14234             {
14235             return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
14236             (__v8df) __B,
14237             (__v8di) __C,
14238             __imm,
14239             (__mmask8) __U,
14240             _MM_FROUND_CUR_DIRECTION);
14241             }
14242              
14243             extern __inline __m512d
14244             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14245             _mm512_maskz_fixupimm_pd (__mmask8 __U, __m512d __A, __m512d __B,
14246             __m512i __C, const int __imm)
14247             {
14248             return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A,
14249             (__v8df) __B,
14250             (__v8di) __C,
14251             __imm,
14252             (__mmask8) __U,
14253             _MM_FROUND_CUR_DIRECTION);
14254             }
14255              
14256             extern __inline __m512
14257             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14258             _mm512_fixupimm_ps (__m512 __A, __m512 __B, __m512i __C, const int __imm)
14259             {
14260             return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
14261             (__v16sf) __B,
14262             (__v16si) __C,
14263             __imm,
14264             (__mmask16) -1,
14265             _MM_FROUND_CUR_DIRECTION);
14266             }
14267              
14268             extern __inline __m512
14269             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14270             _mm512_mask_fixupimm_ps (__m512 __A, __mmask16 __U, __m512 __B,
14271             __m512i __C, const int __imm)
14272             {
14273             return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
14274             (__v16sf) __B,
14275             (__v16si) __C,
14276             __imm,
14277             (__mmask16) __U,
14278             _MM_FROUND_CUR_DIRECTION);
14279             }
14280              
14281             extern __inline __m512
14282             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14283             _mm512_maskz_fixupimm_ps (__mmask16 __U, __m512 __A, __m512 __B,
14284             __m512i __C, const int __imm)
14285             {
14286             return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A,
14287             (__v16sf) __B,
14288             (__v16si) __C,
14289             __imm,
14290             (__mmask16) __U,
14291             _MM_FROUND_CUR_DIRECTION);
14292             }
14293              
14294             extern __inline __m128d
14295             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14296             _mm_fixupimm_sd (__m128d __A, __m128d __B, __m128i __C, const int __imm)
14297             {
14298             return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
14299             (__v2df) __B,
14300             (__v2di) __C, __imm,
14301             (__mmask8) -1,
14302             _MM_FROUND_CUR_DIRECTION);
14303             }
14304              
14305             extern __inline __m128d
14306             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14307             _mm_mask_fixupimm_sd (__m128d __A, __mmask8 __U, __m128d __B,
14308             __m128i __C, const int __imm)
14309             {
14310             return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
14311             (__v2df) __B,
14312             (__v2di) __C, __imm,
14313             (__mmask8) __U,
14314             _MM_FROUND_CUR_DIRECTION);
14315             }
14316              
14317             extern __inline __m128d
14318             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14319             _mm_maskz_fixupimm_sd (__mmask8 __U, __m128d __A, __m128d __B,
14320             __m128i __C, const int __imm)
14321             {
14322             return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A,
14323             (__v2df) __B,
14324             (__v2di) __C,
14325             __imm,
14326             (__mmask8) __U,
14327             _MM_FROUND_CUR_DIRECTION);
14328             }
14329              
14330             extern __inline __m128
14331             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14332             _mm_fixupimm_ss (__m128 __A, __m128 __B, __m128i __C, const int __imm)
14333             {
14334             return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
14335             (__v4sf) __B,
14336             (__v4si) __C, __imm,
14337             (__mmask8) -1,
14338             _MM_FROUND_CUR_DIRECTION);
14339             }
14340              
14341             extern __inline __m128
14342             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14343             _mm_mask_fixupimm_ss (__m128 __A, __mmask8 __U, __m128 __B,
14344             __m128i __C, const int __imm)
14345             {
14346             return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
14347             (__v4sf) __B,
14348             (__v4si) __C, __imm,
14349             (__mmask8) __U,
14350             _MM_FROUND_CUR_DIRECTION);
14351             }
14352              
14353             extern __inline __m128
14354             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14355             _mm_maskz_fixupimm_ss (__mmask8 __U, __m128 __A, __m128 __B,
14356             __m128i __C, const int __imm)
14357             {
14358             return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A,
14359             (__v4sf) __B,
14360             (__v4si) __C, __imm,
14361             (__mmask8) __U,
14362             _MM_FROUND_CUR_DIRECTION);
14363             }
14364             #else
14365             #define _mm512_fixupimm_pd(X, Y, Z, C) \
14366             ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
14367             (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
14368             (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
14369              
14370             #define _mm512_mask_fixupimm_pd(X, U, Y, Z, C) \
14371             ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
14372             (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
14373             (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
14374              
14375             #define _mm512_maskz_fixupimm_pd(U, X, Y, Z, C) \
14376             ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X), \
14377             (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
14378             (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
14379              
14380             #define _mm512_fixupimm_ps(X, Y, Z, C) \
14381             ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
14382             (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
14383             (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION))
14384              
14385             #define _mm512_mask_fixupimm_ps(X, U, Y, Z, C) \
14386             ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
14387             (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
14388             (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
14389              
14390             #define _mm512_maskz_fixupimm_ps(U, X, Y, Z, C) \
14391             ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X), \
14392             (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
14393             (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
14394              
14395             #define _mm_fixupimm_sd(X, Y, Z, C) \
14396             ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
14397             (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
14398             (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
14399              
14400             #define _mm_mask_fixupimm_sd(X, U, Y, Z, C) \
14401             ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
14402             (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
14403             (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
14404              
14405             #define _mm_maskz_fixupimm_sd(U, X, Y, Z, C) \
14406             ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X), \
14407             (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
14408             (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
14409              
14410             #define _mm_fixupimm_ss(X, Y, Z, C) \
14411             ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
14412             (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
14413             (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
14414              
14415             #define _mm_mask_fixupimm_ss(X, U, Y, Z, C) \
14416             ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
14417             (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
14418             (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
14419              
14420             #define _mm_maskz_fixupimm_ss(U, X, Y, Z, C) \
14421             ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X), \
14422             (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
14423             (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
14424             #endif
14425              
14426             #ifdef __x86_64__
14427             extern __inline unsigned long long
14428             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14429             _mm_cvtss_u64 (__m128 __A)
14430             {
14431             return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
14432             __A,
14433             _MM_FROUND_CUR_DIRECTION);
14434             }
14435              
14436             extern __inline unsigned long long
14437             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14438             _mm_cvttss_u64 (__m128 __A)
14439             {
14440             return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
14441             __A,
14442             _MM_FROUND_CUR_DIRECTION);
14443             }
14444              
14445             extern __inline long long
14446             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14447             _mm_cvttss_i64 (__m128 __A)
14448             {
14449             return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
14450             _MM_FROUND_CUR_DIRECTION);
14451             }
14452             #endif /* __x86_64__ */
14453              
14454             extern __inline int
14455             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14456             _mm512_cvtsi512_si32 (__m512i __A)
14457             {
14458             __v16si __B = (__v16si) __A;
14459             return __B[0];
14460             }
14461              
14462             extern __inline unsigned
14463             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14464             _mm_cvtss_u32 (__m128 __A)
14465             {
14466             return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
14467             _MM_FROUND_CUR_DIRECTION);
14468             }
14469              
14470             extern __inline unsigned
14471             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14472             _mm_cvttss_u32 (__m128 __A)
14473             {
14474             return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
14475             _MM_FROUND_CUR_DIRECTION);
14476             }
14477              
14478             extern __inline int
14479             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14480             _mm_cvttss_i32 (__m128 __A)
14481             {
14482             return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
14483             _MM_FROUND_CUR_DIRECTION);
14484             }
14485              
14486             extern __inline int
14487             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14488             _mm_cvtsd_i32 (__m128d __A)
14489             {
14490             return (int) __builtin_ia32_cvtsd2si ((__v2df) __A);
14491             }
14492              
14493             extern __inline int
14494             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14495             _mm_cvtss_i32 (__m128 __A)
14496             {
14497             return (int) __builtin_ia32_cvtss2si ((__v4sf) __A);
14498             }
14499              
14500             extern __inline __m128d
14501             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14502             _mm_cvti32_sd (__m128d __A, int __B)
14503             {
14504             return (__m128d) __builtin_ia32_cvtsi2sd ((__v2df) __A, __B);
14505             }
14506              
14507             extern __inline __m128
14508             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14509             _mm_cvti32_ss (__m128 __A, int __B)
14510             {
14511             return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
14512             }
14513              
14514             #ifdef __x86_64__
14515             extern __inline unsigned long long
14516             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14517             _mm_cvtsd_u64 (__m128d __A)
14518             {
14519             return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
14520             __A,
14521             _MM_FROUND_CUR_DIRECTION);
14522             }
14523              
14524             extern __inline unsigned long long
14525             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14526             _mm_cvttsd_u64 (__m128d __A)
14527             {
14528             return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
14529             __A,
14530             _MM_FROUND_CUR_DIRECTION);
14531             }
14532              
14533             extern __inline long long
14534             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14535             _mm_cvttsd_i64 (__m128d __A)
14536             {
14537             return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
14538             _MM_FROUND_CUR_DIRECTION);
14539             }
14540              
14541             extern __inline long long
14542             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14543             _mm_cvtsd_i64 (__m128d __A)
14544             {
14545             return (long long) __builtin_ia32_cvtsd2si64 ((__v2df) __A);
14546             }
14547              
14548             extern __inline long long
14549             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14550             _mm_cvtss_i64 (__m128 __A)
14551             {
14552             return (long long) __builtin_ia32_cvtss2si64 ((__v4sf) __A);
14553             }
14554              
14555             extern __inline __m128d
14556             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14557             _mm_cvti64_sd (__m128d __A, long long __B)
14558             {
14559             return (__m128d) __builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
14560             }
14561              
14562             extern __inline __m128
14563             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14564             _mm_cvti64_ss (__m128 __A, long long __B)
14565             {
14566             return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
14567             }
14568             #endif /* __x86_64__ */
14569              
14570             extern __inline unsigned
14571             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14572             _mm_cvtsd_u32 (__m128d __A)
14573             {
14574             return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
14575             _MM_FROUND_CUR_DIRECTION);
14576             }
14577              
14578             extern __inline unsigned
14579             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14580             _mm_cvttsd_u32 (__m128d __A)
14581             {
14582             return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
14583             _MM_FROUND_CUR_DIRECTION);
14584             }
14585              
14586             extern __inline int
14587             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14588             _mm_cvttsd_i32 (__m128d __A)
14589             {
14590             return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
14591             _MM_FROUND_CUR_DIRECTION);
14592             }
14593              
14594             extern __inline __m512d
14595             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14596             _mm512_cvtps_pd (__m256 __A)
14597             {
14598             return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
14599             (__v8df)
14600             _mm512_undefined_pd (),
14601             (__mmask8) -1,
14602             _MM_FROUND_CUR_DIRECTION);
14603             }
14604              
14605             extern __inline __m512d
14606             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14607             _mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
14608             {
14609             return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
14610             (__v8df) __W,
14611             (__mmask8) __U,
14612             _MM_FROUND_CUR_DIRECTION);
14613             }
14614              
14615             extern __inline __m512d
14616             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14617             _mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
14618             {
14619             return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
14620             (__v8df)
14621             _mm512_setzero_pd (),
14622             (__mmask8) __U,
14623             _MM_FROUND_CUR_DIRECTION);
14624             }
14625              
14626             extern __inline __m512
14627             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14628             _mm512_cvtph_ps (__m256i __A)
14629             {
14630             return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
14631             (__v16sf)
14632             _mm512_undefined_ps (),
14633             (__mmask16) -1,
14634             _MM_FROUND_CUR_DIRECTION);
14635             }
14636              
14637             extern __inline __m512
14638             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14639             _mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
14640             {
14641             return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
14642             (__v16sf) __W,
14643             (__mmask16) __U,
14644             _MM_FROUND_CUR_DIRECTION);
14645             }
14646              
14647             extern __inline __m512
14648             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14649             _mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
14650             {
14651             return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
14652             (__v16sf)
14653             _mm512_setzero_ps (),
14654             (__mmask16) __U,
14655             _MM_FROUND_CUR_DIRECTION);
14656             }
14657              
14658             extern __inline __m256
14659             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14660             _mm512_cvtpd_ps (__m512d __A)
14661             {
14662             return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
14663             (__v8sf)
14664             _mm256_undefined_ps (),
14665             (__mmask8) -1,
14666             _MM_FROUND_CUR_DIRECTION);
14667             }
14668              
14669             extern __inline __m256
14670             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14671             _mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
14672             {
14673             return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
14674             (__v8sf) __W,
14675             (__mmask8) __U,
14676             _MM_FROUND_CUR_DIRECTION);
14677             }
14678              
14679             extern __inline __m256
14680             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14681             _mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
14682             {
14683             return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
14684             (__v8sf)
14685             _mm256_setzero_ps (),
14686             (__mmask8) __U,
14687             _MM_FROUND_CUR_DIRECTION);
14688             }
14689              
14690             #ifdef __OPTIMIZE__
14691             extern __inline __m512
14692             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14693             _mm512_getexp_ps (__m512 __A)
14694             {
14695             return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
14696             (__v16sf)
14697             _mm512_undefined_ps (),
14698             (__mmask16) -1,
14699             _MM_FROUND_CUR_DIRECTION);
14700             }
14701              
14702             extern __inline __m512
14703             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14704             _mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
14705             {
14706             return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
14707             (__v16sf) __W,
14708             (__mmask16) __U,
14709             _MM_FROUND_CUR_DIRECTION);
14710             }
14711              
14712             extern __inline __m512
14713             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14714             _mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
14715             {
14716             return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
14717             (__v16sf)
14718             _mm512_setzero_ps (),
14719             (__mmask16) __U,
14720             _MM_FROUND_CUR_DIRECTION);
14721             }
14722              
14723             extern __inline __m512d
14724             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14725             _mm512_getexp_pd (__m512d __A)
14726             {
14727             return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
14728             (__v8df)
14729             _mm512_undefined_pd (),
14730             (__mmask8) -1,
14731             _MM_FROUND_CUR_DIRECTION);
14732             }
14733              
14734             extern __inline __m512d
14735             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14736             _mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
14737             {
14738             return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
14739             (__v8df) __W,
14740             (__mmask8) __U,
14741             _MM_FROUND_CUR_DIRECTION);
14742             }
14743              
14744             extern __inline __m512d
14745             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14746             _mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
14747             {
14748             return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
14749             (__v8df)
14750             _mm512_setzero_pd (),
14751             (__mmask8) __U,
14752             _MM_FROUND_CUR_DIRECTION);
14753             }
14754              
14755             extern __inline __m128
14756             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14757             _mm_getexp_ss (__m128 __A, __m128 __B)
14758             {
14759             return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A,
14760             (__v4sf) __B,
14761             _MM_FROUND_CUR_DIRECTION);
14762             }
14763              
14764             extern __inline __m128
14765             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14766             _mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
14767             {
14768             return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
14769             (__v4sf) __B,
14770             (__v4sf) __W,
14771             (__mmask8) __U,
14772             _MM_FROUND_CUR_DIRECTION);
14773             }
14774              
14775             extern __inline __m128
14776             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14777             _mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
14778             {
14779             return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
14780             (__v4sf) __B,
14781             (__v4sf)
14782             _mm_setzero_ps (),
14783             (__mmask8) __U,
14784             _MM_FROUND_CUR_DIRECTION);
14785             }
14786              
14787             extern __inline __m128d
14788             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14789             _mm_getexp_sd (__m128d __A, __m128d __B)
14790             {
14791             return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A,
14792             (__v2df) __B,
14793             _MM_FROUND_CUR_DIRECTION);
14794             }
14795              
14796             extern __inline __m128d
14797             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14798             _mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
14799             {
14800             return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
14801             (__v2df) __B,
14802             (__v2df) __W,
14803             (__mmask8) __U,
14804             _MM_FROUND_CUR_DIRECTION);
14805             }
14806              
14807             extern __inline __m128d
14808             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14809             _mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
14810             {
14811             return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
14812             (__v2df) __B,
14813             (__v2df)
14814             _mm_setzero_pd (),
14815             (__mmask8) __U,
14816             _MM_FROUND_CUR_DIRECTION);
14817             }
14818              
14819             extern __inline __m512d
14820             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14821             _mm512_getmant_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B,
14822             _MM_MANTISSA_SIGN_ENUM __C)
14823             {
14824             return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
14825             (__C << 2) | __B,
14826             _mm512_undefined_pd (),
14827             (__mmask8) -1,
14828             _MM_FROUND_CUR_DIRECTION);
14829             }
14830              
14831             extern __inline __m512d
14832             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14833             _mm512_mask_getmant_pd (__m512d __W, __mmask8 __U, __m512d __A,
14834             _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
14835             {
14836             return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
14837             (__C << 2) | __B,
14838             (__v8df) __W, __U,
14839             _MM_FROUND_CUR_DIRECTION);
14840             }
14841              
14842             extern __inline __m512d
14843             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14844             _mm512_maskz_getmant_pd (__mmask8 __U, __m512d __A,
14845             _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
14846             {
14847             return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
14848             (__C << 2) | __B,
14849             (__v8df)
14850             _mm512_setzero_pd (),
14851             __U,
14852             _MM_FROUND_CUR_DIRECTION);
14853             }
14854              
14855             extern __inline __m512
14856             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14857             _mm512_getmant_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B,
14858             _MM_MANTISSA_SIGN_ENUM __C)
14859             {
14860             return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
14861             (__C << 2) | __B,
14862             _mm512_undefined_ps (),
14863             (__mmask16) -1,
14864             _MM_FROUND_CUR_DIRECTION);
14865             }
14866              
14867             extern __inline __m512
14868             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14869             _mm512_mask_getmant_ps (__m512 __W, __mmask16 __U, __m512 __A,
14870             _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
14871             {
14872             return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
14873             (__C << 2) | __B,
14874             (__v16sf) __W, __U,
14875             _MM_FROUND_CUR_DIRECTION);
14876             }
14877              
14878             extern __inline __m512
14879             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14880             _mm512_maskz_getmant_ps (__mmask16 __U, __m512 __A,
14881             _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
14882             {
14883             return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
14884             (__C << 2) | __B,
14885             (__v16sf)
14886             _mm512_setzero_ps (),
14887             __U,
14888             _MM_FROUND_CUR_DIRECTION);
14889             }
14890              
14891             extern __inline __m128d
14892             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14893             _mm_getmant_sd (__m128d __A, __m128d __B, _MM_MANTISSA_NORM_ENUM __C,
14894             _MM_MANTISSA_SIGN_ENUM __D)
14895             {
14896             return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A,
14897             (__v2df) __B,
14898             (__D << 2) | __C,
14899             _MM_FROUND_CUR_DIRECTION);
14900             }
14901              
14902             extern __inline __m128d
14903             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14904             _mm_mask_getmant_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
14905             _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
14906             {
14907             return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
14908             (__v2df) __B,
14909             (__D << 2) | __C,
14910             (__v2df) __W,
14911             __U,
14912             _MM_FROUND_CUR_DIRECTION);
14913             }
14914              
14915             extern __inline __m128d
14916             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14917             _mm_maskz_getmant_sd (__mmask8 __U, __m128d __A, __m128d __B,
14918             _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
14919             {
14920             return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
14921             (__v2df) __B,
14922             (__D << 2) | __C,
14923             (__v2df)
14924             _mm_setzero_pd(),
14925             __U,
14926             _MM_FROUND_CUR_DIRECTION);
14927             }
14928              
14929             extern __inline __m128
14930             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14931             _mm_getmant_ss (__m128 __A, __m128 __B, _MM_MANTISSA_NORM_ENUM __C,
14932             _MM_MANTISSA_SIGN_ENUM __D)
14933             {
14934             return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A,
14935             (__v4sf) __B,
14936             (__D << 2) | __C,
14937             _MM_FROUND_CUR_DIRECTION);
14938             }
14939              
14940             extern __inline __m128
14941             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14942             _mm_mask_getmant_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
14943             _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
14944             {
14945             return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
14946             (__v4sf) __B,
14947             (__D << 2) | __C,
14948             (__v4sf) __W,
14949             __U,
14950             _MM_FROUND_CUR_DIRECTION);
14951             }
14952              
14953             extern __inline __m128
14954             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14955             _mm_maskz_getmant_ss (__mmask8 __U, __m128 __A, __m128 __B,
14956             _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
14957             {
14958             return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
14959             (__v4sf) __B,
14960             (__D << 2) | __C,
14961             (__v4sf)
14962             _mm_setzero_ps(),
14963             __U,
14964             _MM_FROUND_CUR_DIRECTION);
14965             }
14966              
14967             #else
14968             #define _mm512_getmant_pd(X, B, C) \
14969             ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
14970             (int)(((C)<<2) | (B)), \
14971             (__v8df)_mm512_undefined_pd(), \
14972             (__mmask8)-1,\
14973             _MM_FROUND_CUR_DIRECTION))
14974              
14975             #define _mm512_mask_getmant_pd(W, U, X, B, C) \
14976             ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
14977             (int)(((C)<<2) | (B)), \
14978             (__v8df)(__m512d)(W), \
14979             (__mmask8)(U),\
14980             _MM_FROUND_CUR_DIRECTION))
14981              
14982             #define _mm512_maskz_getmant_pd(U, X, B, C) \
14983             ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
14984             (int)(((C)<<2) | (B)), \
14985             (__v8df)_mm512_setzero_pd(), \
14986             (__mmask8)(U),\
14987             _MM_FROUND_CUR_DIRECTION))
14988             #define _mm512_getmant_ps(X, B, C) \
14989             ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
14990             (int)(((C)<<2) | (B)), \
14991             (__v16sf)_mm512_undefined_ps(), \
14992             (__mmask16)-1,\
14993             _MM_FROUND_CUR_DIRECTION))
14994              
14995             #define _mm512_mask_getmant_ps(W, U, X, B, C) \
14996             ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
14997             (int)(((C)<<2) | (B)), \
14998             (__v16sf)(__m512)(W), \
14999             (__mmask16)(U),\
15000             _MM_FROUND_CUR_DIRECTION))
15001              
15002             #define _mm512_maskz_getmant_ps(U, X, B, C) \
15003             ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
15004             (int)(((C)<<2) | (B)), \
15005             (__v16sf)_mm512_setzero_ps(), \
15006             (__mmask16)(U),\
15007             _MM_FROUND_CUR_DIRECTION))
15008             #define _mm_getmant_sd(X, Y, C, D) \
15009             ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X), \
15010             (__v2df)(__m128d)(Y), \
15011             (int)(((D)<<2) | (C)), \
15012             _MM_FROUND_CUR_DIRECTION))
15013              
15014             #define _mm_mask_getmant_sd(W, U, X, Y, C, D) \
15015             ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
15016             (__v2df)(__m128d)(Y), \
15017             (int)(((D)<<2) | (C)), \
15018             (__v2df)(__m128d)(W), \
15019             (__mmask8)(U),\
15020             _MM_FROUND_CUR_DIRECTION))
15021              
15022             #define _mm_maskz_getmant_sd(U, X, Y, C, D) \
15023             ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
15024             (__v2df)(__m128d)(Y), \
15025             (int)(((D)<<2) | (C)), \
15026             (__v2df)_mm_setzero_pd(), \
15027             (__mmask8)(U),\
15028             _MM_FROUND_CUR_DIRECTION))
15029              
15030             #define _mm_getmant_ss(X, Y, C, D) \
15031             ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X), \
15032             (__v4sf)(__m128)(Y), \
15033             (int)(((D)<<2) | (C)), \
15034             _MM_FROUND_CUR_DIRECTION))
15035              
15036             #define _mm_mask_getmant_ss(W, U, X, Y, C, D) \
15037             ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
15038             (__v4sf)(__m128)(Y), \
15039             (int)(((D)<<2) | (C)), \
15040             (__v4sf)(__m128)(W), \
15041             (__mmask8)(U),\
15042             _MM_FROUND_CUR_DIRECTION))
15043              
15044             #define _mm_maskz_getmant_ss(U, X, Y, C, D) \
15045             ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
15046             (__v4sf)(__m128)(Y), \
15047             (int)(((D)<<2) | (C)), \
15048             (__v4sf)_mm_setzero_ps(), \
15049             (__mmask8)(U),\
15050             _MM_FROUND_CUR_DIRECTION))
15051              
15052             #define _mm_getexp_ss(A, B) \
15053             ((__m128)__builtin_ia32_getexpss128_round((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
15054             _MM_FROUND_CUR_DIRECTION))
15055              
15056             #define _mm_mask_getexp_ss(W, U, A, B) \
15057             (__m128)__builtin_ia32_getexpss_mask_round(A, B, W, U,\
15058             _MM_FROUND_CUR_DIRECTION)
15059              
15060             #define _mm_maskz_getexp_ss(U, A, B) \
15061             (__m128)__builtin_ia32_getexpss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U,\
15062             _MM_FROUND_CUR_DIRECTION)
15063              
15064             #define _mm_getexp_sd(A, B) \
15065             ((__m128d)__builtin_ia32_getexpsd128_round((__v2df)(__m128d)(A), (__v2df)(__m128d)(B),\
15066             _MM_FROUND_CUR_DIRECTION))
15067              
15068             #define _mm_mask_getexp_sd(W, U, A, B) \
15069             (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, W, U,\
15070             _MM_FROUND_CUR_DIRECTION)
15071              
15072             #define _mm_maskz_getexp_sd(U, A, B) \
15073             (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U,\
15074             _MM_FROUND_CUR_DIRECTION)
15075              
15076             #define _mm512_getexp_ps(A) \
15077             ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
15078             (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
15079              
15080             #define _mm512_mask_getexp_ps(W, U, A) \
15081             ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
15082             (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
15083              
15084             #define _mm512_maskz_getexp_ps(U, A) \
15085             ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
15086             (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
15087              
15088             #define _mm512_getexp_pd(A) \
15089             ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
15090             (__v8df)_mm512_undefined_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
15091              
15092             #define _mm512_mask_getexp_pd(W, U, A) \
15093             ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
15094             (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
15095              
15096             #define _mm512_maskz_getexp_pd(U, A) \
15097             ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
15098             (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
15099             #endif
15100              
15101             #ifdef __OPTIMIZE__
15102             extern __inline __m512
15103             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15104             _mm512_roundscale_ps (__m512 __A, const int __imm)
15105             {
15106             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
15107             (__v16sf)
15108             _mm512_undefined_ps (),
15109             -1,
15110             _MM_FROUND_CUR_DIRECTION);
15111             }
15112              
15113             extern __inline __m512
15114             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15115             _mm512_mask_roundscale_ps (__m512 __A, __mmask16 __B, __m512 __C,
15116             const int __imm)
15117             {
15118             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,
15119             (__v16sf) __A,
15120             (__mmask16) __B,
15121             _MM_FROUND_CUR_DIRECTION);
15122             }
15123              
15124             extern __inline __m512
15125             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15126             _mm512_maskz_roundscale_ps (__mmask16 __A, __m512 __B, const int __imm)
15127             {
15128             return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B,
15129             __imm,
15130             (__v16sf)
15131             _mm512_setzero_ps (),
15132             (__mmask16) __A,
15133             _MM_FROUND_CUR_DIRECTION);
15134             }
15135              
15136             extern __inline __m512d
15137             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15138             _mm512_roundscale_pd (__m512d __A, const int __imm)
15139             {
15140             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
15141             (__v8df)
15142             _mm512_undefined_pd (),
15143             -1,
15144             _MM_FROUND_CUR_DIRECTION);
15145             }
15146              
15147             extern __inline __m512d
15148             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15149             _mm512_mask_roundscale_pd (__m512d __A, __mmask8 __B, __m512d __C,
15150             const int __imm)
15151             {
15152             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,
15153             (__v8df) __A,
15154             (__mmask8) __B,
15155             _MM_FROUND_CUR_DIRECTION);
15156             }
15157              
15158             extern __inline __m512d
15159             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15160             _mm512_maskz_roundscale_pd (__mmask8 __A, __m512d __B, const int __imm)
15161             {
15162             return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B,
15163             __imm,
15164             (__v8df)
15165             _mm512_setzero_pd (),
15166             (__mmask8) __A,
15167             _MM_FROUND_CUR_DIRECTION);
15168             }
15169              
15170             extern __inline __m128
15171             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15172             _mm_roundscale_ss (__m128 __A, __m128 __B, const int __imm)
15173             {
15174             return (__m128)
15175             __builtin_ia32_rndscaless_mask_round ((__v4sf) __A,
15176             (__v4sf) __B, __imm,
15177             (__v4sf)
15178             _mm_setzero_ps (),
15179             (__mmask8) -1,
15180             _MM_FROUND_CUR_DIRECTION);
15181             }
15182              
15183              
15184             extern __inline __m128
15185             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15186             _mm_mask_roundscale_ss (__m128 __A, __mmask8 __B, __m128 __C, __m128 __D,
15187             const int __imm)
15188             {
15189             return (__m128)
15190             __builtin_ia32_rndscaless_mask_round ((__v4sf) __C,
15191             (__v4sf) __D, __imm,
15192             (__v4sf) __A,
15193             (__mmask8) __B,
15194             _MM_FROUND_CUR_DIRECTION);
15195             }
15196              
15197             extern __inline __m128
15198             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15199             _mm_maskz_roundscale_ss (__mmask8 __A, __m128 __B, __m128 __C,
15200             const int __imm)
15201             {
15202             return (__m128)
15203             __builtin_ia32_rndscaless_mask_round ((__v4sf) __B,
15204             (__v4sf) __C, __imm,
15205             (__v4sf)
15206             _mm_setzero_ps (),
15207             (__mmask8) __A,
15208             _MM_FROUND_CUR_DIRECTION);
15209             }
15210              
15211             extern __inline __m128d
15212             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15213             _mm_roundscale_sd (__m128d __A, __m128d __B, const int __imm)
15214             {
15215             return (__m128d)
15216             __builtin_ia32_rndscalesd_mask_round ((__v2df) __A,
15217             (__v2df) __B, __imm,
15218             (__v2df)
15219             _mm_setzero_pd (),
15220             (__mmask8) -1,
15221             _MM_FROUND_CUR_DIRECTION);
15222             }
15223              
15224             extern __inline __m128d
15225             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15226             _mm_mask_roundscale_sd (__m128d __A, __mmask8 __B, __m128d __C, __m128d __D,
15227             const int __imm)
15228             {
15229             return (__m128d)
15230             __builtin_ia32_rndscalesd_mask_round ((__v2df) __C,
15231             (__v2df) __D, __imm,
15232             (__v2df) __A,
15233             (__mmask8) __B,
15234             _MM_FROUND_CUR_DIRECTION);
15235             }
15236              
15237             extern __inline __m128d
15238             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15239             _mm_maskz_roundscale_sd (__mmask8 __A, __m128d __B, __m128d __C,
15240             const int __imm)
15241             {
15242             return (__m128d)
15243             __builtin_ia32_rndscalesd_mask_round ((__v2df) __B,
15244             (__v2df) __C, __imm,
15245             (__v2df)
15246             _mm_setzero_pd (),
15247             (__mmask8) __A,
15248             _MM_FROUND_CUR_DIRECTION);
15249             }
15250              
15251             #else
15252             #define _mm512_roundscale_ps(A, B) \
15253             ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\
15254             (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION))
15255             #define _mm512_mask_roundscale_ps(A, B, C, D) \
15256             ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \
15257             (int)(D), \
15258             (__v16sf)(__m512)(A), \
15259             (__mmask16)(B), _MM_FROUND_CUR_DIRECTION))
15260             #define _mm512_maskz_roundscale_ps(A, B, C) \
15261             ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \
15262             (int)(C), \
15263             (__v16sf)_mm512_setzero_ps(),\
15264             (__mmask16)(A), _MM_FROUND_CUR_DIRECTION))
15265             #define _mm512_roundscale_pd(A, B) \
15266             ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\
15267             (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
15268             #define _mm512_mask_roundscale_pd(A, B, C, D) \
15269             ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \
15270             (int)(D), \
15271             (__v8df)(__m512d)(A), \
15272             (__mmask8)(B), _MM_FROUND_CUR_DIRECTION))
15273             #define _mm512_maskz_roundscale_pd(A, B, C) \
15274             ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \
15275             (int)(C), \
15276             (__v8df)_mm512_setzero_pd(),\
15277             (__mmask8)(A), _MM_FROUND_CUR_DIRECTION))
15278             #define _mm_roundscale_ss(A, B, I) \
15279             ((__m128) \
15280             __builtin_ia32_rndscaless_mask_round ((__v4sf) (__m128) (A), \
15281             (__v4sf) (__m128) (B), \
15282             (int) (I), \
15283             (__v4sf) _mm_setzero_ps (), \
15284             (__mmask8) (-1), \
15285             _MM_FROUND_CUR_DIRECTION))
15286             #define _mm_mask_roundscale_ss(A, U, B, C, I) \
15287             ((__m128) \
15288             __builtin_ia32_rndscaless_mask_round ((__v4sf) (__m128) (B), \
15289             (__v4sf) (__m128) (C), \
15290             (int) (I), \
15291             (__v4sf) (__m128) (A), \
15292             (__mmask8) (U), \
15293             _MM_FROUND_CUR_DIRECTION))
15294             #define _mm_maskz_roundscale_ss(U, A, B, I) \
15295             ((__m128) \
15296             __builtin_ia32_rndscaless_mask_round ((__v4sf) (__m128) (A), \
15297             (__v4sf) (__m128) (B), \
15298             (int) (I), \
15299             (__v4sf) _mm_setzero_ps (), \
15300             (__mmask8) (U), \
15301             _MM_FROUND_CUR_DIRECTION))
15302             #define _mm_roundscale_sd(A, B, I) \
15303             ((__m128d) \
15304             __builtin_ia32_rndscalesd_mask_round ((__v2df) (__m128d) (A), \
15305             (__v2df) (__m128d) (B), \
15306             (int) (I), \
15307             (__v2df) _mm_setzero_pd (), \
15308             (__mmask8) (-1), \
15309             _MM_FROUND_CUR_DIRECTION))
15310             #define _mm_mask_roundscale_sd(A, U, B, C, I) \
15311             ((__m128d) \
15312             __builtin_ia32_rndscalesd_mask_round ((__v2df) (__m128d) (B), \
15313             (__v2df) (__m128d) (C), \
15314             (int) (I), \
15315             (__v2df) (__m128d) (A), \
15316             (__mmask8) (U), \
15317             _MM_FROUND_CUR_DIRECTION))
15318             #define _mm_maskz_roundscale_sd(U, A, B, I) \
15319             ((__m128d) \
15320             __builtin_ia32_rndscalesd_mask_round ((__v2df) (__m128d) (A), \
15321             (__v2df) (__m128d) (B), \
15322             (int) (I), \
15323             (__v2df) _mm_setzero_pd (), \
15324             (__mmask8) (U), \
15325             _MM_FROUND_CUR_DIRECTION))
15326             #endif
15327              
15328             #ifdef __OPTIMIZE__
15329             extern __inline __mmask8
15330             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15331             _mm512_cmp_pd_mask (__m512d __X, __m512d __Y, const int __P)
15332             {
15333             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15334             (__v8df) __Y, __P,
15335             (__mmask8) -1,
15336             _MM_FROUND_CUR_DIRECTION);
15337             }
15338              
15339             extern __inline __mmask16
15340             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15341             _mm512_cmp_ps_mask (__m512 __X, __m512 __Y, const int __P)
15342             {
15343             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15344             (__v16sf) __Y, __P,
15345             (__mmask16) -1,
15346             _MM_FROUND_CUR_DIRECTION);
15347             }
15348              
15349             extern __inline __mmask16
15350             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15351             _mm512_mask_cmp_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y, const int __P)
15352             {
15353             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15354             (__v16sf) __Y, __P,
15355             (__mmask16) __U,
15356             _MM_FROUND_CUR_DIRECTION);
15357             }
15358              
15359             extern __inline __mmask8
15360             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15361             _mm512_mask_cmp_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y, const int __P)
15362             {
15363             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15364             (__v8df) __Y, __P,
15365             (__mmask8) __U,
15366             _MM_FROUND_CUR_DIRECTION);
15367             }
15368              
15369             extern __inline __mmask8
15370             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15371             _mm_cmp_sd_mask (__m128d __X, __m128d __Y, const int __P)
15372             {
15373             return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
15374             (__v2df) __Y, __P,
15375             (__mmask8) -1,
15376             _MM_FROUND_CUR_DIRECTION);
15377             }
15378              
15379             extern __inline __mmask8
15380             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15381             _mm_mask_cmp_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, const int __P)
15382             {
15383             return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
15384             (__v2df) __Y, __P,
15385             (__mmask8) __M,
15386             _MM_FROUND_CUR_DIRECTION);
15387             }
15388              
15389             extern __inline __mmask8
15390             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15391             _mm_cmp_ss_mask (__m128 __X, __m128 __Y, const int __P)
15392             {
15393             return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
15394             (__v4sf) __Y, __P,
15395             (__mmask8) -1,
15396             _MM_FROUND_CUR_DIRECTION);
15397             }
15398              
15399             extern __inline __mmask8
15400             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15401             _mm_mask_cmp_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, const int __P)
15402             {
15403             return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
15404             (__v4sf) __Y, __P,
15405             (__mmask8) __M,
15406             _MM_FROUND_CUR_DIRECTION);
15407             }
15408              
15409             #else
15410             #define _mm512_cmp_pd_mask(X, Y, P) \
15411             ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
15412             (__v8df)(__m512d)(Y), (int)(P),\
15413             (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
15414              
15415             #define _mm512_cmp_ps_mask(X, Y, P) \
15416             ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
15417             (__v16sf)(__m512)(Y), (int)(P),\
15418             (__mmask16)-1,_MM_FROUND_CUR_DIRECTION))
15419              
15420             #define _mm512_mask_cmp_pd_mask(M, X, Y, P) \
15421             ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
15422             (__v8df)(__m512d)(Y), (int)(P),\
15423             (__mmask8)(M), _MM_FROUND_CUR_DIRECTION))
15424              
15425             #define _mm512_mask_cmp_ps_mask(M, X, Y, P) \
15426             ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
15427             (__v16sf)(__m512)(Y), (int)(P),\
15428             (__mmask16)(M),_MM_FROUND_CUR_DIRECTION))
15429              
15430             #define _mm_cmp_sd_mask(X, Y, P) \
15431             ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
15432             (__v2df)(__m128d)(Y), (int)(P),\
15433             (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
15434              
15435             #define _mm_mask_cmp_sd_mask(M, X, Y, P) \
15436             ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
15437             (__v2df)(__m128d)(Y), (int)(P),\
15438             M,_MM_FROUND_CUR_DIRECTION))
15439              
15440             #define _mm_cmp_ss_mask(X, Y, P) \
15441             ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
15442             (__v4sf)(__m128)(Y), (int)(P), \
15443             (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
15444              
15445             #define _mm_mask_cmp_ss_mask(M, X, Y, P) \
15446             ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
15447             (__v4sf)(__m128)(Y), (int)(P), \
15448             M,_MM_FROUND_CUR_DIRECTION))
15449             #endif
15450              
15451             extern __inline __mmask8
15452             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15453             _mm512_cmpeq_pd_mask (__m512d __X, __m512d __Y)
15454             {
15455             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15456             (__v8df) __Y, _CMP_EQ_OQ,
15457             (__mmask8) -1,
15458             _MM_FROUND_CUR_DIRECTION);
15459             }
15460              
15461             extern __inline __mmask8
15462             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15463             _mm512_mask_cmpeq_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15464             {
15465             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15466             (__v8df) __Y, _CMP_EQ_OQ,
15467             (__mmask8) __U,
15468             _MM_FROUND_CUR_DIRECTION);
15469             }
15470              
15471             extern __inline __mmask8
15472             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15473             _mm512_cmplt_pd_mask (__m512d __X, __m512d __Y)
15474             {
15475             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15476             (__v8df) __Y, _CMP_LT_OS,
15477             (__mmask8) -1,
15478             _MM_FROUND_CUR_DIRECTION);
15479             }
15480              
15481             extern __inline __mmask8
15482             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15483             _mm512_mask_cmplt_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15484             {
15485             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15486             (__v8df) __Y, _CMP_LT_OS,
15487             (__mmask8) __U,
15488             _MM_FROUND_CUR_DIRECTION);
15489             }
15490              
15491             extern __inline __mmask8
15492             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15493             _mm512_cmple_pd_mask (__m512d __X, __m512d __Y)
15494             {
15495             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15496             (__v8df) __Y, _CMP_LE_OS,
15497             (__mmask8) -1,
15498             _MM_FROUND_CUR_DIRECTION);
15499             }
15500              
15501             extern __inline __mmask8
15502             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15503             _mm512_mask_cmple_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15504             {
15505             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15506             (__v8df) __Y, _CMP_LE_OS,
15507             (__mmask8) __U,
15508             _MM_FROUND_CUR_DIRECTION);
15509             }
15510              
15511             extern __inline __mmask8
15512             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15513             _mm512_cmpunord_pd_mask (__m512d __X, __m512d __Y)
15514             {
15515             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15516             (__v8df) __Y, _CMP_UNORD_Q,
15517             (__mmask8) -1,
15518             _MM_FROUND_CUR_DIRECTION);
15519             }
15520              
15521             extern __inline __mmask8
15522             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15523             _mm512_mask_cmpunord_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15524             {
15525             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15526             (__v8df) __Y, _CMP_UNORD_Q,
15527             (__mmask8) __U,
15528             _MM_FROUND_CUR_DIRECTION);
15529             }
15530              
15531             extern __inline __mmask8
15532             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15533             _mm512_cmpneq_pd_mask (__m512d __X, __m512d __Y)
15534             {
15535             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15536             (__v8df) __Y, _CMP_NEQ_UQ,
15537             (__mmask8) -1,
15538             _MM_FROUND_CUR_DIRECTION);
15539             }
15540              
15541             extern __inline __mmask8
15542             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15543             _mm512_mask_cmpneq_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15544             {
15545             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15546             (__v8df) __Y, _CMP_NEQ_UQ,
15547             (__mmask8) __U,
15548             _MM_FROUND_CUR_DIRECTION);
15549             }
15550              
15551             extern __inline __mmask8
15552             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15553             _mm512_cmpnlt_pd_mask (__m512d __X, __m512d __Y)
15554             {
15555             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15556             (__v8df) __Y, _CMP_NLT_US,
15557             (__mmask8) -1,
15558             _MM_FROUND_CUR_DIRECTION);
15559             }
15560              
15561             extern __inline __mmask8
15562             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15563             _mm512_mask_cmpnlt_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15564             {
15565             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15566             (__v8df) __Y, _CMP_NLT_US,
15567             (__mmask8) __U,
15568             _MM_FROUND_CUR_DIRECTION);
15569             }
15570              
15571             extern __inline __mmask8
15572             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15573             _mm512_cmpnle_pd_mask (__m512d __X, __m512d __Y)
15574             {
15575             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15576             (__v8df) __Y, _CMP_NLE_US,
15577             (__mmask8) -1,
15578             _MM_FROUND_CUR_DIRECTION);
15579             }
15580              
15581             extern __inline __mmask8
15582             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15583             _mm512_mask_cmpnle_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15584             {
15585             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15586             (__v8df) __Y, _CMP_NLE_US,
15587             (__mmask8) __U,
15588             _MM_FROUND_CUR_DIRECTION);
15589             }
15590              
15591             extern __inline __mmask8
15592             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15593             _mm512_cmpord_pd_mask (__m512d __X, __m512d __Y)
15594             {
15595             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15596             (__v8df) __Y, _CMP_ORD_Q,
15597             (__mmask8) -1,
15598             _MM_FROUND_CUR_DIRECTION);
15599             }
15600              
15601             extern __inline __mmask8
15602             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15603             _mm512_mask_cmpord_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
15604             {
15605             return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
15606             (__v8df) __Y, _CMP_ORD_Q,
15607             (__mmask8) __U,
15608             _MM_FROUND_CUR_DIRECTION);
15609             }
15610              
15611             extern __inline __mmask16
15612             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15613             _mm512_cmpeq_ps_mask (__m512 __X, __m512 __Y)
15614             {
15615             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15616             (__v16sf) __Y, _CMP_EQ_OQ,
15617             (__mmask16) -1,
15618             _MM_FROUND_CUR_DIRECTION);
15619             }
15620              
15621             extern __inline __mmask16
15622             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15623             _mm512_mask_cmpeq_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15624             {
15625             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15626             (__v16sf) __Y, _CMP_EQ_OQ,
15627             (__mmask16) __U,
15628             _MM_FROUND_CUR_DIRECTION);
15629             }
15630              
15631             extern __inline __mmask16
15632             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15633             _mm512_cmplt_ps_mask (__m512 __X, __m512 __Y)
15634             {
15635             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15636             (__v16sf) __Y, _CMP_LT_OS,
15637             (__mmask16) -1,
15638             _MM_FROUND_CUR_DIRECTION);
15639             }
15640              
15641             extern __inline __mmask16
15642             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15643             _mm512_mask_cmplt_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15644             {
15645             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15646             (__v16sf) __Y, _CMP_LT_OS,
15647             (__mmask16) __U,
15648             _MM_FROUND_CUR_DIRECTION);
15649             }
15650              
15651             extern __inline __mmask16
15652             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15653             _mm512_cmple_ps_mask (__m512 __X, __m512 __Y)
15654             {
15655             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15656             (__v16sf) __Y, _CMP_LE_OS,
15657             (__mmask16) -1,
15658             _MM_FROUND_CUR_DIRECTION);
15659             }
15660              
15661             extern __inline __mmask16
15662             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15663             _mm512_mask_cmple_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15664             {
15665             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15666             (__v16sf) __Y, _CMP_LE_OS,
15667             (__mmask16) __U,
15668             _MM_FROUND_CUR_DIRECTION);
15669             }
15670              
15671             extern __inline __mmask16
15672             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15673             _mm512_cmpunord_ps_mask (__m512 __X, __m512 __Y)
15674             {
15675             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15676             (__v16sf) __Y, _CMP_UNORD_Q,
15677             (__mmask16) -1,
15678             _MM_FROUND_CUR_DIRECTION);
15679             }
15680              
15681             extern __inline __mmask16
15682             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15683             _mm512_mask_cmpunord_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15684             {
15685             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15686             (__v16sf) __Y, _CMP_UNORD_Q,
15687             (__mmask16) __U,
15688             _MM_FROUND_CUR_DIRECTION);
15689             }
15690              
15691             extern __inline __mmask16
15692             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15693             _mm512_cmpneq_ps_mask (__m512 __X, __m512 __Y)
15694             {
15695             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15696             (__v16sf) __Y, _CMP_NEQ_UQ,
15697             (__mmask16) -1,
15698             _MM_FROUND_CUR_DIRECTION);
15699             }
15700              
15701             extern __inline __mmask16
15702             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15703             _mm512_mask_cmpneq_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15704             {
15705             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15706             (__v16sf) __Y, _CMP_NEQ_UQ,
15707             (__mmask16) __U,
15708             _MM_FROUND_CUR_DIRECTION);
15709             }
15710              
15711             extern __inline __mmask16
15712             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15713             _mm512_cmpnlt_ps_mask (__m512 __X, __m512 __Y)
15714             {
15715             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15716             (__v16sf) __Y, _CMP_NLT_US,
15717             (__mmask16) -1,
15718             _MM_FROUND_CUR_DIRECTION);
15719             }
15720              
15721             extern __inline __mmask16
15722             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15723             _mm512_mask_cmpnlt_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15724             {
15725             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15726             (__v16sf) __Y, _CMP_NLT_US,
15727             (__mmask16) __U,
15728             _MM_FROUND_CUR_DIRECTION);
15729             }
15730              
15731             extern __inline __mmask16
15732             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15733             _mm512_cmpnle_ps_mask (__m512 __X, __m512 __Y)
15734             {
15735             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15736             (__v16sf) __Y, _CMP_NLE_US,
15737             (__mmask16) -1,
15738             _MM_FROUND_CUR_DIRECTION);
15739             }
15740              
15741             extern __inline __mmask16
15742             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15743             _mm512_mask_cmpnle_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15744             {
15745             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15746             (__v16sf) __Y, _CMP_NLE_US,
15747             (__mmask16) __U,
15748             _MM_FROUND_CUR_DIRECTION);
15749             }
15750              
15751             extern __inline __mmask16
15752             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15753             _mm512_cmpord_ps_mask (__m512 __X, __m512 __Y)
15754             {
15755             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15756             (__v16sf) __Y, _CMP_ORD_Q,
15757             (__mmask16) -1,
15758             _MM_FROUND_CUR_DIRECTION);
15759             }
15760              
15761             extern __inline __mmask16
15762             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15763             _mm512_mask_cmpord_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
15764             {
15765             return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
15766             (__v16sf) __Y, _CMP_ORD_Q,
15767             (__mmask16) __U,
15768             _MM_FROUND_CUR_DIRECTION);
15769             }
15770              
15771             extern __inline __mmask16
15772             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15773             _mm512_kmov (__mmask16 __A)
15774             {
15775             return __builtin_ia32_kmovw (__A);
15776             }
15777              
15778             extern __inline __m512
15779             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15780             _mm512_castpd_ps (__m512d __A)
15781             {
15782             return (__m512) (__A);
15783             }
15784              
15785             extern __inline __m512i
15786             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15787             _mm512_castpd_si512 (__m512d __A)
15788             {
15789             return (__m512i) (__A);
15790             }
15791              
15792             extern __inline __m512d
15793             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15794             _mm512_castps_pd (__m512 __A)
15795             {
15796             return (__m512d) (__A);
15797             }
15798              
15799             extern __inline __m512i
15800             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15801             _mm512_castps_si512 (__m512 __A)
15802             {
15803             return (__m512i) (__A);
15804             }
15805              
15806             extern __inline __m512
15807             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15808             _mm512_castsi512_ps (__m512i __A)
15809             {
15810             return (__m512) (__A);
15811             }
15812              
15813             extern __inline __m512d
15814             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15815             _mm512_castsi512_pd (__m512i __A)
15816             {
15817             return (__m512d) (__A);
15818             }
15819              
15820             extern __inline __m128d
15821             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15822             _mm512_castpd512_pd128 (__m512d __A)
15823             {
15824             return (__m128d)_mm512_extractf32x4_ps((__m512)__A, 0);
15825             }
15826              
15827             extern __inline __m128
15828             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15829             _mm512_castps512_ps128 (__m512 __A)
15830             {
15831             return _mm512_extractf32x4_ps(__A, 0);
15832             }
15833              
15834             extern __inline __m128i
15835             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15836             _mm512_castsi512_si128 (__m512i __A)
15837             {
15838             return (__m128i)_mm512_extracti32x4_epi32((__m512i)__A, 0);
15839             }
15840              
15841             extern __inline __m256d
15842             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15843             _mm512_castpd512_pd256 (__m512d __A)
15844             {
15845             return _mm512_extractf64x4_pd(__A, 0);
15846             }
15847              
15848             extern __inline __m256
15849             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15850             _mm512_castps512_ps256 (__m512 __A)
15851             {
15852             return (__m256)_mm512_extractf64x4_pd((__m512d)__A, 0);
15853             }
15854              
15855             extern __inline __m256i
15856             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15857             _mm512_castsi512_si256 (__m512i __A)
15858             {
15859             return (__m256i)_mm512_extractf64x4_pd((__m512d)__A, 0);
15860             }
15861              
15862             extern __inline __m512d
15863             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15864             _mm512_castpd128_pd512 (__m128d __A)
15865             {
15866             return (__m512d) __builtin_ia32_pd512_pd((__m128d)__A);
15867             }
15868              
15869             extern __inline __m512
15870             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15871             _mm512_castps128_ps512 (__m128 __A)
15872             {
15873             return (__m512) __builtin_ia32_ps512_ps((__m128)__A);
15874             }
15875              
15876             extern __inline __m512i
15877             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15878             _mm512_castsi128_si512 (__m128i __A)
15879             {
15880             return (__m512i) __builtin_ia32_si512_si((__v4si)__A);
15881             }
15882              
15883             extern __inline __m512d
15884             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15885             _mm512_castpd256_pd512 (__m256d __A)
15886             {
15887             return __builtin_ia32_pd512_256pd (__A);
15888             }
15889              
15890             extern __inline __m512
15891             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15892             _mm512_castps256_ps512 (__m256 __A)
15893             {
15894             return __builtin_ia32_ps512_256ps (__A);
15895             }
15896              
15897             extern __inline __m512i
15898             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15899             _mm512_castsi256_si512 (__m256i __A)
15900             {
15901             return (__m512i)__builtin_ia32_si512_256si ((__v8si)__A);
15902             }
15903              
15904             extern __inline __m512d
15905             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15906             _mm512_zextpd128_pd512 (__m128d __A)
15907             {
15908             return (__m512d) _mm512_insertf32x4 (_mm512_setzero_ps (), (__m128) __A, 0);
15909             }
15910              
15911             extern __inline __m512
15912             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15913             _mm512_zextps128_ps512 (__m128 __A)
15914             {
15915             return _mm512_insertf32x4 (_mm512_setzero_ps (), __A, 0);
15916             }
15917              
15918             extern __inline __m512i
15919             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15920             _mm512_zextsi128_si512 (__m128i __A)
15921             {
15922 0           return _mm512_inserti32x4 (_mm512_setzero_si512 (), __A, 0);
15923             }
15924              
15925             extern __inline __m512d
15926             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15927             _mm512_zextpd256_pd512 (__m256d __A)
15928             {
15929             return _mm512_insertf64x4 (_mm512_setzero_pd (), __A, 0);
15930             }
15931              
15932             extern __inline __m512
15933             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15934             _mm512_zextps256_ps512 (__m256 __A)
15935             {
15936             return (__m512) _mm512_insertf64x4 (_mm512_setzero_pd (), (__m256d) __A, 0);
15937             }
15938              
15939             extern __inline __m512i
15940             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15941             _mm512_zextsi256_si512 (__m256i __A)
15942             {
15943             return _mm512_inserti64x4 (_mm512_setzero_si512 (), __A, 0);
15944             }
15945              
15946             extern __inline __mmask16
15947             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15948             _mm512_cmpeq_epu32_mask (__m512i __A, __m512i __B)
15949             {
15950             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
15951             (__v16si) __B, 0,
15952             (__mmask16) -1);
15953             }
15954              
15955             extern __inline __mmask16
15956             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15957             _mm512_mask_cmpeq_epu32_mask (__mmask16 __U, __m512i __A, __m512i __B)
15958             {
15959             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
15960             (__v16si) __B, 0, __U);
15961             }
15962              
15963             extern __inline __mmask8
15964             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15965             _mm512_mask_cmpeq_epu64_mask (__mmask8 __U, __m512i __A, __m512i __B)
15966             {
15967             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
15968             (__v8di) __B, 0, __U);
15969             }
15970              
15971             extern __inline __mmask8
15972             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15973             _mm512_cmpeq_epu64_mask (__m512i __A, __m512i __B)
15974             {
15975             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
15976             (__v8di) __B, 0,
15977             (__mmask8) -1);
15978             }
15979              
15980             extern __inline __mmask16
15981             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15982             _mm512_cmpgt_epu32_mask (__m512i __A, __m512i __B)
15983             {
15984             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
15985             (__v16si) __B, 6,
15986             (__mmask16) -1);
15987             }
15988              
15989             extern __inline __mmask16
15990             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15991             _mm512_mask_cmpgt_epu32_mask (__mmask16 __U, __m512i __A, __m512i __B)
15992             {
15993             return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
15994             (__v16si) __B, 6, __U);
15995             }
15996              
15997             extern __inline __mmask8
15998             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15999             _mm512_mask_cmpgt_epu64_mask (__mmask8 __U, __m512i __A, __m512i __B)
16000             {
16001             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
16002             (__v8di) __B, 6, __U);
16003             }
16004              
16005             extern __inline __mmask8
16006             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16007             _mm512_cmpgt_epu64_mask (__m512i __A, __m512i __B)
16008             {
16009             return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
16010             (__v8di) __B, 6,
16011             (__mmask8) -1);
16012             }
16013              
16014             #undef __MM512_REDUCE_OP
16015             #define __MM512_REDUCE_OP(op) \
16016             __v8si __T1 = (__v8si) _mm512_extracti64x4_epi64 (__A, 1); \
16017             __v8si __T2 = (__v8si) _mm512_extracti64x4_epi64 (__A, 0); \
16018             __m256i __T3 = (__m256i) (__T1 op __T2); \
16019             __v4si __T4 = (__v4si) _mm256_extracti128_si256 (__T3, 1); \
16020             __v4si __T5 = (__v4si) _mm256_extracti128_si256 (__T3, 0); \
16021             __v4si __T6 = __T4 op __T5; \
16022             __v4si __T7 = __builtin_shuffle (__T6, (__v4si) { 2, 3, 0, 1 }); \
16023             __v4si __T8 = __T6 op __T7; \
16024             return __T8[0] op __T8[1]
16025              
16026             extern __inline int
16027             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16028             _mm512_reduce_add_epi32 (__m512i __A)
16029             {
16030             __MM512_REDUCE_OP (+);
16031             }
16032              
16033             extern __inline int
16034             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16035             _mm512_reduce_mul_epi32 (__m512i __A)
16036             {
16037             __MM512_REDUCE_OP (*);
16038             }
16039              
16040             extern __inline int
16041             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16042             _mm512_reduce_and_epi32 (__m512i __A)
16043             {
16044             __MM512_REDUCE_OP (&);
16045             }
16046              
16047             extern __inline int
16048             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16049             _mm512_reduce_or_epi32 (__m512i __A)
16050             {
16051             __MM512_REDUCE_OP (|);
16052             }
16053              
16054             extern __inline int
16055             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16056             _mm512_mask_reduce_add_epi32 (__mmask16 __U, __m512i __A)
16057             {
16058             __A = _mm512_maskz_mov_epi32 (__U, __A);
16059             __MM512_REDUCE_OP (+);
16060             }
16061              
16062             extern __inline int
16063             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16064             _mm512_mask_reduce_mul_epi32 (__mmask16 __U, __m512i __A)
16065             {
16066             __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (1), __U, __A);
16067             __MM512_REDUCE_OP (*);
16068             }
16069              
16070             extern __inline int
16071             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16072             _mm512_mask_reduce_and_epi32 (__mmask16 __U, __m512i __A)
16073             {
16074             __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (~0), __U, __A);
16075             __MM512_REDUCE_OP (&);
16076             }
16077              
16078             extern __inline int
16079             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16080             _mm512_mask_reduce_or_epi32 (__mmask16 __U, __m512i __A)
16081             {
16082             __A = _mm512_maskz_mov_epi32 (__U, __A);
16083             __MM512_REDUCE_OP (|);
16084             }
16085              
16086             #undef __MM512_REDUCE_OP
16087             #define __MM512_REDUCE_OP(op) \
16088             __m256i __T1 = (__m256i) _mm512_extracti64x4_epi64 (__A, 1); \
16089             __m256i __T2 = (__m256i) _mm512_extracti64x4_epi64 (__A, 0); \
16090             __m256i __T3 = _mm256_##op (__T1, __T2); \
16091             __m128i __T4 = (__m128i) _mm256_extracti128_si256 (__T3, 1); \
16092             __m128i __T5 = (__m128i) _mm256_extracti128_si256 (__T3, 0); \
16093             __m128i __T6 = _mm_##op (__T4, __T5); \
16094             __m128i __T7 = (__m128i) __builtin_shuffle ((__v4si) __T6, \
16095             (__v4si) { 2, 3, 0, 1 }); \
16096             __m128i __T8 = _mm_##op (__T6, __T7); \
16097             __m128i __T9 = (__m128i) __builtin_shuffle ((__v4si) __T8, \
16098             (__v4si) { 1, 0, 1, 0 }); \
16099             __v4si __T10 = (__v4si) _mm_##op (__T8, __T9); \
16100             return __T10[0]
16101              
16102             extern __inline int
16103             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16104             _mm512_reduce_min_epi32 (__m512i __A)
16105             {
16106             __MM512_REDUCE_OP (min_epi32);
16107             }
16108              
16109             extern __inline int
16110             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16111             _mm512_reduce_max_epi32 (__m512i __A)
16112             {
16113             __MM512_REDUCE_OP (max_epi32);
16114             }
16115              
16116             extern __inline unsigned int
16117             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16118             _mm512_reduce_min_epu32 (__m512i __A)
16119             {
16120             __MM512_REDUCE_OP (min_epu32);
16121             }
16122              
16123             extern __inline unsigned int
16124             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16125             _mm512_reduce_max_epu32 (__m512i __A)
16126             {
16127             __MM512_REDUCE_OP (max_epu32);
16128             }
16129              
16130             extern __inline int
16131             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16132             _mm512_mask_reduce_min_epi32 (__mmask16 __U, __m512i __A)
16133             {
16134             __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (__INT_MAX__), __U, __A);
16135             __MM512_REDUCE_OP (min_epi32);
16136             }
16137              
16138             extern __inline int
16139             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16140             _mm512_mask_reduce_max_epi32 (__mmask16 __U, __m512i __A)
16141             {
16142             __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (-__INT_MAX__ - 1), __U, __A);
16143             __MM512_REDUCE_OP (max_epi32);
16144             }
16145              
16146             extern __inline unsigned int
16147             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16148             _mm512_mask_reduce_min_epu32 (__mmask16 __U, __m512i __A)
16149             {
16150             __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (~0), __U, __A);
16151             __MM512_REDUCE_OP (min_epu32);
16152             }
16153              
16154             extern __inline unsigned int
16155             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16156             _mm512_mask_reduce_max_epu32 (__mmask16 __U, __m512i __A)
16157             {
16158             __A = _mm512_maskz_mov_epi32 (__U, __A);
16159             __MM512_REDUCE_OP (max_epu32);
16160             }
16161              
16162             #undef __MM512_REDUCE_OP
16163             #define __MM512_REDUCE_OP(op) \
16164             __m256 __T1 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 1); \
16165             __m256 __T2 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 0); \
16166             __m256 __T3 = __T1 op __T2; \
16167             __m128 __T4 = _mm256_extractf128_ps (__T3, 1); \
16168             __m128 __T5 = _mm256_extractf128_ps (__T3, 0); \
16169             __m128 __T6 = __T4 op __T5; \
16170             __m128 __T7 = __builtin_shuffle (__T6, (__v4si) { 2, 3, 0, 1 }); \
16171             __m128 __T8 = __T6 op __T7; \
16172             return __T8[0] op __T8[1]
16173              
16174             extern __inline float
16175             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16176             _mm512_reduce_add_ps (__m512 __A)
16177             {
16178             __MM512_REDUCE_OP (+);
16179             }
16180              
16181             extern __inline float
16182             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16183             _mm512_reduce_mul_ps (__m512 __A)
16184             {
16185             __MM512_REDUCE_OP (*);
16186             }
16187              
16188             extern __inline float
16189             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16190             _mm512_mask_reduce_add_ps (__mmask16 __U, __m512 __A)
16191             {
16192             __A = _mm512_maskz_mov_ps (__U, __A);
16193             __MM512_REDUCE_OP (+);
16194             }
16195              
16196             extern __inline float
16197             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16198             _mm512_mask_reduce_mul_ps (__mmask16 __U, __m512 __A)
16199             {
16200             __A = _mm512_mask_mov_ps (_mm512_set1_ps (1.0f), __U, __A);
16201             __MM512_REDUCE_OP (*);
16202             }
16203              
16204             #undef __MM512_REDUCE_OP
16205             #define __MM512_REDUCE_OP(op) \
16206             __m256 __T1 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 1); \
16207             __m256 __T2 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 0); \
16208             __m256 __T3 = _mm256_##op (__T1, __T2); \
16209             __m128 __T4 = _mm256_extractf128_ps (__T3, 1); \
16210             __m128 __T5 = _mm256_extractf128_ps (__T3, 0); \
16211             __m128 __T6 = _mm_##op (__T4, __T5); \
16212             __m128 __T7 = __builtin_shuffle (__T6, (__v4si) { 2, 3, 0, 1 }); \
16213             __m128 __T8 = _mm_##op (__T6, __T7); \
16214             __m128 __T9 = __builtin_shuffle (__T8, (__v4si) { 1, 0, 1, 0 }); \
16215             __m128 __T10 = _mm_##op (__T8, __T9); \
16216             return __T10[0]
16217              
16218             extern __inline float
16219             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16220             _mm512_reduce_min_ps (__m512 __A)
16221             {
16222             __MM512_REDUCE_OP (min_ps);
16223             }
16224              
16225             extern __inline float
16226             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16227             _mm512_reduce_max_ps (__m512 __A)
16228             {
16229             __MM512_REDUCE_OP (max_ps);
16230             }
16231              
16232             extern __inline float
16233             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16234             _mm512_mask_reduce_min_ps (__mmask16 __U, __m512 __A)
16235             {
16236             __A = _mm512_mask_mov_ps (_mm512_set1_ps (__builtin_inff ()), __U, __A);
16237             __MM512_REDUCE_OP (min_ps);
16238             }
16239              
16240             extern __inline float
16241             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16242             _mm512_mask_reduce_max_ps (__mmask16 __U, __m512 __A)
16243             {
16244             __A = _mm512_mask_mov_ps (_mm512_set1_ps (-__builtin_inff ()), __U, __A);
16245             __MM512_REDUCE_OP (max_ps);
16246             }
16247              
16248             #undef __MM512_REDUCE_OP
16249             #define __MM512_REDUCE_OP(op) \
16250             __v4di __T1 = (__v4di) _mm512_extracti64x4_epi64 (__A, 1); \
16251             __v4di __T2 = (__v4di) _mm512_extracti64x4_epi64 (__A, 0); \
16252             __m256i __T3 = (__m256i) (__T1 op __T2); \
16253             __v2di __T4 = (__v2di) _mm256_extracti128_si256 (__T3, 1); \
16254             __v2di __T5 = (__v2di) _mm256_extracti128_si256 (__T3, 0); \
16255             __v2di __T6 = __T4 op __T5; \
16256             return __T6[0] op __T6[1]
16257              
16258             extern __inline long long
16259             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16260             _mm512_reduce_add_epi64 (__m512i __A)
16261             {
16262             __MM512_REDUCE_OP (+);
16263             }
16264              
16265             extern __inline long long
16266             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16267             _mm512_reduce_mul_epi64 (__m512i __A)
16268             {
16269             __MM512_REDUCE_OP (*);
16270             }
16271              
16272             extern __inline long long
16273             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16274             _mm512_reduce_and_epi64 (__m512i __A)
16275             {
16276             __MM512_REDUCE_OP (&);
16277             }
16278              
16279             extern __inline long long
16280             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16281             _mm512_reduce_or_epi64 (__m512i __A)
16282             {
16283             __MM512_REDUCE_OP (|);
16284             }
16285              
16286             extern __inline long long
16287             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16288             _mm512_mask_reduce_add_epi64 (__mmask8 __U, __m512i __A)
16289             {
16290             __A = _mm512_maskz_mov_epi64 (__U, __A);
16291             __MM512_REDUCE_OP (+);
16292             }
16293              
16294             extern __inline long long
16295             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16296             _mm512_mask_reduce_mul_epi64 (__mmask8 __U, __m512i __A)
16297             {
16298             __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (1LL), __U, __A);
16299             __MM512_REDUCE_OP (*);
16300             }
16301              
16302             extern __inline long long
16303             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16304             _mm512_mask_reduce_and_epi64 (__mmask8 __U, __m512i __A)
16305             {
16306             __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (~0LL), __U, __A);
16307             __MM512_REDUCE_OP (&);
16308             }
16309              
16310             extern __inline long long
16311             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16312             _mm512_mask_reduce_or_epi64 (__mmask8 __U, __m512i __A)
16313             {
16314             __A = _mm512_maskz_mov_epi64 (__U, __A);
16315             __MM512_REDUCE_OP (|);
16316             }
16317              
16318             #undef __MM512_REDUCE_OP
16319             #define __MM512_REDUCE_OP(op) \
16320             __m512i __T1 = _mm512_shuffle_i64x2 (__A, __A, 0x4e); \
16321             __m512i __T2 = _mm512_##op (__A, __T1); \
16322             __m512i __T3 \
16323             = (__m512i) __builtin_shuffle ((__v8di) __T2, \
16324             (__v8di) { 2, 3, 0, 1, 6, 7, 4, 5 });\
16325             __m512i __T4 = _mm512_##op (__T2, __T3); \
16326             __m512i __T5 \
16327             = (__m512i) __builtin_shuffle ((__v8di) __T4, \
16328             (__v8di) { 1, 0, 3, 2, 5, 4, 7, 6 });\
16329             __v8di __T6 = (__v8di) _mm512_##op (__T4, __T5); \
16330             return __T6[0]
16331              
16332             extern __inline long long
16333             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16334             _mm512_reduce_min_epi64 (__m512i __A)
16335             {
16336             __MM512_REDUCE_OP (min_epi64);
16337             }
16338              
16339             extern __inline long long
16340             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16341             _mm512_reduce_max_epi64 (__m512i __A)
16342             {
16343             __MM512_REDUCE_OP (max_epi64);
16344             }
16345              
16346             extern __inline long long
16347             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16348             _mm512_mask_reduce_min_epi64 (__mmask8 __U, __m512i __A)
16349             {
16350             __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (__LONG_LONG_MAX__),
16351             __U, __A);
16352             __MM512_REDUCE_OP (min_epi64);
16353             }
16354              
16355             extern __inline long long
16356             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16357             _mm512_mask_reduce_max_epi64 (__mmask8 __U, __m512i __A)
16358             {
16359             __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (-__LONG_LONG_MAX__ - 1),
16360             __U, __A);
16361             __MM512_REDUCE_OP (max_epi64);
16362             }
16363              
16364             extern __inline unsigned long long
16365             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16366             _mm512_reduce_min_epu64 (__m512i __A)
16367             {
16368             __MM512_REDUCE_OP (min_epu64);
16369             }
16370              
16371             extern __inline unsigned long long
16372             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16373             _mm512_reduce_max_epu64 (__m512i __A)
16374             {
16375             __MM512_REDUCE_OP (max_epu64);
16376             }
16377              
16378             extern __inline unsigned long long
16379             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16380             _mm512_mask_reduce_min_epu64 (__mmask8 __U, __m512i __A)
16381             {
16382             __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (~0LL), __U, __A);
16383             __MM512_REDUCE_OP (min_epu64);
16384             }
16385              
16386             extern __inline unsigned long long
16387             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16388             _mm512_mask_reduce_max_epu64 (__mmask8 __U, __m512i __A)
16389             {
16390             __A = _mm512_maskz_mov_epi64 (__U, __A);
16391             __MM512_REDUCE_OP (max_epu64);
16392             }
16393              
16394             #undef __MM512_REDUCE_OP
16395             #define __MM512_REDUCE_OP(op) \
16396             __m256d __T1 = (__m256d) _mm512_extractf64x4_pd (__A, 1); \
16397             __m256d __T2 = (__m256d) _mm512_extractf64x4_pd (__A, 0); \
16398             __m256d __T3 = __T1 op __T2; \
16399             __m128d __T4 = _mm256_extractf128_pd (__T3, 1); \
16400             __m128d __T5 = _mm256_extractf128_pd (__T3, 0); \
16401             __m128d __T6 = __T4 op __T5; \
16402             return __T6[0] op __T6[1]
16403              
16404             extern __inline double
16405             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16406             _mm512_reduce_add_pd (__m512d __A)
16407             {
16408             __MM512_REDUCE_OP (+);
16409             }
16410              
16411             extern __inline double
16412             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16413             _mm512_reduce_mul_pd (__m512d __A)
16414             {
16415             __MM512_REDUCE_OP (*);
16416             }
16417              
16418             extern __inline double
16419             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16420             _mm512_mask_reduce_add_pd (__mmask8 __U, __m512d __A)
16421             {
16422             __A = _mm512_maskz_mov_pd (__U, __A);
16423             __MM512_REDUCE_OP (+);
16424             }
16425              
16426             extern __inline double
16427             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16428             _mm512_mask_reduce_mul_pd (__mmask8 __U, __m512d __A)
16429             {
16430             __A = _mm512_mask_mov_pd (_mm512_set1_pd (1.0), __U, __A);
16431             __MM512_REDUCE_OP (*);
16432             }
16433              
16434             #undef __MM512_REDUCE_OP
16435             #define __MM512_REDUCE_OP(op) \
16436             __m256d __T1 = (__m256d) _mm512_extractf64x4_pd (__A, 1); \
16437             __m256d __T2 = (__m256d) _mm512_extractf64x4_pd (__A, 0); \
16438             __m256d __T3 = _mm256_##op (__T1, __T2); \
16439             __m128d __T4 = _mm256_extractf128_pd (__T3, 1); \
16440             __m128d __T5 = _mm256_extractf128_pd (__T3, 0); \
16441             __m128d __T6 = _mm_##op (__T4, __T5); \
16442             __m128d __T7 = (__m128d) __builtin_shuffle (__T6, (__v2di) { 1, 0 }); \
16443             __m128d __T8 = _mm_##op (__T6, __T7); \
16444             return __T8[0]
16445              
16446             extern __inline double
16447             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16448             _mm512_reduce_min_pd (__m512d __A)
16449             {
16450             __MM512_REDUCE_OP (min_pd);
16451             }
16452              
16453             extern __inline double
16454             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16455             _mm512_reduce_max_pd (__m512d __A)
16456             {
16457             __MM512_REDUCE_OP (max_pd);
16458             }
16459              
16460             extern __inline double
16461             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16462             _mm512_mask_reduce_min_pd (__mmask8 __U, __m512d __A)
16463             {
16464             __A = _mm512_mask_mov_pd (_mm512_set1_pd (__builtin_inf ()), __U, __A);
16465             __MM512_REDUCE_OP (min_pd);
16466             }
16467              
16468             extern __inline double
16469             __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
16470             _mm512_mask_reduce_max_pd (__mmask8 __U, __m512d __A)
16471             {
16472             __A = _mm512_mask_mov_pd (_mm512_set1_pd (-__builtin_inf ()), __U, __A);
16473             __MM512_REDUCE_OP (max_pd);
16474             }
16475              
16476             #undef __MM512_REDUCE_OP
16477              
16478             #ifdef __DISABLE_AVX512F__
16479             #undef __DISABLE_AVX512F__
16480             #pragma GCC pop_options
16481             #endif /* __DISABLE_AVX512F__ */
16482              
16483             #endif /* _AVX512FINTRIN_H_INCLUDED */