avx512fintrin.h revision 296417
1296417Sdim/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
2277325Sdim *
3277325Sdim * Permission is hereby granted, free of charge, to any person obtaining a copy
4277325Sdim * of this software and associated documentation files (the "Software"), to deal
5277325Sdim * in the Software without restriction, including without limitation the rights
6277325Sdim * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7277325Sdim * copies of the Software, and to permit persons to whom the Software is
8277325Sdim * furnished to do so, subject to the following conditions:
9277325Sdim *
10277325Sdim * The above copyright notice and this permission notice shall be included in
11277325Sdim * all copies or substantial portions of the Software.
12277325Sdim *
13277325Sdim * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14277325Sdim * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15277325Sdim * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16277325Sdim * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17277325Sdim * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18277325Sdim * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19277325Sdim * THE SOFTWARE.
20277325Sdim *
21277325Sdim *===-----------------------------------------------------------------------===
22277325Sdim */
23277325Sdim#ifndef __IMMINTRIN_H
24277325Sdim#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25277325Sdim#endif
26277325Sdim
27277325Sdim#ifndef __AVX512FINTRIN_H
28277325Sdim#define __AVX512FINTRIN_H
29277325Sdim
30277325Sdimtypedef double __v8df __attribute__((__vector_size__(64)));
31277325Sdimtypedef float __v16sf __attribute__((__vector_size__(64)));
32277325Sdimtypedef long long __v8di __attribute__((__vector_size__(64)));
33277325Sdimtypedef int __v16si __attribute__((__vector_size__(64)));
34277325Sdim
35277325Sdimtypedef float __m512 __attribute__((__vector_size__(64)));
36277325Sdimtypedef double __m512d __attribute__((__vector_size__(64)));
37277325Sdimtypedef long long __m512i __attribute__((__vector_size__(64)));
38277325Sdim
39277325Sdimtypedef unsigned char __mmask8;
40277325Sdimtypedef unsigned short __mmask16;
41277325Sdim
42277325Sdim/* Rounding mode macros.  */
43277325Sdim#define _MM_FROUND_TO_NEAREST_INT   0x00
44277325Sdim#define _MM_FROUND_TO_NEG_INF       0x01
45277325Sdim#define _MM_FROUND_TO_POS_INF       0x02
46277325Sdim#define _MM_FROUND_TO_ZERO          0x03
47277325Sdim#define _MM_FROUND_CUR_DIRECTION    0x04
48277325Sdim
49288943Sdim/* Define the default attributes for the functions in this file. */
50296417Sdim#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
51288943Sdim
52277325Sdim/* Create vectors with repeated elements */
53277325Sdim
54288943Sdimstatic  __inline __m512i __DEFAULT_FN_ATTRS
55277325Sdim_mm512_setzero_si512(void)
56277325Sdim{
57277325Sdim  return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
58277325Sdim}
59277325Sdim
60296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
61296417Sdim_mm512_undefined_pd()
62296417Sdim{
63296417Sdim  return (__m512d)__builtin_ia32_undef512();
64296417Sdim}
65296417Sdim
66296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
67296417Sdim_mm512_undefined()
68296417Sdim{
69296417Sdim  return (__m512)__builtin_ia32_undef512();
70296417Sdim}
71296417Sdim
72296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
73296417Sdim_mm512_undefined_ps()
74296417Sdim{
75296417Sdim  return (__m512)__builtin_ia32_undef512();
76296417Sdim}
77296417Sdim
78296417Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
79296417Sdim_mm512_undefined_epi32()
80296417Sdim{
81296417Sdim  return (__m512i)__builtin_ia32_undef512();
82296417Sdim}
83296417Sdim
84288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
85277325Sdim_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
86277325Sdim{
87277325Sdim  return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
88277325Sdim                 (__v16si)
89277325Sdim                 _mm512_setzero_si512 (),
90277325Sdim                 __M);
91277325Sdim}
92277325Sdim
93288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
94277325Sdim_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
95277325Sdim{
96277325Sdim#ifdef __x86_64__
97277325Sdim  return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
98277325Sdim                 (__v8di)
99277325Sdim                 _mm512_setzero_si512 (),
100277325Sdim                 __M);
101277325Sdim#else
102277325Sdim  return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
103277325Sdim                 (__v8di)
104277325Sdim                 _mm512_setzero_si512 (),
105277325Sdim                 __M);
106277325Sdim#endif
107277325Sdim}
108277325Sdim
109288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
110277325Sdim_mm512_setzero_ps(void)
111277325Sdim{
112277325Sdim  return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
113277325Sdim                   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
114277325Sdim}
115288943Sdimstatic  __inline __m512d __DEFAULT_FN_ATTRS
116277325Sdim_mm512_setzero_pd(void)
117277325Sdim{
118277325Sdim  return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
119277325Sdim}
120277325Sdim
121288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
122277325Sdim_mm512_set1_ps(float __w)
123277325Sdim{
124277325Sdim  return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
125277325Sdim                   __w, __w, __w, __w, __w, __w, __w, __w  };
126277325Sdim}
127277325Sdim
128288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
129277325Sdim_mm512_set1_pd(double __w)
130277325Sdim{
131277325Sdim  return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
132277325Sdim}
133277325Sdim
134288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
135277325Sdim_mm512_set1_epi32(int __s)
136277325Sdim{
137277325Sdim  return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
138277325Sdim                             __s, __s, __s, __s, __s, __s, __s, __s };
139277325Sdim}
140277325Sdim
141288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
142277325Sdim_mm512_set1_epi64(long long __d)
143277325Sdim{
144277325Sdim  return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
145277325Sdim}
146277325Sdim
147288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
148277325Sdim_mm512_broadcastss_ps(__m128 __X)
149277325Sdim{
150277325Sdim  float __f = __X[0];
151277325Sdim  return (__v16sf){ __f, __f, __f, __f,
152277325Sdim                    __f, __f, __f, __f,
153277325Sdim                    __f, __f, __f, __f,
154277325Sdim                    __f, __f, __f, __f };
155277325Sdim}
156277325Sdim
157288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
158277325Sdim_mm512_broadcastsd_pd(__m128d __X)
159277325Sdim{
160277325Sdim  double __d = __X[0];
161277325Sdim  return (__v8df){ __d, __d, __d, __d,
162277325Sdim                   __d, __d, __d, __d };
163277325Sdim}
164277325Sdim
165277325Sdim/* Cast between vector types */
166277325Sdim
167288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
168277325Sdim_mm512_castpd256_pd512(__m256d __a)
169277325Sdim{
170277325Sdim  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
171277325Sdim}
172277325Sdim
173288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
174277325Sdim_mm512_castps256_ps512(__m256 __a)
175277325Sdim{
176277325Sdim  return __builtin_shufflevector(__a, __a, 0,  1,  2,  3,  4,  5,  6,  7,
177277325Sdim                                          -1, -1, -1, -1, -1, -1, -1, -1);
178277325Sdim}
179277325Sdim
180288943Sdimstatic __inline __m128d __DEFAULT_FN_ATTRS
181277325Sdim_mm512_castpd512_pd128(__m512d __a)
182277325Sdim{
183277325Sdim  return __builtin_shufflevector(__a, __a, 0, 1);
184277325Sdim}
185277325Sdim
186288943Sdimstatic __inline __m128 __DEFAULT_FN_ATTRS
187277325Sdim_mm512_castps512_ps128(__m512 __a)
188277325Sdim{
189277325Sdim  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
190277325Sdim}
191277325Sdim
192288943Sdim/* Bitwise operators */
193288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
194288943Sdim_mm512_and_epi32(__m512i __a, __m512i __b)
195288943Sdim{
196288943Sdim  return __a & __b;
197288943Sdim}
198288943Sdim
199288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
200288943Sdim_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
201288943Sdim{
202288943Sdim  return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
203288943Sdim              (__v16si) __b,
204288943Sdim              (__v16si) __src,
205288943Sdim              (__mmask16) __k);
206288943Sdim}
207288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
208288943Sdim_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
209288943Sdim{
210288943Sdim  return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
211288943Sdim              (__v16si) __b,
212288943Sdim              (__v16si)
213288943Sdim              _mm512_setzero_si512 (),
214288943Sdim              (__mmask16) __k);
215288943Sdim}
216288943Sdim
217288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
218288943Sdim_mm512_and_epi64(__m512i __a, __m512i __b)
219288943Sdim{
220288943Sdim  return __a & __b;
221288943Sdim}
222288943Sdim
223288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
224288943Sdim_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
225288943Sdim{
226288943Sdim  return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
227288943Sdim              (__v8di) __b,
228288943Sdim              (__v8di) __src,
229288943Sdim              (__mmask8) __k);
230288943Sdim}
231288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
232288943Sdim_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
233288943Sdim{
234288943Sdim  return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
235288943Sdim              (__v8di) __b,
236288943Sdim              (__v8di)
237288943Sdim              _mm512_setzero_si512 (),
238288943Sdim              (__mmask8) __k);
239288943Sdim}
240288943Sdim
241288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
242288943Sdim_mm512_andnot_epi32 (__m512i __A, __m512i __B)
243288943Sdim{
244288943Sdim  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
245288943Sdim              (__v16si) __B,
246288943Sdim              (__v16si)
247288943Sdim              _mm512_setzero_si512 (),
248288943Sdim              (__mmask16) -1);
249288943Sdim}
250288943Sdim
251288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
252288943Sdim_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
253288943Sdim{
254288943Sdim  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
255288943Sdim              (__v16si) __B,
256288943Sdim              (__v16si) __W,
257288943Sdim              (__mmask16) __U);
258288943Sdim}
259288943Sdim
260288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
261288943Sdim_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
262288943Sdim{
263288943Sdim  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
264288943Sdim              (__v16si) __B,
265288943Sdim              (__v16si)
266288943Sdim              _mm512_setzero_si512 (),
267288943Sdim              (__mmask16) __U);
268288943Sdim}
269288943Sdim
270288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
271288943Sdim_mm512_andnot_epi64 (__m512i __A, __m512i __B)
272288943Sdim{
273288943Sdim  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
274288943Sdim              (__v8di) __B,
275288943Sdim              (__v8di)
276288943Sdim              _mm512_setzero_si512 (),
277288943Sdim              (__mmask8) -1);
278288943Sdim}
279288943Sdim
280288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
281288943Sdim_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
282288943Sdim{
283288943Sdim  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
284288943Sdim              (__v8di) __B,
285288943Sdim              (__v8di) __W, __U);
286288943Sdim}
287288943Sdim
288288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
289288943Sdim_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
290288943Sdim{
291288943Sdim  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
292288943Sdim              (__v8di) __B,
293288943Sdim              (__v8di)
294288943Sdim              _mm512_setzero_pd (),
295288943Sdim              __U);
296288943Sdim}
297288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
298288943Sdim_mm512_or_epi32(__m512i __a, __m512i __b)
299288943Sdim{
300288943Sdim  return __a | __b;
301288943Sdim}
302288943Sdim
303288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
304288943Sdim_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
305288943Sdim{
306288943Sdim  return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
307288943Sdim              (__v16si) __b,
308288943Sdim              (__v16si) __src,
309288943Sdim              (__mmask16) __k);
310288943Sdim}
311288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
312288943Sdim_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
313288943Sdim{
314288943Sdim  return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
315288943Sdim              (__v16si) __b,
316288943Sdim              (__v16si)
317288943Sdim              _mm512_setzero_si512 (),
318288943Sdim              (__mmask16) __k);
319288943Sdim}
320288943Sdim
321288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
322288943Sdim_mm512_or_epi64(__m512i __a, __m512i __b)
323288943Sdim{
324288943Sdim  return __a | __b;
325288943Sdim}
326288943Sdim
327288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
328288943Sdim_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
329288943Sdim{
330288943Sdim  return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
331288943Sdim              (__v8di) __b,
332288943Sdim              (__v8di) __src,
333288943Sdim              (__mmask8) __k);
334288943Sdim}
335288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
336288943Sdim_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
337288943Sdim{
338288943Sdim  return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
339288943Sdim              (__v8di) __b,
340288943Sdim              (__v8di)
341288943Sdim              _mm512_setzero_si512 (),
342288943Sdim              (__mmask8) __k);
343288943Sdim}
344288943Sdim
345288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
346288943Sdim_mm512_xor_epi32(__m512i __a, __m512i __b)
347288943Sdim{
348288943Sdim  return __a ^ __b;
349288943Sdim}
350288943Sdim
351288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
352288943Sdim_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
353288943Sdim{
354288943Sdim  return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
355288943Sdim              (__v16si) __b,
356288943Sdim              (__v16si) __src,
357288943Sdim              (__mmask16) __k);
358288943Sdim}
359288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
360288943Sdim_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
361288943Sdim{
362288943Sdim  return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
363288943Sdim              (__v16si) __b,
364288943Sdim              (__v16si)
365288943Sdim              _mm512_setzero_si512 (),
366288943Sdim              (__mmask16) __k);
367288943Sdim}
368288943Sdim
369288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
370288943Sdim_mm512_xor_epi64(__m512i __a, __m512i __b)
371288943Sdim{
372288943Sdim  return __a ^ __b;
373288943Sdim}
374288943Sdim
375288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
376288943Sdim_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
377288943Sdim{
378288943Sdim  return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
379288943Sdim              (__v8di) __b,
380288943Sdim              (__v8di) __src,
381288943Sdim              (__mmask8) __k);
382288943Sdim}
383288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
384288943Sdim_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
385288943Sdim{
386288943Sdim  return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
387288943Sdim              (__v8di) __b,
388288943Sdim              (__v8di)
389288943Sdim              _mm512_setzero_si512 (),
390288943Sdim              (__mmask8) __k);
391288943Sdim}
392288943Sdim
393288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
394288943Sdim_mm512_and_si512(__m512i __a, __m512i __b)
395288943Sdim{
396288943Sdim  return __a & __b;
397288943Sdim}
398288943Sdim
399288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
400288943Sdim_mm512_or_si512(__m512i __a, __m512i __b)
401288943Sdim{
402288943Sdim  return __a | __b;
403288943Sdim}
404288943Sdim
405288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
406288943Sdim_mm512_xor_si512(__m512i __a, __m512i __b)
407288943Sdim{
408288943Sdim  return __a ^ __b;
409288943Sdim}
410277325Sdim/* Arithmetic */
411277325Sdim
412288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
413277325Sdim_mm512_add_pd(__m512d __a, __m512d __b)
414277325Sdim{
415277325Sdim  return __a + __b;
416277325Sdim}
417277325Sdim
418288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
419277325Sdim_mm512_add_ps(__m512 __a, __m512 __b)
420277325Sdim{
421277325Sdim  return __a + __b;
422277325Sdim}
423277325Sdim
424288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
425277325Sdim_mm512_mul_pd(__m512d __a, __m512d __b)
426277325Sdim{
427277325Sdim  return __a * __b;
428277325Sdim}
429277325Sdim
430288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
431277325Sdim_mm512_mul_ps(__m512 __a, __m512 __b)
432277325Sdim{
433277325Sdim  return __a * __b;
434277325Sdim}
435277325Sdim
436288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
437277325Sdim_mm512_sub_pd(__m512d __a, __m512d __b)
438277325Sdim{
439277325Sdim  return __a - __b;
440277325Sdim}
441277325Sdim
442288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
443277325Sdim_mm512_sub_ps(__m512 __a, __m512 __b)
444277325Sdim{
445277325Sdim  return __a - __b;
446277325Sdim}
447277325Sdim
448288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
449288943Sdim_mm512_add_epi64 (__m512i __A, __m512i __B)
450288943Sdim{
451288943Sdim  return (__m512i) ((__v8di) __A + (__v8di) __B);
452288943Sdim}
453288943Sdim
454288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
455288943Sdim_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
456288943Sdim{
457288943Sdim  return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
458288943Sdim             (__v8di) __B,
459288943Sdim             (__v8di) __W,
460288943Sdim             (__mmask8) __U);
461288943Sdim}
462288943Sdim
463288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
464288943Sdim_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
465288943Sdim{
466288943Sdim  return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
467288943Sdim             (__v8di) __B,
468288943Sdim             (__v8di)
469288943Sdim             _mm512_setzero_si512 (),
470288943Sdim             (__mmask8) __U);
471288943Sdim}
472288943Sdim
473288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
474288943Sdim_mm512_sub_epi64 (__m512i __A, __m512i __B)
475288943Sdim{
476288943Sdim  return (__m512i) ((__v8di) __A - (__v8di) __B);
477288943Sdim}
478288943Sdim
479288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
480288943Sdim_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
481288943Sdim{
482288943Sdim  return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
483288943Sdim             (__v8di) __B,
484288943Sdim             (__v8di) __W,
485288943Sdim             (__mmask8) __U);
486288943Sdim}
487288943Sdim
488288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
489288943Sdim_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
490288943Sdim{
491288943Sdim  return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
492288943Sdim             (__v8di) __B,
493288943Sdim             (__v8di)
494288943Sdim             _mm512_setzero_si512 (),
495288943Sdim             (__mmask8) __U);
496288943Sdim}
497288943Sdim
498288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
499288943Sdim_mm512_add_epi32 (__m512i __A, __m512i __B)
500288943Sdim{
501288943Sdim  return (__m512i) ((__v16si) __A + (__v16si) __B);
502288943Sdim}
503288943Sdim
504288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
505288943Sdim_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
506288943Sdim{
507288943Sdim  return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
508288943Sdim             (__v16si) __B,
509288943Sdim             (__v16si) __W,
510288943Sdim             (__mmask16) __U);
511288943Sdim}
512288943Sdim
513288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
514288943Sdim_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
515288943Sdim{
516288943Sdim  return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
517288943Sdim             (__v16si) __B,
518288943Sdim             (__v16si)
519288943Sdim             _mm512_setzero_si512 (),
520288943Sdim             (__mmask16) __U);
521288943Sdim}
522288943Sdim
523288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
524288943Sdim_mm512_sub_epi32 (__m512i __A, __m512i __B)
525288943Sdim{
526288943Sdim  return (__m512i) ((__v16si) __A - (__v16si) __B);
527288943Sdim}
528288943Sdim
529288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
530288943Sdim_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
531288943Sdim{
532288943Sdim  return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
533288943Sdim             (__v16si) __B,
534288943Sdim             (__v16si) __W,
535288943Sdim             (__mmask16) __U);
536288943Sdim}
537288943Sdim
538288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
539288943Sdim_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
540288943Sdim{
541288943Sdim  return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
542288943Sdim             (__v16si) __B,
543288943Sdim             (__v16si)
544288943Sdim             _mm512_setzero_si512 (),
545288943Sdim             (__mmask16) __U);
546288943Sdim}
547288943Sdim
548288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
549277325Sdim_mm512_max_pd(__m512d __A, __m512d __B)
550277325Sdim{
551277325Sdim  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
552277325Sdim             (__v8df) __B,
553277325Sdim             (__v8df)
554277325Sdim             _mm512_setzero_pd (),
555277325Sdim             (__mmask8) -1,
556277325Sdim             _MM_FROUND_CUR_DIRECTION);
557277325Sdim}
558277325Sdim
559288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
560277325Sdim_mm512_max_ps(__m512 __A, __m512 __B)
561277325Sdim{
562277325Sdim  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
563277325Sdim            (__v16sf) __B,
564277325Sdim            (__v16sf)
565277325Sdim            _mm512_setzero_ps (),
566277325Sdim            (__mmask16) -1,
567277325Sdim            _MM_FROUND_CUR_DIRECTION);
568277325Sdim}
569277325Sdim
570296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
571296417Sdim_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
572296417Sdim  return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A,
573296417Sdim                (__v4sf) __B,
574296417Sdim                (__v4sf) __W,
575296417Sdim                (__mmask8) __U,
576296417Sdim                _MM_FROUND_CUR_DIRECTION);
577296417Sdim}
578296417Sdim
579296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
580296417Sdim_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
581296417Sdim  return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A,
582296417Sdim                (__v4sf) __B,
583296417Sdim                (__v4sf)  _mm_setzero_ps (),
584296417Sdim                (__mmask8) __U,
585296417Sdim                _MM_FROUND_CUR_DIRECTION);
586296417Sdim}
587296417Sdim
588296417Sdim#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
589296417Sdim  (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, (__v4sf) __B, \
590296417Sdim                (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
591296417Sdim
592296417Sdim#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
593296417Sdim  (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, (__v4sf) __B, \
594296417Sdim                (__v4sf)  __W, (__mmask8) __U,__R); })
595296417Sdim
596296417Sdim#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
597296417Sdim  (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, (__v4sf) __B, \
598296417Sdim                (__v4sf)  _mm_setzero_ps(), (__mmask8) __U,__R); })
599296417Sdim
600296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
601296417Sdim_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
602296417Sdim  return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A,
603296417Sdim                (__v2df) __B,
604296417Sdim                (__v2df) __W,
605296417Sdim                (__mmask8) __U,
606296417Sdim                _MM_FROUND_CUR_DIRECTION);
607296417Sdim}
608296417Sdim
609296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
610296417Sdim_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
611296417Sdim  return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A,
612296417Sdim                (__v2df) __B,
613296417Sdim                (__v2df)  _mm_setzero_pd (),
614296417Sdim                (__mmask8) __U,
615296417Sdim                _MM_FROUND_CUR_DIRECTION);
616296417Sdim}
617296417Sdim
618296417Sdim#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
619296417Sdim  (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, (__v2df) __B, \
620296417Sdim                (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
621296417Sdim
622296417Sdim#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
623296417Sdim  (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, (__v2df) __B, \
624296417Sdim                (__v2df)  __W, (__mmask8) __U,__R); })
625296417Sdim
626296417Sdim#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
627296417Sdim  (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, (__v2df) __B, \
628296417Sdim                (__v2df)  _mm_setzero_pd(), (__mmask8) __U,__R); })
629296417Sdim
630277325Sdimstatic __inline __m512i
631288943Sdim__DEFAULT_FN_ATTRS
632277325Sdim_mm512_max_epi32(__m512i __A, __m512i __B)
633277325Sdim{
634277325Sdim  return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
635277325Sdim              (__v16si) __B,
636277325Sdim              (__v16si)
637277325Sdim              _mm512_setzero_si512 (),
638277325Sdim              (__mmask16) -1);
639277325Sdim}
640277325Sdim
641288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
642277325Sdim_mm512_max_epu32(__m512i __A, __m512i __B)
643277325Sdim{
644277325Sdim  return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
645277325Sdim              (__v16si) __B,
646277325Sdim              (__v16si)
647277325Sdim              _mm512_setzero_si512 (),
648277325Sdim              (__mmask16) -1);
649277325Sdim}
650277325Sdim
651288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
652277325Sdim_mm512_max_epi64(__m512i __A, __m512i __B)
653277325Sdim{
654277325Sdim  return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
655277325Sdim              (__v8di) __B,
656277325Sdim              (__v8di)
657277325Sdim              _mm512_setzero_si512 (),
658277325Sdim              (__mmask8) -1);
659277325Sdim}
660277325Sdim
661288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
662277325Sdim_mm512_max_epu64(__m512i __A, __m512i __B)
663277325Sdim{
664277325Sdim  return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
665277325Sdim              (__v8di) __B,
666277325Sdim              (__v8di)
667277325Sdim              _mm512_setzero_si512 (),
668277325Sdim              (__mmask8) -1);
669277325Sdim}
670277325Sdim
671288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
672277325Sdim_mm512_min_pd(__m512d __A, __m512d __B)
673277325Sdim{
674277325Sdim  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
675277325Sdim             (__v8df) __B,
676277325Sdim             (__v8df)
677277325Sdim             _mm512_setzero_pd (),
678277325Sdim             (__mmask8) -1,
679277325Sdim             _MM_FROUND_CUR_DIRECTION);
680277325Sdim}
681277325Sdim
682288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
683277325Sdim_mm512_min_ps(__m512 __A, __m512 __B)
684277325Sdim{
685277325Sdim  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
686277325Sdim            (__v16sf) __B,
687277325Sdim            (__v16sf)
688277325Sdim            _mm512_setzero_ps (),
689277325Sdim            (__mmask16) -1,
690277325Sdim            _MM_FROUND_CUR_DIRECTION);
691277325Sdim}
692277325Sdim
693296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
694296417Sdim_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
695296417Sdim  return (__m128) __builtin_ia32_minss_round ((__v4sf) __A,
696296417Sdim                (__v4sf) __B,
697296417Sdim                (__v4sf) __W,
698296417Sdim                (__mmask8) __U,
699296417Sdim                _MM_FROUND_CUR_DIRECTION);
700296417Sdim}
701296417Sdim
702296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
703296417Sdim_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
704296417Sdim  return (__m128) __builtin_ia32_minss_round ((__v4sf) __A,
705296417Sdim                (__v4sf) __B,
706296417Sdim                (__v4sf)  _mm_setzero_ps (),
707296417Sdim                (__mmask8) __U,
708296417Sdim                _MM_FROUND_CUR_DIRECTION);
709296417Sdim}
710296417Sdim
711296417Sdim#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
712296417Sdim  (__m128) __builtin_ia32_minss_round ((__v4sf) __A, (__v4sf) __B, \
713296417Sdim                (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
714296417Sdim
715296417Sdim#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
716296417Sdim  (__m128) __builtin_ia32_minss_round ((__v4sf) __A, (__v4sf) __B, \
717296417Sdim                (__v4sf)  __W, (__mmask8) __U,__R); })
718296417Sdim
719296417Sdim#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
720296417Sdim  (__m128) __builtin_ia32_minss_round ((__v4sf) __A, (__v4sf) __B, \
721296417Sdim                (__v4sf)  _mm_setzero_ps(), (__mmask8) __U,__R); })
722296417Sdim
723296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
724296417Sdim_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
725296417Sdim  return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A,
726296417Sdim                (__v2df) __B,
727296417Sdim                (__v2df) __W,
728296417Sdim                (__mmask8) __U,
729296417Sdim                _MM_FROUND_CUR_DIRECTION);
730296417Sdim}
731296417Sdim
732296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
733296417Sdim_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
734296417Sdim  return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A,
735296417Sdim                (__v2df) __B,
736296417Sdim                (__v2df)  _mm_setzero_pd (),
737296417Sdim                (__mmask8) __U,
738296417Sdim                _MM_FROUND_CUR_DIRECTION);
739296417Sdim}
740296417Sdim
741296417Sdim#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
742296417Sdim  (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, (__v2df) __B, \
743296417Sdim                (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
744296417Sdim
745296417Sdim#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
746296417Sdim  (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, (__v2df) __B, \
747296417Sdim                (__v2df)  __W, (__mmask8) __U,__R); })
748296417Sdim
749296417Sdim#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
750296417Sdim  (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, (__v2df) __B, \
751296417Sdim                (__v2df)  _mm_setzero_pd(), (__mmask8) __U,__R); })
752296417Sdim
753277325Sdimstatic __inline __m512i
754288943Sdim__DEFAULT_FN_ATTRS
755277325Sdim_mm512_min_epi32(__m512i __A, __m512i __B)
756277325Sdim{
757277325Sdim  return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
758277325Sdim              (__v16si) __B,
759277325Sdim              (__v16si)
760277325Sdim              _mm512_setzero_si512 (),
761277325Sdim              (__mmask16) -1);
762277325Sdim}
763277325Sdim
764288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
765277325Sdim_mm512_min_epu32(__m512i __A, __m512i __B)
766277325Sdim{
767277325Sdim  return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
768277325Sdim              (__v16si) __B,
769277325Sdim              (__v16si)
770277325Sdim              _mm512_setzero_si512 (),
771277325Sdim              (__mmask16) -1);
772277325Sdim}
773277325Sdim
774288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
775277325Sdim_mm512_min_epi64(__m512i __A, __m512i __B)
776277325Sdim{
777277325Sdim  return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
778277325Sdim              (__v8di) __B,
779277325Sdim              (__v8di)
780277325Sdim              _mm512_setzero_si512 (),
781277325Sdim              (__mmask8) -1);
782277325Sdim}
783277325Sdim
784288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
785277325Sdim_mm512_min_epu64(__m512i __A, __m512i __B)
786277325Sdim{
787277325Sdim  return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
788277325Sdim              (__v8di) __B,
789277325Sdim              (__v8di)
790277325Sdim              _mm512_setzero_si512 (),
791277325Sdim              (__mmask8) -1);
792277325Sdim}
793277325Sdim
794288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
795277325Sdim_mm512_mul_epi32(__m512i __X, __m512i __Y)
796277325Sdim{
797277325Sdim  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
798277325Sdim              (__v16si) __Y,
799277325Sdim              (__v8di)
800277325Sdim              _mm512_setzero_si512 (),
801277325Sdim              (__mmask8) -1);
802277325Sdim}
803277325Sdim
804288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
805288943Sdim_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
806288943Sdim{
807288943Sdim  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
808288943Sdim              (__v16si) __Y,
809288943Sdim              (__v8di) __W, __M);
810288943Sdim}
811288943Sdim
812288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
813288943Sdim_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
814288943Sdim{
815288943Sdim  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
816288943Sdim              (__v16si) __Y,
817288943Sdim              (__v8di)
818288943Sdim              _mm512_setzero_si512 (),
819288943Sdim              __M);
820288943Sdim}
821288943Sdim
822288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
823277325Sdim_mm512_mul_epu32(__m512i __X, __m512i __Y)
824277325Sdim{
825277325Sdim  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
826277325Sdim               (__v16si) __Y,
827277325Sdim               (__v8di)
828277325Sdim               _mm512_setzero_si512 (),
829277325Sdim               (__mmask8) -1);
830277325Sdim}
831277325Sdim
832288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
833288943Sdim_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
834288943Sdim{
835288943Sdim  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
836288943Sdim               (__v16si) __Y,
837288943Sdim               (__v8di) __W, __M);
838288943Sdim}
839288943Sdim
840288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
841288943Sdim_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
842288943Sdim{
843288943Sdim  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
844288943Sdim               (__v16si) __Y,
845288943Sdim               (__v8di)
846288943Sdim               _mm512_setzero_si512 (),
847288943Sdim               __M);
848288943Sdim}
849288943Sdim
850288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
851288943Sdim_mm512_mullo_epi32 (__m512i __A, __m512i __B)
852288943Sdim{
853288943Sdim  return (__m512i) ((__v16si) __A * (__v16si) __B);
854288943Sdim}
855288943Sdim
856288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
857288943Sdim_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
858288943Sdim{
859288943Sdim  return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
860288943Sdim              (__v16si) __B,
861288943Sdim              (__v16si)
862288943Sdim              _mm512_setzero_si512 (),
863288943Sdim              __M);
864288943Sdim}
865288943Sdim
866288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
867288943Sdim_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
868288943Sdim{
869288943Sdim  return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
870288943Sdim              (__v16si) __B,
871288943Sdim              (__v16si) __W, __M);
872288943Sdim}
873288943Sdim
874288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
875296417Sdim_mm512_sqrt_pd(__m512d __a)
876277325Sdim{
877296417Sdim  return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
878277325Sdim                                                (__v8df) _mm512_setzero_pd (),
879277325Sdim                                                (__mmask8) -1,
880277325Sdim                                                _MM_FROUND_CUR_DIRECTION);
881277325Sdim}
882277325Sdim
883288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
884296417Sdim_mm512_sqrt_ps(__m512 __a)
885277325Sdim{
886296417Sdim  return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
887277325Sdim                                               (__v16sf) _mm512_setzero_ps (),
888277325Sdim                                               (__mmask16) -1,
889277325Sdim                                               _MM_FROUND_CUR_DIRECTION);
890277325Sdim}
891277325Sdim
892288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
893277325Sdim_mm512_rsqrt14_pd(__m512d __A)
894277325Sdim{
895277325Sdim  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
896277325Sdim                 (__v8df)
897277325Sdim                 _mm512_setzero_pd (),
898277325Sdim                 (__mmask8) -1);}
899277325Sdim
900288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
901277325Sdim_mm512_rsqrt14_ps(__m512 __A)
902277325Sdim{
903277325Sdim  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
904277325Sdim                (__v16sf)
905277325Sdim                _mm512_setzero_ps (),
906277325Sdim                (__mmask16) -1);
907277325Sdim}
908277325Sdim
909288943Sdimstatic  __inline__ __m128 __DEFAULT_FN_ATTRS
910277325Sdim_mm_rsqrt14_ss(__m128 __A, __m128 __B)
911277325Sdim{
912296417Sdim  return (__m128) __builtin_ia32_rsqrt14ss ((__v4sf) __A,
913277325Sdim             (__v4sf) __B,
914277325Sdim             (__v4sf)
915277325Sdim             _mm_setzero_ps (),
916277325Sdim             (__mmask8) -1);
917277325Sdim}
918277325Sdim
919288943Sdimstatic  __inline__ __m128d __DEFAULT_FN_ATTRS
920277325Sdim_mm_rsqrt14_sd(__m128d __A, __m128d __B)
921277325Sdim{
922296417Sdim  return (__m128d) __builtin_ia32_rsqrt14sd ((__v2df) __A,
923277325Sdim              (__v2df) __B,
924277325Sdim              (__v2df)
925277325Sdim              _mm_setzero_pd (),
926277325Sdim              (__mmask8) -1);
927277325Sdim}
928277325Sdim
929288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
930277325Sdim_mm512_rcp14_pd(__m512d __A)
931277325Sdim{
932277325Sdim  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
933277325Sdim               (__v8df)
934277325Sdim               _mm512_setzero_pd (),
935277325Sdim               (__mmask8) -1);
936277325Sdim}
937277325Sdim
938288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
939277325Sdim_mm512_rcp14_ps(__m512 __A)
940277325Sdim{
941277325Sdim  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
942277325Sdim              (__v16sf)
943277325Sdim              _mm512_setzero_ps (),
944277325Sdim              (__mmask16) -1);
945277325Sdim}
946288943Sdimstatic  __inline__ __m128 __DEFAULT_FN_ATTRS
947277325Sdim_mm_rcp14_ss(__m128 __A, __m128 __B)
948277325Sdim{
949296417Sdim  return (__m128) __builtin_ia32_rcp14ss ((__v4sf) __A,
950277325Sdim                 (__v4sf) __B,
951277325Sdim                 (__v4sf)
952277325Sdim                 _mm_setzero_ps (),
953277325Sdim                 (__mmask8) -1);
954277325Sdim}
955277325Sdim
956288943Sdimstatic  __inline__ __m128d __DEFAULT_FN_ATTRS
957277325Sdim_mm_rcp14_sd(__m128d __A, __m128d __B)
958277325Sdim{
959296417Sdim  return (__m128d) __builtin_ia32_rcp14sd ((__v2df) __A,
960277325Sdim            (__v2df) __B,
961277325Sdim            (__v2df)
962277325Sdim            _mm_setzero_pd (),
963277325Sdim            (__mmask8) -1);
964277325Sdim}
965277325Sdim
966288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
967277325Sdim_mm512_floor_ps(__m512 __A)
968277325Sdim{
969277325Sdim  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
970277325Sdim                                                  _MM_FROUND_FLOOR,
971277325Sdim                                                  (__v16sf) __A, -1,
972277325Sdim                                                  _MM_FROUND_CUR_DIRECTION);
973277325Sdim}
974277325Sdim
975288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
976277325Sdim_mm512_floor_pd(__m512d __A)
977277325Sdim{
978277325Sdim  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
979277325Sdim                                                   _MM_FROUND_FLOOR,
980277325Sdim                                                   (__v8df) __A, -1,
981277325Sdim                                                   _MM_FROUND_CUR_DIRECTION);
982277325Sdim}
983277325Sdim
984288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
985277325Sdim_mm512_ceil_ps(__m512 __A)
986277325Sdim{
987277325Sdim  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
988277325Sdim                                                  _MM_FROUND_CEIL,
989277325Sdim                                                  (__v16sf) __A, -1,
990277325Sdim                                                  _MM_FROUND_CUR_DIRECTION);
991277325Sdim}
992277325Sdim
993288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
994277325Sdim_mm512_ceil_pd(__m512d __A)
995277325Sdim{
996277325Sdim  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
997277325Sdim                                                   _MM_FROUND_CEIL,
998277325Sdim                                                   (__v8df) __A, -1,
999277325Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1000277325Sdim}
1001277325Sdim
1002288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1003277325Sdim_mm512_abs_epi64(__m512i __A)
1004277325Sdim{
1005277325Sdim  return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1006277325Sdim             (__v8di)
1007277325Sdim             _mm512_setzero_si512 (),
1008277325Sdim             (__mmask8) -1);
1009277325Sdim}
1010277325Sdim
1011288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1012277325Sdim_mm512_abs_epi32(__m512i __A)
1013277325Sdim{
1014277325Sdim  return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1015277325Sdim             (__v16si)
1016277325Sdim             _mm512_setzero_si512 (),
1017277325Sdim             (__mmask16) -1);
1018277325Sdim}
1019277325Sdim
1020296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1021296417Sdim_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1022296417Sdim  return (__m128) __builtin_ia32_addss_round ((__v4sf) __A,
1023296417Sdim                (__v4sf) __B,
1024296417Sdim                (__v4sf) __W,
1025296417Sdim                (__mmask8) __U,
1026296417Sdim                _MM_FROUND_CUR_DIRECTION);
1027296417Sdim}
1028296417Sdim
1029296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1030296417Sdim_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1031296417Sdim  return (__m128) __builtin_ia32_addss_round ((__v4sf) __A,
1032296417Sdim                (__v4sf) __B,
1033296417Sdim                (__v4sf)  _mm_setzero_ps (),
1034296417Sdim                (__mmask8) __U,
1035296417Sdim                _MM_FROUND_CUR_DIRECTION);
1036296417Sdim}
1037296417Sdim
1038296417Sdim#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
1039296417Sdim  (__m128) __builtin_ia32_addss_round ((__v4sf) __A, (__v4sf) __B, \
1040296417Sdim                (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1041296417Sdim
1042296417Sdim#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1043296417Sdim  (__m128) __builtin_ia32_addss_round ((__v4sf) __A, (__v4sf) __B, \
1044296417Sdim                (__v4sf)  __W, (__mmask8) __U,__R); })
1045296417Sdim
1046296417Sdim#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
1047296417Sdim  (__m128) __builtin_ia32_addss_round ((__v4sf) __A, (__v4sf) __B, \
1048296417Sdim                (__v4sf)  _mm_setzero_ps(), (__mmask8) __U,__R); })
1049296417Sdim
1050296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1051296417Sdim_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1052296417Sdim  return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A,
1053296417Sdim                (__v2df) __B,
1054296417Sdim                (__v2df) __W,
1055296417Sdim                (__mmask8) __U,
1056296417Sdim                _MM_FROUND_CUR_DIRECTION);
1057296417Sdim}
1058296417Sdim
1059296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1060296417Sdim_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1061296417Sdim  return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A,
1062296417Sdim                (__v2df) __B,
1063296417Sdim                (__v2df)  _mm_setzero_pd (),
1064296417Sdim                (__mmask8) __U,
1065296417Sdim                _MM_FROUND_CUR_DIRECTION);
1066296417Sdim}
1067296417Sdim#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
1068296417Sdim  (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, (__v2df) __B, \
1069296417Sdim                (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1070296417Sdim
1071296417Sdim#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1072296417Sdim  (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, (__v2df) __B, \
1073296417Sdim                (__v2df)  __W, (__mmask8) __U,__R); })
1074296417Sdim
1075296417Sdim#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
1076296417Sdim  (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, (__v2df) __B, \
1077296417Sdim                (__v2df)  _mm_setzero_pd(), (__mmask8) __U,__R); })
1078296417Sdim
1079296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1080296417Sdim_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1081296417Sdim  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1082296417Sdim             (__v8df) __B,
1083296417Sdim             (__v8df) __W,
1084296417Sdim             (__mmask8) __U,
1085296417Sdim             _MM_FROUND_CUR_DIRECTION);
1086296417Sdim}
1087296417Sdim
1088296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1089296417Sdim_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1090296417Sdim  return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1091296417Sdim             (__v8df) __B,
1092296417Sdim             (__v8df) _mm512_setzero_pd (),
1093296417Sdim             (__mmask8) __U,
1094296417Sdim             _MM_FROUND_CUR_DIRECTION);
1095296417Sdim}
1096296417Sdim
1097296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1098296417Sdim_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1099296417Sdim  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1100296417Sdim            (__v16sf) __B,
1101296417Sdim            (__v16sf) __W,
1102296417Sdim            (__mmask16) __U,
1103296417Sdim            _MM_FROUND_CUR_DIRECTION);
1104296417Sdim}
1105296417Sdim
1106296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1107296417Sdim_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1108296417Sdim  return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1109296417Sdim            (__v16sf) __B,
1110296417Sdim            (__v16sf) _mm512_setzero_ps (),
1111296417Sdim            (__mmask16) __U,
1112296417Sdim            _MM_FROUND_CUR_DIRECTION);
1113296417Sdim}
1114296417Sdim
1115296417Sdim#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1116296417Sdim  (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1117296417Sdim               (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1118296417Sdim
1119296417Sdim#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1120296417Sdim  (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1121296417Sdim                (__v8df) __W, (__mmask8) __U, __R); })
1122296417Sdim
1123296417Sdim#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1124296417Sdim  (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1125296417Sdim                (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1126296417Sdim
1127296417Sdim#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1128296417Sdim  (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1129296417Sdim                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1130296417Sdim
1131296417Sdim#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1132296417Sdim  (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1133296417Sdim                (__v16sf) __W, (__mmask16)__U, __R); })
1134296417Sdim
1135296417Sdim#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1136296417Sdim  (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1137296417Sdim                (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1138296417Sdim
1139296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1140296417Sdim_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1141296417Sdim  return (__m128) __builtin_ia32_subss_round ((__v4sf) __A,
1142296417Sdim                (__v4sf) __B,
1143296417Sdim                (__v4sf) __W,
1144296417Sdim                (__mmask8) __U,
1145296417Sdim                _MM_FROUND_CUR_DIRECTION);
1146296417Sdim}
1147296417Sdim
1148296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1149296417Sdim_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1150296417Sdim  return (__m128) __builtin_ia32_subss_round ((__v4sf) __A,
1151296417Sdim                (__v4sf) __B,
1152296417Sdim                (__v4sf)  _mm_setzero_ps (),
1153296417Sdim                (__mmask8) __U,
1154296417Sdim                _MM_FROUND_CUR_DIRECTION);
1155296417Sdim}
1156296417Sdim#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
1157296417Sdim  (__m128) __builtin_ia32_subss_round ((__v4sf) __A, (__v4sf) __B, \
1158296417Sdim                (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1159296417Sdim
1160296417Sdim#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1161296417Sdim  (__m128) __builtin_ia32_subss_round ((__v4sf) __A, (__v4sf) __B, \
1162296417Sdim                (__v4sf)  __W, (__mmask8) __U,__R); })
1163296417Sdim
1164296417Sdim#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
1165296417Sdim  (__m128) __builtin_ia32_subss_round ((__v4sf) __A, (__v4sf) __B, \
1166296417Sdim                (__v4sf)  _mm_setzero_ps(), (__mmask8) __U,__R); })
1167296417Sdim
1168296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1169296417Sdim_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1170296417Sdim  return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A,
1171296417Sdim                (__v2df) __B,
1172296417Sdim                (__v2df) __W,
1173296417Sdim                (__mmask8) __U,
1174296417Sdim                _MM_FROUND_CUR_DIRECTION);
1175296417Sdim}
1176296417Sdim
1177296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1178296417Sdim_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1179296417Sdim  return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A,
1180296417Sdim                (__v2df) __B,
1181296417Sdim                (__v2df)  _mm_setzero_pd (),
1182296417Sdim                (__mmask8) __U,
1183296417Sdim                _MM_FROUND_CUR_DIRECTION);
1184296417Sdim}
1185296417Sdim
1186296417Sdim#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
1187296417Sdim  (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, (__v2df) __B, \
1188296417Sdim                (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1189296417Sdim
1190296417Sdim#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1191296417Sdim  (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, (__v2df) __B, \
1192296417Sdim                (__v2df)  __W, (__mmask8) __U,__R); })
1193296417Sdim
1194296417Sdim#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
1195296417Sdim  (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, (__v2df) __B, \
1196296417Sdim                (__v2df)  _mm_setzero_pd(), (__mmask8) __U,__R); })
1197296417Sdim
1198296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1199296417Sdim_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1200296417Sdim  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1201296417Sdim             (__v8df) __B,
1202296417Sdim             (__v8df) __W,
1203296417Sdim             (__mmask8) __U,
1204296417Sdim             _MM_FROUND_CUR_DIRECTION);
1205296417Sdim}
1206296417Sdim
1207296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1208296417Sdim_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1209296417Sdim  return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1210296417Sdim             (__v8df) __B,
1211296417Sdim             (__v8df)
1212296417Sdim             _mm512_setzero_pd (),
1213296417Sdim             (__mmask8) __U,
1214296417Sdim             _MM_FROUND_CUR_DIRECTION);
1215296417Sdim}
1216296417Sdim
1217296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1218296417Sdim_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1219296417Sdim  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1220296417Sdim            (__v16sf) __B,
1221296417Sdim            (__v16sf) __W,
1222296417Sdim            (__mmask16) __U,
1223296417Sdim            _MM_FROUND_CUR_DIRECTION);
1224296417Sdim}
1225296417Sdim
1226296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1227296417Sdim_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1228296417Sdim  return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1229296417Sdim            (__v16sf) __B,
1230296417Sdim            (__v16sf)
1231296417Sdim            _mm512_setzero_ps (),
1232296417Sdim            (__mmask16) __U,
1233296417Sdim            _MM_FROUND_CUR_DIRECTION);
1234296417Sdim}
1235296417Sdim
1236296417Sdim#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1237296417Sdim  (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1238296417Sdim             (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1239296417Sdim
1240296417Sdim#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1241296417Sdim  (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1242296417Sdim             (__v8df) __W, (__mmask8) __U, __R); })
1243296417Sdim
1244296417Sdim#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1245296417Sdim   (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1246296417Sdim             (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1247296417Sdim
1248296417Sdim#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1249296417Sdim  (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1250296417Sdim            (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1251296417Sdim
1252296417Sdim#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R)  __extension__ ({ \
1253296417Sdim  (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1254296417Sdim            (__v16sf) __W, (__mmask16) __U, __R); });
1255296417Sdim
1256296417Sdim#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R)  __extension__ ({ \
1257296417Sdim  (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1258296417Sdim            (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1259296417Sdim
1260296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1261296417Sdim_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1262296417Sdim  return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A,
1263296417Sdim                (__v4sf) __B,
1264296417Sdim                (__v4sf) __W,
1265296417Sdim                (__mmask8) __U,
1266296417Sdim                _MM_FROUND_CUR_DIRECTION);
1267296417Sdim}
1268296417Sdim
1269296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1270296417Sdim_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1271296417Sdim  return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A,
1272296417Sdim                (__v4sf) __B,
1273296417Sdim                (__v4sf)  _mm_setzero_ps (),
1274296417Sdim                (__mmask8) __U,
1275296417Sdim                _MM_FROUND_CUR_DIRECTION);
1276296417Sdim}
1277296417Sdim#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
1278296417Sdim  (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, (__v4sf) __B, \
1279296417Sdim                (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1280296417Sdim
1281296417Sdim#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1282296417Sdim  (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, (__v4sf) __B, \
1283296417Sdim                (__v4sf)  __W, (__mmask8) __U,__R); })
1284296417Sdim
1285296417Sdim#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
1286296417Sdim  (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, (__v4sf) __B, \
1287296417Sdim                (__v4sf)  _mm_setzero_ps(), (__mmask8) __U,__R); })
1288296417Sdim
1289296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1290296417Sdim_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1291296417Sdim  return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A,
1292296417Sdim                (__v2df) __B,
1293296417Sdim                (__v2df) __W,
1294296417Sdim                (__mmask8) __U,
1295296417Sdim                _MM_FROUND_CUR_DIRECTION);
1296296417Sdim}
1297296417Sdim
1298296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1299296417Sdim_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1300296417Sdim  return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A,
1301296417Sdim                (__v2df) __B,
1302296417Sdim                (__v2df)  _mm_setzero_pd (),
1303296417Sdim                (__mmask8) __U,
1304296417Sdim                _MM_FROUND_CUR_DIRECTION);
1305296417Sdim}
1306296417Sdim
1307296417Sdim#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
1308296417Sdim  (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, (__v2df) __B, \
1309296417Sdim                (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1310296417Sdim
1311296417Sdim#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1312296417Sdim  (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, (__v2df) __B, \
1313296417Sdim                (__v2df)  __W, (__mmask8) __U,__R); })
1314296417Sdim
1315296417Sdim#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
1316296417Sdim  (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, (__v2df) __B, \
1317296417Sdim                (__v2df)  _mm_setzero_pd(), (__mmask8) __U,__R); })
1318296417Sdim
1319296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1320296417Sdim_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1321296417Sdim  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1322296417Sdim             (__v8df) __B,
1323296417Sdim             (__v8df) __W,
1324296417Sdim             (__mmask8) __U,
1325296417Sdim             _MM_FROUND_CUR_DIRECTION);
1326296417Sdim}
1327296417Sdim
1328296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1329296417Sdim_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1330296417Sdim  return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1331296417Sdim             (__v8df) __B,
1332296417Sdim             (__v8df)
1333296417Sdim             _mm512_setzero_pd (),
1334296417Sdim             (__mmask8) __U,
1335296417Sdim             _MM_FROUND_CUR_DIRECTION);
1336296417Sdim}
1337296417Sdim
1338296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1339296417Sdim_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1340296417Sdim  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1341296417Sdim            (__v16sf) __B,
1342296417Sdim            (__v16sf) __W,
1343296417Sdim            (__mmask16) __U,
1344296417Sdim            _MM_FROUND_CUR_DIRECTION);
1345296417Sdim}
1346296417Sdim
1347296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1348296417Sdim_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1349296417Sdim  return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1350296417Sdim            (__v16sf) __B,
1351296417Sdim            (__v16sf)
1352296417Sdim            _mm512_setzero_ps (),
1353296417Sdim            (__mmask16) __U,
1354296417Sdim            _MM_FROUND_CUR_DIRECTION);
1355296417Sdim}
1356296417Sdim
1357296417Sdim#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1358296417Sdim  (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1359296417Sdim             (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1360296417Sdim
1361296417Sdim#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1362296417Sdim  (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1363296417Sdim             (__v8df) __W, (__mmask8) __U, __R); })
1364296417Sdim
1365296417Sdim#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1366296417Sdim   (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1367296417Sdim             (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1368296417Sdim
1369296417Sdim#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1370296417Sdim  (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1371296417Sdim            (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1372296417Sdim
1373296417Sdim#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R)  __extension__ ({ \
1374296417Sdim  (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1375296417Sdim            (__v16sf) __W, (__mmask16) __U, __R); });
1376296417Sdim
1377296417Sdim#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R)  __extension__ ({ \
1378296417Sdim  (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1379296417Sdim            (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1380296417Sdim
1381296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1382296417Sdim_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
1383296417Sdim  return (__m128) __builtin_ia32_divss_round ((__v4sf) __A,
1384296417Sdim                (__v4sf) __B,
1385296417Sdim                (__v4sf) __W,
1386296417Sdim                (__mmask8) __U,
1387296417Sdim                _MM_FROUND_CUR_DIRECTION);
1388296417Sdim}
1389296417Sdim
1390296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS
1391296417Sdim_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
1392296417Sdim  return (__m128) __builtin_ia32_divss_round ((__v4sf) __A,
1393296417Sdim                (__v4sf) __B,
1394296417Sdim                (__v4sf)  _mm_setzero_ps (),
1395296417Sdim                (__mmask8) __U,
1396296417Sdim                _MM_FROUND_CUR_DIRECTION);
1397296417Sdim}
1398296417Sdim
1399296417Sdim#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
1400296417Sdim  (__m128) __builtin_ia32_divss_round ((__v4sf) __A, (__v4sf) __B, \
1401296417Sdim                (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1402296417Sdim
1403296417Sdim#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
1404296417Sdim  (__m128) __builtin_ia32_divss_round ((__v4sf) __A, (__v4sf) __B, \
1405296417Sdim                (__v4sf)  __W, (__mmask8) __U,__R); })
1406296417Sdim
1407296417Sdim#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
1408296417Sdim  (__m128) __builtin_ia32_divss_round ((__v4sf) __A, (__v4sf) __B, \
1409296417Sdim                (__v4sf)  _mm_setzero_ps(), (__mmask8) __U,__R); })
1410296417Sdim
1411296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1412296417Sdim_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
1413296417Sdim  return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A,
1414296417Sdim                (__v2df) __B,
1415296417Sdim                (__v2df) __W,
1416296417Sdim                (__mmask8) __U,
1417296417Sdim                _MM_FROUND_CUR_DIRECTION);
1418296417Sdim}
1419296417Sdim
1420296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS
1421296417Sdim_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
1422296417Sdim  return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A,
1423296417Sdim                (__v2df) __B,
1424296417Sdim                (__v2df)  _mm_setzero_pd (),
1425296417Sdim                (__mmask8) __U,
1426296417Sdim                _MM_FROUND_CUR_DIRECTION);
1427296417Sdim}
1428296417Sdim
1429296417Sdim#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
1430296417Sdim  (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, (__v2df) __B, \
1431296417Sdim                (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1432296417Sdim
1433296417Sdim#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
1434296417Sdim  (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, (__v2df) __B, \
1435296417Sdim                (__v2df)  __W, (__mmask8) __U,__R); })
1436296417Sdim
1437296417Sdim#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
1438296417Sdim  (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, (__v2df) __B, \
1439296417Sdim                (__v2df)  _mm_setzero_pd(), (__mmask8) __U,__R); })
1440296417Sdim
1441296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1442296417Sdim_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1443296417Sdim  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1444296417Sdim             (__v8df) __B,
1445296417Sdim             (__v8df) __W,
1446296417Sdim             (__mmask8) __U,
1447296417Sdim             _MM_FROUND_CUR_DIRECTION);
1448296417Sdim}
1449296417Sdim
1450296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1451296417Sdim_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1452296417Sdim  return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1453296417Sdim             (__v8df) __B,
1454296417Sdim             (__v8df)
1455296417Sdim             _mm512_setzero_pd (),
1456296417Sdim             (__mmask8) __U,
1457296417Sdim             _MM_FROUND_CUR_DIRECTION);
1458296417Sdim}
1459296417Sdim
1460296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1461296417Sdim_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1462296417Sdim  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1463296417Sdim            (__v16sf) __B,
1464296417Sdim            (__v16sf) __W,
1465296417Sdim            (__mmask16) __U,
1466296417Sdim            _MM_FROUND_CUR_DIRECTION);
1467296417Sdim}
1468296417Sdim
1469296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1470296417Sdim_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1471296417Sdim  return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1472296417Sdim            (__v16sf) __B,
1473296417Sdim            (__v16sf)
1474296417Sdim            _mm512_setzero_ps (),
1475296417Sdim            (__mmask16) __U,
1476296417Sdim            _MM_FROUND_CUR_DIRECTION);
1477296417Sdim}
1478296417Sdim
1479296417Sdim#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1480296417Sdim  (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1481296417Sdim             (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1482296417Sdim
1483296417Sdim#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1484296417Sdim  (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1485296417Sdim             (__v8df) __W, (__mmask8) __U, __R); })
1486296417Sdim
1487296417Sdim#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1488296417Sdim   (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1489296417Sdim             (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1490296417Sdim
1491296417Sdim#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1492296417Sdim  (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1493296417Sdim            (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1494296417Sdim
1495296417Sdim#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R)  __extension__ ({ \
1496296417Sdim  (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1497296417Sdim            (__v16sf) __W, (__mmask16) __U, __R); });
1498296417Sdim
1499296417Sdim#define _mm512_maskz_div_round_ps(__U, __A, __B, __R)  __extension__ ({ \
1500296417Sdim  (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1501296417Sdim            (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1502296417Sdim
1503288943Sdim#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1504288943Sdim  (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1505288943Sdim                                         -1, _MM_FROUND_CUR_DIRECTION); })
1506288943Sdim
1507288943Sdim#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1508288943Sdim  (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1509288943Sdim                                          -1, _MM_FROUND_CUR_DIRECTION); })
1510288943Sdim
1511288943Sdim#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1512288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1513288943Sdim                                             (__v8df) (B), (__v8df) (C), \
1514288943Sdim                                             (__mmask8) -1, (R)); })
1515288943Sdim
1516288943Sdim
1517288943Sdim#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1518288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1519288943Sdim                                             (__v8df) (B), (__v8df) (C), \
1520288943Sdim                                             (__mmask8) (U), (R)); })
1521288943Sdim
1522288943Sdim
1523288943Sdim#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1524288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1525288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1526288943Sdim                                              (__mmask8) (U), (R)); })
1527288943Sdim
1528288943Sdim
1529288943Sdim#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1530288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1531288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1532288943Sdim                                              (__mmask8) (U), (R)); })
1533288943Sdim
1534288943Sdim
1535288943Sdim#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1536288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1537288943Sdim                                             (__v8df) (B), -(__v8df) (C), \
1538288943Sdim                                             (__mmask8) -1, (R)); })
1539288943Sdim
1540288943Sdim
1541288943Sdim#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1542288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1543288943Sdim                                             (__v8df) (B), -(__v8df) (C), \
1544288943Sdim                                             (__mmask8) (U), (R)); })
1545288943Sdim
1546288943Sdim
1547288943Sdim#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1548288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1549288943Sdim                                              (__v8df) (B), -(__v8df) (C), \
1550288943Sdim                                              (__mmask8) (U), (R)); })
1551288943Sdim
1552288943Sdim
1553288943Sdim#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1554288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1555288943Sdim                                             (__v8df) (B), (__v8df) (C), \
1556288943Sdim                                             (__mmask8) -1, (R)); })
1557288943Sdim
1558288943Sdim
1559288943Sdim#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1560288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1561288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1562288943Sdim                                              (__mmask8) (U), (R)); })
1563288943Sdim
1564288943Sdim
1565288943Sdim#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1566288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1567288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1568288943Sdim                                              (__mmask8) (U), (R)); })
1569288943Sdim
1570288943Sdim
1571288943Sdim#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1572288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1573288943Sdim                                             (__v8df) (B), -(__v8df) (C), \
1574288943Sdim                                             (__mmask8) -1, (R)); })
1575288943Sdim
1576288943Sdim
1577288943Sdim#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1578288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1579288943Sdim                                              (__v8df) (B), -(__v8df) (C), \
1580288943Sdim                                              (__mmask8) (U), (R)); })
1581288943Sdim
1582288943Sdim
1583288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1584288943Sdim_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1585277325Sdim{
1586288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1587288943Sdim                                                    (__v8df) __B,
1588288943Sdim                                                    (__v8df) __C,
1589288943Sdim                                                    (__mmask8) -1,
1590288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1591277325Sdim}
1592288943Sdim
1593288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1594288943Sdim_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1595277325Sdim{
1596288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1597288943Sdim                                                    (__v8df) __B,
1598288943Sdim                                                    (__v8df) __C,
1599288943Sdim                                                    (__mmask8) __U,
1600288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1601277325Sdim}
1602277325Sdim
1603288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1604288943Sdim_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1605277325Sdim{
1606288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
1607288943Sdim                                                     (__v8df) __B,
1608288943Sdim                                                     (__v8df) __C,
1609288943Sdim                                                     (__mmask8) __U,
1610288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1611277325Sdim}
1612277325Sdim
1613288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1614288943Sdim_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1615288943Sdim{
1616288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1617288943Sdim                                                     (__v8df) __B,
1618288943Sdim                                                     (__v8df) __C,
1619288943Sdim                                                     (__mmask8) __U,
1620288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1621288943Sdim}
1622288943Sdim
1623288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1624277325Sdim_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1625277325Sdim{
1626288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1627288943Sdim                                                    (__v8df) __B,
1628288943Sdim                                                    -(__v8df) __C,
1629288943Sdim                                                    (__mmask8) -1,
1630288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1631277325Sdim}
1632277325Sdim
1633288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1634288943Sdim_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1635288943Sdim{
1636288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1637288943Sdim                                                    (__v8df) __B,
1638288943Sdim                                                    -(__v8df) __C,
1639288943Sdim                                                    (__mmask8) __U,
1640288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1641288943Sdim}
1642288943Sdim
1643288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1644288943Sdim_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1645288943Sdim{
1646288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1647288943Sdim                                                     (__v8df) __B,
1648288943Sdim                                                     -(__v8df) __C,
1649288943Sdim                                                     (__mmask8) __U,
1650288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1651288943Sdim}
1652288943Sdim
1653288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1654277325Sdim_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1655277325Sdim{
1656288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1657288943Sdim                                                    (__v8df) __B,
1658288943Sdim                                                    (__v8df) __C,
1659288943Sdim                                                    (__mmask8) -1,
1660288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1661277325Sdim}
1662277325Sdim
1663288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1664288943Sdim_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1665288943Sdim{
1666288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1667288943Sdim                                                     (__v8df) __B,
1668288943Sdim                                                     (__v8df) __C,
1669288943Sdim                                                     (__mmask8) __U,
1670288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1671288943Sdim}
1672288943Sdim
1673288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1674288943Sdim_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1675288943Sdim{
1676288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1677288943Sdim                                                     (__v8df) __B,
1678288943Sdim                                                     (__v8df) __C,
1679288943Sdim                                                     (__mmask8) __U,
1680288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1681288943Sdim}
1682288943Sdim
1683288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1684288943Sdim_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1685288943Sdim{
1686288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1687288943Sdim                                                    (__v8df) __B,
1688288943Sdim                                                    -(__v8df) __C,
1689288943Sdim                                                    (__mmask8) -1,
1690288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1691288943Sdim}
1692288943Sdim
1693288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1694288943Sdim_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1695288943Sdim{
1696288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1697288943Sdim                                                     (__v8df) __B,
1698288943Sdim                                                     -(__v8df) __C,
1699288943Sdim                                                     (__mmask8) __U,
1700288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1701288943Sdim}
1702288943Sdim
1703288943Sdim#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1704288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1705288943Sdim                                            (__v16sf) (B), (__v16sf) (C), \
1706288943Sdim                                            (__mmask16) -1, (R)); })
1707288943Sdim
1708288943Sdim
1709288943Sdim#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1710288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1711288943Sdim                                            (__v16sf) (B), (__v16sf) (C), \
1712288943Sdim                                            (__mmask16) (U), (R)); })
1713288943Sdim
1714288943Sdim
1715288943Sdim#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1716288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1717288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1718288943Sdim                                             (__mmask16) (U), (R)); })
1719288943Sdim
1720288943Sdim
1721288943Sdim#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1722288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1723288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1724288943Sdim                                             (__mmask16) (U), (R)); })
1725288943Sdim
1726288943Sdim
1727288943Sdim#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1728288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1729288943Sdim                                            (__v16sf) (B), -(__v16sf) (C), \
1730288943Sdim                                            (__mmask16) -1, (R)); })
1731288943Sdim
1732288943Sdim
1733288943Sdim#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1734288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1735288943Sdim                                            (__v16sf) (B), -(__v16sf) (C), \
1736288943Sdim                                            (__mmask16) (U), (R)); })
1737288943Sdim
1738288943Sdim
1739288943Sdim#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1740288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1741288943Sdim                                             (__v16sf) (B), -(__v16sf) (C), \
1742288943Sdim                                             (__mmask16) (U), (R)); })
1743288943Sdim
1744288943Sdim
1745288943Sdim#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1746288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1747288943Sdim                                            (__v16sf) (B), (__v16sf) (C), \
1748288943Sdim                                            (__mmask16) -1, (R)); })
1749288943Sdim
1750288943Sdim
1751288943Sdim#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1752288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1753288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1754288943Sdim                                             (__mmask16) (U), (R)); })
1755288943Sdim
1756288943Sdim
1757288943Sdim#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1758288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1759288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1760288943Sdim                                             (__mmask16) (U), (R)); })
1761288943Sdim
1762288943Sdim
1763288943Sdim#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1764288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1765288943Sdim                                            (__v16sf) (B), -(__v16sf) (C), \
1766288943Sdim                                            (__mmask16) -1, (R)); })
1767288943Sdim
1768288943Sdim
1769288943Sdim#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1770288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1771288943Sdim                                             (__v16sf) (B), -(__v16sf) (C), \
1772288943Sdim                                             (__mmask16) (U), (R)); })
1773288943Sdim
1774288943Sdim
1775288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1776277325Sdim_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1777277325Sdim{
1778288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1779288943Sdim                                                   (__v16sf) __B,
1780288943Sdim                                                   (__v16sf) __C,
1781288943Sdim                                                   (__mmask16) -1,
1782288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1783277325Sdim}
1784277325Sdim
1785288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1786288943Sdim_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1787288943Sdim{
1788288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1789288943Sdim                                                   (__v16sf) __B,
1790288943Sdim                                                   (__v16sf) __C,
1791288943Sdim                                                   (__mmask16) __U,
1792288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1793288943Sdim}
1794288943Sdim
1795288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1796288943Sdim_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1797288943Sdim{
1798288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1799288943Sdim                                                    (__v16sf) __B,
1800288943Sdim                                                    (__v16sf) __C,
1801288943Sdim                                                    (__mmask16) __U,
1802288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1803288943Sdim}
1804288943Sdim
1805288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1806288943Sdim_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1807288943Sdim{
1808288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1809288943Sdim                                                    (__v16sf) __B,
1810288943Sdim                                                    (__v16sf) __C,
1811288943Sdim                                                    (__mmask16) __U,
1812288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1813288943Sdim}
1814288943Sdim
1815288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1816277325Sdim_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1817277325Sdim{
1818288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1819288943Sdim                                                   (__v16sf) __B,
1820288943Sdim                                                   -(__v16sf) __C,
1821288943Sdim                                                   (__mmask16) -1,
1822288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1823277325Sdim}
1824277325Sdim
1825288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1826288943Sdim_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1827288943Sdim{
1828288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1829288943Sdim                                                   (__v16sf) __B,
1830288943Sdim                                                   -(__v16sf) __C,
1831288943Sdim                                                   (__mmask16) __U,
1832288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1833288943Sdim}
1834288943Sdim
1835288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1836288943Sdim_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1837288943Sdim{
1838288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1839288943Sdim                                                    (__v16sf) __B,
1840288943Sdim                                                    -(__v16sf) __C,
1841288943Sdim                                                    (__mmask16) __U,
1842288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1843288943Sdim}
1844288943Sdim
1845288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1846277325Sdim_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1847277325Sdim{
1848288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1849288943Sdim                                                   (__v16sf) __B,
1850288943Sdim                                                   (__v16sf) __C,
1851288943Sdim                                                   (__mmask16) -1,
1852288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1853277325Sdim}
1854277325Sdim
1855288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1856288943Sdim_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1857288943Sdim{
1858288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
1859288943Sdim                                                    (__v16sf) __B,
1860288943Sdim                                                    (__v16sf) __C,
1861288943Sdim                                                    (__mmask16) __U,
1862288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1863288943Sdim}
1864288943Sdim
1865288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1866288943Sdim_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1867288943Sdim{
1868288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1869288943Sdim                                                    (__v16sf) __B,
1870288943Sdim                                                    (__v16sf) __C,
1871288943Sdim                                                    (__mmask16) __U,
1872288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1873288943Sdim}
1874288943Sdim
1875288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1876288943Sdim_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1877288943Sdim{
1878288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1879288943Sdim                                                   (__v16sf) __B,
1880288943Sdim                                                   -(__v16sf) __C,
1881288943Sdim                                                   (__mmask16) -1,
1882288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1883288943Sdim}
1884288943Sdim
1885288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1886288943Sdim_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1887288943Sdim{
1888288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1889288943Sdim                                                    (__v16sf) __B,
1890288943Sdim                                                    -(__v16sf) __C,
1891288943Sdim                                                    (__mmask16) __U,
1892288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1893288943Sdim}
1894288943Sdim
1895288943Sdim#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
1896288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1897288943Sdim                                                (__v8df) (B), (__v8df) (C), \
1898288943Sdim                                                (__mmask8) -1, (R)); })
1899288943Sdim
1900288943Sdim
1901288943Sdim#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
1902288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1903288943Sdim                                                (__v8df) (B), (__v8df) (C), \
1904288943Sdim                                                (__mmask8) (U), (R)); })
1905288943Sdim
1906288943Sdim
1907288943Sdim#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
1908288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
1909288943Sdim                                                 (__v8df) (B), (__v8df) (C), \
1910288943Sdim                                                 (__mmask8) (U), (R)); })
1911288943Sdim
1912288943Sdim
1913288943Sdim#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
1914288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1915288943Sdim                                                 (__v8df) (B), (__v8df) (C), \
1916288943Sdim                                                 (__mmask8) (U), (R)); })
1917288943Sdim
1918288943Sdim
1919288943Sdim#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
1920288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1921288943Sdim                                                (__v8df) (B), -(__v8df) (C), \
1922288943Sdim                                                (__mmask8) -1, (R)); })
1923288943Sdim
1924288943Sdim
1925288943Sdim#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
1926288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1927288943Sdim                                                (__v8df) (B), -(__v8df) (C), \
1928288943Sdim                                                (__mmask8) (U), (R)); })
1929288943Sdim
1930288943Sdim
1931288943Sdim#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
1932288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1933288943Sdim                                                 (__v8df) (B), -(__v8df) (C), \
1934288943Sdim                                                 (__mmask8) (U), (R)); })
1935288943Sdim
1936288943Sdim
1937288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1938288943Sdim_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
1939288943Sdim{
1940288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1941288943Sdim                                                       (__v8df) __B,
1942288943Sdim                                                       (__v8df) __C,
1943288943Sdim                                                       (__mmask8) -1,
1944288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1945288943Sdim}
1946288943Sdim
1947288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1948288943Sdim_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1949288943Sdim{
1950288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1951288943Sdim                                                       (__v8df) __B,
1952288943Sdim                                                       (__v8df) __C,
1953288943Sdim                                                       (__mmask8) __U,
1954288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1955288943Sdim}
1956288943Sdim
1957288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1958288943Sdim_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1959288943Sdim{
1960288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
1961288943Sdim                                                        (__v8df) __B,
1962288943Sdim                                                        (__v8df) __C,
1963288943Sdim                                                        (__mmask8) __U,
1964288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
1965288943Sdim}
1966288943Sdim
1967288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1968288943Sdim_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1969288943Sdim{
1970288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1971288943Sdim                                                        (__v8df) __B,
1972288943Sdim                                                        (__v8df) __C,
1973288943Sdim                                                        (__mmask8) __U,
1974288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
1975288943Sdim}
1976288943Sdim
1977288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1978288943Sdim_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
1979288943Sdim{
1980288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1981288943Sdim                                                       (__v8df) __B,
1982288943Sdim                                                       -(__v8df) __C,
1983288943Sdim                                                       (__mmask8) -1,
1984288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1985288943Sdim}
1986288943Sdim
1987288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1988288943Sdim_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1989288943Sdim{
1990288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1991288943Sdim                                                       (__v8df) __B,
1992288943Sdim                                                       -(__v8df) __C,
1993288943Sdim                                                       (__mmask8) __U,
1994288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1995288943Sdim}
1996288943Sdim
1997288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1998288943Sdim_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1999288943Sdim{
2000288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2001288943Sdim                                                        (__v8df) __B,
2002288943Sdim                                                        -(__v8df) __C,
2003288943Sdim                                                        (__mmask8) __U,
2004288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
2005288943Sdim}
2006288943Sdim
2007288943Sdim#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2008288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2009288943Sdim                                               (__v16sf) (B), (__v16sf) (C), \
2010288943Sdim                                               (__mmask16) -1, (R)); })
2011288943Sdim
2012288943Sdim
2013288943Sdim#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2014288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2015288943Sdim                                               (__v16sf) (B), (__v16sf) (C), \
2016288943Sdim                                               (__mmask16) (U), (R)); })
2017288943Sdim
2018288943Sdim
2019288943Sdim#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2020288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2021288943Sdim                                                (__v16sf) (B), (__v16sf) (C), \
2022288943Sdim                                                (__mmask16) (U), (R)); })
2023288943Sdim
2024288943Sdim
2025288943Sdim#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2026288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2027288943Sdim                                                (__v16sf) (B), (__v16sf) (C), \
2028288943Sdim                                                (__mmask16) (U), (R)); })
2029288943Sdim
2030288943Sdim
2031288943Sdim#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2032288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2033288943Sdim                                               (__v16sf) (B), -(__v16sf) (C), \
2034288943Sdim                                               (__mmask16) -1, (R)); })
2035288943Sdim
2036288943Sdim
2037288943Sdim#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2038288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2039288943Sdim                                               (__v16sf) (B), -(__v16sf) (C), \
2040288943Sdim                                               (__mmask16) (U), (R)); })
2041288943Sdim
2042288943Sdim
2043288943Sdim#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2044288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2045288943Sdim                                                (__v16sf) (B), -(__v16sf) (C), \
2046288943Sdim                                                (__mmask16) (U), (R)); })
2047288943Sdim
2048288943Sdim
2049288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2050288943Sdim_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2051288943Sdim{
2052288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2053288943Sdim                                                      (__v16sf) __B,
2054288943Sdim                                                      (__v16sf) __C,
2055288943Sdim                                                      (__mmask16) -1,
2056288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
2057288943Sdim}
2058288943Sdim
2059288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2060288943Sdim_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2061288943Sdim{
2062288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2063288943Sdim                                                      (__v16sf) __B,
2064288943Sdim                                                      (__v16sf) __C,
2065288943Sdim                                                      (__mmask16) __U,
2066288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
2067288943Sdim}
2068288943Sdim
2069288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2070288943Sdim_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2071288943Sdim{
2072288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2073288943Sdim                                                       (__v16sf) __B,
2074288943Sdim                                                       (__v16sf) __C,
2075288943Sdim                                                       (__mmask16) __U,
2076288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
2077288943Sdim}
2078288943Sdim
2079288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2080288943Sdim_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2081288943Sdim{
2082288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2083288943Sdim                                                       (__v16sf) __B,
2084288943Sdim                                                       (__v16sf) __C,
2085288943Sdim                                                       (__mmask16) __U,
2086288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
2087288943Sdim}
2088288943Sdim
2089288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2090288943Sdim_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2091288943Sdim{
2092288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2093288943Sdim                                                      (__v16sf) __B,
2094288943Sdim                                                      -(__v16sf) __C,
2095288943Sdim                                                      (__mmask16) -1,
2096288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
2097288943Sdim}
2098288943Sdim
2099288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2100288943Sdim_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2101288943Sdim{
2102288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2103288943Sdim                                                      (__v16sf) __B,
2104288943Sdim                                                      -(__v16sf) __C,
2105288943Sdim                                                      (__mmask16) __U,
2106288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
2107288943Sdim}
2108288943Sdim
2109288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2110288943Sdim_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2111288943Sdim{
2112288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2113288943Sdim                                                       (__v16sf) __B,
2114288943Sdim                                                       -(__v16sf) __C,
2115288943Sdim                                                       (__mmask16) __U,
2116288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
2117288943Sdim}
2118288943Sdim
2119288943Sdim#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2120288943Sdim  (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2121288943Sdim                                              (__v8df) (B), (__v8df) (C), \
2122288943Sdim                                              (__mmask8) (U), (R)); })
2123288943Sdim
2124288943Sdim
2125288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
2126288943Sdim_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2127288943Sdim{
2128288943Sdim  return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2129288943Sdim                                                     (__v8df) __B,
2130288943Sdim                                                     (__v8df) __C,
2131288943Sdim                                                     (__mmask8) __U,
2132288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
2133288943Sdim}
2134288943Sdim
2135288943Sdim#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2136288943Sdim  (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2137288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
2138288943Sdim                                             (__mmask16) (U), (R)); })
2139288943Sdim
2140288943Sdim
2141288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2142288943Sdim_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2143288943Sdim{
2144288943Sdim  return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2145288943Sdim                                                    (__v16sf) __B,
2146288943Sdim                                                    (__v16sf) __C,
2147288943Sdim                                                    (__mmask16) __U,
2148288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
2149288943Sdim}
2150288943Sdim
2151288943Sdim#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2152288943Sdim  (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2153288943Sdim                                                 (__v8df) (B), (__v8df) (C), \
2154288943Sdim                                                 (__mmask8) (U), (R)); })
2155288943Sdim
2156288943Sdim
2157288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
2158288943Sdim_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2159288943Sdim{
2160288943Sdim  return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2161288943Sdim                                                        (__v8df) __B,
2162288943Sdim                                                        (__v8df) __C,
2163288943Sdim                                                        (__mmask8) __U,
2164288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
2165288943Sdim}
2166288943Sdim
2167288943Sdim#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2168288943Sdim  (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2169288943Sdim                                                (__v16sf) (B), (__v16sf) (C), \
2170288943Sdim                                                (__mmask16) (U), (R)); })
2171288943Sdim
2172288943Sdim
2173288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2174288943Sdim_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2175288943Sdim{
2176288943Sdim  return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2177288943Sdim                                                       (__v16sf) __B,
2178288943Sdim                                                       (__v16sf) __C,
2179288943Sdim                                                       (__mmask16) __U,
2180288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
2181288943Sdim}
2182288943Sdim
2183288943Sdim#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2184288943Sdim  (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2185288943Sdim                                              (__v8df) (B), (__v8df) (C), \
2186288943Sdim                                              (__mmask8) (U), (R)); })
2187288943Sdim
2188288943Sdim
2189288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
2190288943Sdim_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2191288943Sdim{
2192288943Sdim  return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2193288943Sdim                                                     (__v8df) __B,
2194288943Sdim                                                     (__v8df) __C,
2195288943Sdim                                                     (__mmask8) __U,
2196288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
2197288943Sdim}
2198288943Sdim
2199288943Sdim#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2200288943Sdim  (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2201288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
2202288943Sdim                                             (__mmask16) (U), (R)); })
2203288943Sdim
2204288943Sdim
2205288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2206288943Sdim_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2207288943Sdim{
2208288943Sdim  return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2209288943Sdim                                                    (__v16sf) __B,
2210288943Sdim                                                    (__v16sf) __C,
2211288943Sdim                                                    (__mmask16) __U,
2212288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
2213288943Sdim}
2214288943Sdim
2215288943Sdim#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2216288943Sdim  (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2217288943Sdim                                              (__v8df) (B), (__v8df) (C), \
2218288943Sdim                                              (__mmask8) (U), (R)); })
2219288943Sdim
2220288943Sdim
2221288943Sdim#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2222288943Sdim  (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2223288943Sdim                                               (__v8df) (B), (__v8df) (C), \
2224288943Sdim                                               (__mmask8) (U), (R)); })
2225288943Sdim
2226288943Sdim
2227288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
2228288943Sdim_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2229288943Sdim{
2230288943Sdim  return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2231288943Sdim                                                     (__v8df) __B,
2232288943Sdim                                                     (__v8df) __C,
2233288943Sdim                                                     (__mmask8) __U,
2234288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
2235288943Sdim}
2236288943Sdim
2237288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
2238288943Sdim_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2239288943Sdim{
2240288943Sdim  return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2241288943Sdim                                                      (__v8df) __B,
2242288943Sdim                                                      (__v8df) __C,
2243288943Sdim                                                      (__mmask8) __U,
2244288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
2245288943Sdim}
2246288943Sdim
2247288943Sdim#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2248288943Sdim  (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2249288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
2250288943Sdim                                             (__mmask16) (U), (R)); })
2251288943Sdim
2252288943Sdim
2253288943Sdim#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2254288943Sdim  (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2255288943Sdim                                              (__v16sf) (B), (__v16sf) (C), \
2256288943Sdim                                              (__mmask16) (U), (R)); })
2257288943Sdim
2258288943Sdim
2259288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2260288943Sdim_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2261288943Sdim{
2262288943Sdim  return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2263288943Sdim                                                    (__v16sf) __B,
2264288943Sdim                                                    (__v16sf) __C,
2265288943Sdim                                                    (__mmask16) __U,
2266288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
2267288943Sdim}
2268288943Sdim
2269288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
2270288943Sdim_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2271288943Sdim{
2272288943Sdim  return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2273288943Sdim                                                     (__v16sf) __B,
2274288943Sdim                                                     (__v16sf) __C,
2275288943Sdim                                                     (__mmask16) __U,
2276288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
2277288943Sdim}
2278288943Sdim
2279288943Sdim
2280288943Sdim
2281277325Sdim/* Vector permutations */
2282277325Sdim
2283288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2284277325Sdim_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2285277325Sdim{
2286277325Sdim  return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2287277325Sdim                                                       /* idx */ ,
2288277325Sdim                                                       (__v16si) __A,
2289277325Sdim                                                       (__v16si) __B,
2290277325Sdim                                                       (__mmask16) -1);
2291277325Sdim}
2292288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2293277325Sdim_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2294277325Sdim{
2295277325Sdim  return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2296277325Sdim                                                       /* idx */ ,
2297277325Sdim                                                       (__v8di) __A,
2298277325Sdim                                                       (__v8di) __B,
2299277325Sdim                                                       (__mmask8) -1);
2300277325Sdim}
2301277325Sdim
2302288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2303277325Sdim_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2304277325Sdim{
2305277325Sdim  return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2306277325Sdim                                                        /* idx */ ,
2307277325Sdim                                                        (__v8df) __A,
2308277325Sdim                                                        (__v8df) __B,
2309277325Sdim                                                        (__mmask8) -1);
2310277325Sdim}
2311288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2312277325Sdim_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2313277325Sdim{
2314277325Sdim  return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2315277325Sdim                                                       /* idx */ ,
2316277325Sdim                                                       (__v16sf) __A,
2317277325Sdim                                                       (__v16sf) __B,
2318277325Sdim                                                       (__mmask16) -1);
2319277325Sdim}
2320277325Sdim
2321288943Sdim#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2322288943Sdim  (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2323288943Sdim                                         (__v8di)(__m512i)(B), \
2324288943Sdim                                         (I), (__v8di)_mm512_setzero_si512(), \
2325288943Sdim                                         (__mmask8)-1); })
2326277325Sdim
2327288943Sdim#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
2328288943Sdim  (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
2329288943Sdim                                         (__v16si)(__m512i)(B), \
2330288943Sdim                                         (I), (__v16si)_mm512_setzero_si512(), \
2331288943Sdim                                         (__mmask16)-1); })
2332277325Sdim
2333288943Sdim/* Vector Extract */
2334288943Sdim
2335288943Sdim#define _mm512_extractf64x4_pd(A, I) __extension__ ({                    \
2336288943Sdim      (__m256d)                                                          \
2337296417Sdim        __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A),           \
2338288943Sdim                                         (I),                            \
2339288943Sdim                                         (__v4df)_mm256_setzero_si256(), \
2340288943Sdim                                         (__mmask8) -1); })
2341288943Sdim
2342288943Sdim#define _mm512_extractf32x4_ps(A, I) __extension__ ({                    \
2343288943Sdim      (__m128)                                                           \
2344296417Sdim        __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A),           \
2345288943Sdim                                         (I),                            \
2346288943Sdim                                         (__v4sf)_mm_setzero_ps(),       \
2347288943Sdim                                         (__mmask8) -1); })
2348288943Sdim
2349277325Sdim/* Vector Blend */
2350277325Sdim
2351288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2352277325Sdim_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2353277325Sdim{
2354277325Sdim  return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2355277325Sdim                 (__v8df) __W,
2356277325Sdim                 (__mmask8) __U);
2357277325Sdim}
2358277325Sdim
2359288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2360277325Sdim_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2361277325Sdim{
2362277325Sdim  return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2363277325Sdim                (__v16sf) __W,
2364277325Sdim                (__mmask16) __U);
2365277325Sdim}
2366277325Sdim
2367288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2368277325Sdim_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2369277325Sdim{
2370277325Sdim  return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2371277325Sdim                (__v8di) __W,
2372277325Sdim                (__mmask8) __U);
2373277325Sdim}
2374277325Sdim
2375288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2376277325Sdim_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2377277325Sdim{
2378277325Sdim  return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2379277325Sdim                (__v16si) __W,
2380277325Sdim                (__mmask16) __U);
2381277325Sdim}
2382277325Sdim
2383277325Sdim/* Compare */
2384277325Sdim
2385288943Sdim#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2386288943Sdim  (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2387288943Sdim                                          (__v16sf)(__m512)(B), \
2388288943Sdim                                          (P), (__mmask16)-1, (R)); })
2389277325Sdim
2390288943Sdim#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2391288943Sdim  (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2392288943Sdim                                          (__v16sf)(__m512)(B), \
2393288943Sdim                                          (P), (__mmask16)(U), (R)); })
2394277325Sdim
2395288943Sdim#define _mm512_cmp_ps_mask(A, B, P) \
2396288943Sdim  _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2397288943Sdim
2398288943Sdim#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2399288943Sdim  _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2400288943Sdim
2401288943Sdim#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2402288943Sdim  (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2403288943Sdim                                         (__v8df)(__m512d)(B), \
2404288943Sdim                                         (P), (__mmask8)-1, (R)); })
2405288943Sdim
2406288943Sdim#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2407288943Sdim  (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2408288943Sdim                                         (__v8df)(__m512d)(B), \
2409288943Sdim                                         (P), (__mmask8)(U), (R)); })
2410288943Sdim
2411288943Sdim#define _mm512_cmp_pd_mask(A, B, P) \
2412288943Sdim  _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2413288943Sdim
2414288943Sdim#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2415288943Sdim  _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2416288943Sdim
2417277325Sdim/* Conversion */
2418277325Sdim
2419288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2420277325Sdim_mm512_cvttps_epu32(__m512 __A)
2421277325Sdim{
2422277325Sdim  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2423277325Sdim                  (__v16si)
2424277325Sdim                  _mm512_setzero_si512 (),
2425277325Sdim                  (__mmask16) -1,
2426277325Sdim                  _MM_FROUND_CUR_DIRECTION);
2427277325Sdim}
2428277325Sdim
2429288943Sdim#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2430288943Sdim  (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2431288943Sdim                                          (__v16sf)_mm512_setzero_ps(), \
2432288943Sdim                                          (__mmask16)-1, (R)); })
2433277325Sdim
2434288943Sdim#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2435288943Sdim  (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2436288943Sdim                                           (__v16sf)_mm512_setzero_ps(), \
2437288943Sdim                                           (__mmask16)-1, (R)); })
2438277325Sdim
2439288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2440277325Sdim_mm512_cvtepi32_pd(__m256i __A)
2441277325Sdim{
2442277325Sdim  return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2443277325Sdim                (__v8df)
2444277325Sdim                _mm512_setzero_pd (),
2445277325Sdim                (__mmask8) -1);
2446277325Sdim}
2447277325Sdim
2448288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2449277325Sdim_mm512_cvtepu32_pd(__m256i __A)
2450277325Sdim{
2451277325Sdim  return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2452277325Sdim                (__v8df)
2453277325Sdim                _mm512_setzero_pd (),
2454277325Sdim                (__mmask8) -1);
2455277325Sdim}
2456277325Sdim
2457288943Sdim#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2458288943Sdim  (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2459288943Sdim                                          (__v8sf)_mm256_setzero_ps(), \
2460288943Sdim                                          (__mmask8)-1, (R)); })
2461277325Sdim
2462288943Sdim#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2463288943Sdim  (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2464288943Sdim                                            (__v16hi)_mm256_setzero_si256(), \
2465288943Sdim                                            -1); })
2466288943Sdim
2467288943Sdimstatic  __inline __m512 __DEFAULT_FN_ATTRS
2468277325Sdim_mm512_cvtph_ps(__m256i __A)
2469277325Sdim{
2470277325Sdim  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2471277325Sdim                (__v16sf)
2472277325Sdim                _mm512_setzero_ps (),
2473277325Sdim                (__mmask16) -1,
2474277325Sdim                _MM_FROUND_CUR_DIRECTION);
2475277325Sdim}
2476277325Sdim
2477288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2478296417Sdim_mm512_cvttps_epi32(__m512 __a)
2479277325Sdim{
2480277325Sdim  return (__m512i)
2481296417Sdim    __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
2482277325Sdim                                     (__v16si) _mm512_setzero_si512 (),
2483277325Sdim                                     (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2484277325Sdim}
2485277325Sdim
2486288943Sdimstatic __inline __m256i __DEFAULT_FN_ATTRS
2487296417Sdim_mm512_cvttpd_epi32(__m512d __a)
2488277325Sdim{
2489296417Sdim  return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
2490277325Sdim                                                   (__v8si)_mm256_setzero_si256(),
2491277325Sdim                                                   (__mmask8) -1,
2492277325Sdim                                                    _MM_FROUND_CUR_DIRECTION);
2493277325Sdim}
2494277325Sdim
2495288943Sdim#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2496288943Sdim  (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2497288943Sdim                                            (__v8si)_mm256_setzero_si256(), \
2498288943Sdim                                            (__mmask8)-1, (R)); })
2499277325Sdim
2500288943Sdim#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2501288943Sdim  (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2502288943Sdim                                            (__v16si)_mm512_setzero_si512(), \
2503288943Sdim                                            (__mmask16)-1, (R)); })
2504277325Sdim
2505288943Sdim#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2506288943Sdim  (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2507288943Sdim                                           (__v16si)_mm512_setzero_si512(), \
2508288943Sdim                                           (__mmask16)-1, (R)); })
2509288943Sdim
2510288943Sdim#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2511288943Sdim  (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2512288943Sdim                                           (__v8si)_mm256_setzero_si256(), \
2513288943Sdim                                           (__mmask8)-1, (R)); })
2514288943Sdim
2515288943Sdim#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2516288943Sdim  (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2517288943Sdim                                            (__v16si)_mm512_setzero_si512(), \
2518288943Sdim                                            (__mmask16)-1, (R)); })
2519288943Sdim
2520288943Sdim#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2521288943Sdim  (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2522288943Sdim                                            (__v8si)_mm256_setzero_si256(), \
2523288943Sdim                                            (__mmask8) -1, (R)); })
2524288943Sdim
2525277325Sdim/* Unpack and Interleave */
2526288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2527277325Sdim_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2528277325Sdim{
2529277325Sdim  return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2530277325Sdim}
2531277325Sdim
2532288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2533277325Sdim_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2534277325Sdim{
2535277325Sdim  return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2536277325Sdim}
2537277325Sdim
2538288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2539277325Sdim_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2540277325Sdim{
2541277325Sdim  return __builtin_shufflevector(__a, __b,
2542277325Sdim                                 2,    18,    3,    19,
2543277325Sdim                                 2+4,  18+4,  3+4,  19+4,
2544277325Sdim                                 2+8,  18+8,  3+8,  19+8,
2545277325Sdim                                 2+12, 18+12, 3+12, 19+12);
2546277325Sdim}
2547277325Sdim
2548288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2549277325Sdim_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2550277325Sdim{
2551277325Sdim  return __builtin_shufflevector(__a, __b,
2552277325Sdim                                 0,    16,    1,    17,
2553277325Sdim                                 0+4,  16+4,  1+4,  17+4,
2554277325Sdim                                 0+8,  16+8,  1+8,  17+8,
2555277325Sdim                                 0+12, 16+12, 1+12, 17+12);
2556277325Sdim}
2557277325Sdim
2558277325Sdim/* Bit Test */
2559277325Sdim
2560288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS
2561277325Sdim_mm512_test_epi32_mask(__m512i __A, __m512i __B)
2562277325Sdim{
2563277325Sdim  return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2564277325Sdim            (__v16si) __B,
2565277325Sdim            (__mmask16) -1);
2566277325Sdim}
2567277325Sdim
2568288943Sdimstatic __inline __mmask8 __DEFAULT_FN_ATTRS
2569277325Sdim_mm512_test_epi64_mask(__m512i __A, __m512i __B)
2570277325Sdim{
2571277325Sdim  return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2572277325Sdim                 (__v8di) __B,
2573277325Sdim                 (__mmask8) -1);
2574277325Sdim}
2575277325Sdim
2576277325Sdim/* SIMD load ops */
2577277325Sdim
2578288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2579277325Sdim_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
2580277325Sdim{
2581277325Sdim  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2582277325Sdim                                                     (__v16si)
2583277325Sdim                                                     _mm512_setzero_si512 (),
2584277325Sdim                                                     (__mmask16) __U);
2585277325Sdim}
2586277325Sdim
2587288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
2588277325Sdim_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
2589277325Sdim{
2590277325Sdim  return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2591277325Sdim                                                     (__v8di)
2592277325Sdim                                                     _mm512_setzero_si512 (),
2593277325Sdim                                                     (__mmask8) __U);
2594277325Sdim}
2595277325Sdim
2596288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2597277325Sdim_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
2598277325Sdim{
2599277325Sdim  return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2600277325Sdim                                                  (__v16sf)
2601277325Sdim                                                  _mm512_setzero_ps (),
2602277325Sdim                                                  (__mmask16) __U);
2603277325Sdim}
2604277325Sdim
2605288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2606277325Sdim_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
2607277325Sdim{
2608277325Sdim  return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2609277325Sdim                                                   (__v8df)
2610277325Sdim                                                   _mm512_setzero_pd (),
2611277325Sdim                                                   (__mmask8) __U);
2612277325Sdim}
2613277325Sdim
2614288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2615288943Sdim_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2616288943Sdim{
2617288943Sdim  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2618288943Sdim                                                  (__v16sf)
2619288943Sdim                                                  _mm512_setzero_ps (),
2620288943Sdim                                                  (__mmask16) __U);
2621288943Sdim}
2622288943Sdim
2623288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2624288943Sdim_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2625288943Sdim{
2626288943Sdim  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2627288943Sdim                                                   (__v8df)
2628288943Sdim                                                   _mm512_setzero_pd (),
2629288943Sdim                                                   (__mmask8) __U);
2630288943Sdim}
2631288943Sdim
2632288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2633277325Sdim_mm512_loadu_pd(double const *__p)
2634277325Sdim{
2635277325Sdim  struct __loadu_pd {
2636277325Sdim    __m512d __v;
2637288943Sdim  } __attribute__((__packed__, __may_alias__));
2638277325Sdim  return ((struct __loadu_pd*)__p)->__v;
2639277325Sdim}
2640277325Sdim
2641288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2642277325Sdim_mm512_loadu_ps(float const *__p)
2643277325Sdim{
2644277325Sdim  struct __loadu_ps {
2645277325Sdim    __m512 __v;
2646288943Sdim  } __attribute__((__packed__, __may_alias__));
2647277325Sdim  return ((struct __loadu_ps*)__p)->__v;
2648277325Sdim}
2649277325Sdim
2650288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2651288943Sdim_mm512_load_ps(double const *__p)
2652288943Sdim{
2653288943Sdim  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2654288943Sdim                                                  (__v16sf)
2655288943Sdim                                                  _mm512_setzero_ps (),
2656288943Sdim                                                  (__mmask16) -1);
2657288943Sdim}
2658288943Sdim
2659288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2660288943Sdim_mm512_load_pd(float const *__p)
2661288943Sdim{
2662288943Sdim  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2663288943Sdim                                                   (__v8df)
2664288943Sdim                                                   _mm512_setzero_pd (),
2665288943Sdim                                                   (__mmask8) -1);
2666288943Sdim}
2667288943Sdim
2668277325Sdim/* SIMD store ops */
2669277325Sdim
2670288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2671277325Sdim_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
2672277325Sdim{
2673277325Sdim  __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2674277325Sdim                                     (__mmask8) __U);
2675277325Sdim}
2676277325Sdim
2677288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2678277325Sdim_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
2679277325Sdim{
2680277325Sdim  __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2681277325Sdim                                     (__mmask16) __U);
2682277325Sdim}
2683277325Sdim
2684288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2685277325Sdim_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
2686277325Sdim{
2687277325Sdim  __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2688277325Sdim}
2689277325Sdim
2690288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2691277325Sdim_mm512_storeu_pd(void *__P, __m512d __A)
2692277325Sdim{
2693277325Sdim  __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2694277325Sdim}
2695277325Sdim
2696288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2697277325Sdim_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
2698277325Sdim{
2699277325Sdim  __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2700277325Sdim                                   (__mmask16) __U);
2701277325Sdim}
2702277325Sdim
2703288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2704277325Sdim_mm512_storeu_ps(void *__P, __m512 __A)
2705277325Sdim{
2706277325Sdim  __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2707277325Sdim}
2708277325Sdim
2709288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2710288943Sdim_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
2711277325Sdim{
2712288943Sdim  __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2713277325Sdim}
2714277325Sdim
2715288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2716277325Sdim_mm512_store_pd(void *__P, __m512d __A)
2717277325Sdim{
2718277325Sdim  *(__m512d*)__P = __A;
2719277325Sdim}
2720277325Sdim
2721288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2722288943Sdim_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2723288943Sdim{
2724288943Sdim  __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2725288943Sdim                                   (__mmask16) __U);
2726288943Sdim}
2727288943Sdim
2728288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2729288943Sdim_mm512_store_ps(void *__P, __m512 __A)
2730288943Sdim{
2731288943Sdim  *(__m512*)__P = __A;
2732288943Sdim}
2733288943Sdim
2734277325Sdim/* Mask ops */
2735277325Sdim
2736288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS
2737277325Sdim_mm512_knot(__mmask16 __M)
2738277325Sdim{
2739277325Sdim  return __builtin_ia32_knothi(__M);
2740277325Sdim}
2741277325Sdim
2742277325Sdim/* Integer compare */
2743277325Sdim
2744288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2745277325Sdim_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2746277325Sdim  return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2747277325Sdim                                                   (__mmask16)-1);
2748277325Sdim}
2749277325Sdim
2750288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2751277325Sdim_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2752277325Sdim  return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2753277325Sdim                                                   __u);
2754277325Sdim}
2755277325Sdim
2756288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2757288943Sdim_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2758288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2759288943Sdim                                                 (__mmask16)-1);
2760288943Sdim}
2761288943Sdim
2762288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2763288943Sdim_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2764288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2765288943Sdim                                                 __u);
2766288943Sdim}
2767288943Sdim
2768288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2769277325Sdim_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2770277325Sdim  return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2771277325Sdim                                                  __u);
2772277325Sdim}
2773277325Sdim
2774288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2775277325Sdim_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2776277325Sdim  return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2777277325Sdim                                                  (__mmask8)-1);
2778277325Sdim}
2779277325Sdim
2780288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2781288943Sdim_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2782288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2783288943Sdim                                                (__mmask8)-1);
2784288943Sdim}
2785288943Sdim
2786288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2787288943Sdim_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2788288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2789288943Sdim                                                __u);
2790288943Sdim}
2791288943Sdim
2792288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2793288943Sdim_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2794288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2795288943Sdim                                                (__mmask16)-1);
2796288943Sdim}
2797288943Sdim
2798288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2799288943Sdim_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2800288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2801288943Sdim                                                __u);
2802288943Sdim}
2803288943Sdim
2804288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2805288943Sdim_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2806288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2807288943Sdim                                                 (__mmask16)-1);
2808288943Sdim}
2809288943Sdim
2810288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2811288943Sdim_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2812288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2813288943Sdim                                                 __u);
2814288943Sdim}
2815288943Sdim
2816288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2817288943Sdim_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2818288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2819288943Sdim                                               (__mmask8)-1);
2820288943Sdim}
2821288943Sdim
2822288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2823288943Sdim_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2824288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2825288943Sdim                                               __u);
2826288943Sdim}
2827288943Sdim
2828288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2829288943Sdim_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2830288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2831288943Sdim                                                (__mmask8)-1);
2832288943Sdim}
2833288943Sdim
2834288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2835288943Sdim_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2836288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2837288943Sdim                                                __u);
2838288943Sdim}
2839288943Sdim
2840288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2841288943Sdim_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2842288943Sdim  return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2843288943Sdim                                                   (__mmask16)-1);
2844288943Sdim}
2845288943Sdim
2846288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2847288943Sdim_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2848288943Sdim  return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2849288943Sdim                                                   __u);
2850288943Sdim}
2851288943Sdim
2852288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2853288943Sdim_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2854288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2855288943Sdim                                                 (__mmask16)-1);
2856288943Sdim}
2857288943Sdim
2858288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2859288943Sdim_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2860288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2861288943Sdim                                                 __u);
2862288943Sdim}
2863288943Sdim
2864288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2865288943Sdim_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2866288943Sdim  return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2867288943Sdim                                                  __u);
2868288943Sdim}
2869288943Sdim
2870288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2871288943Sdim_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2872288943Sdim  return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2873288943Sdim                                                  (__mmask8)-1);
2874288943Sdim}
2875288943Sdim
2876288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2877288943Sdim_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2878288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2879288943Sdim                                                (__mmask8)-1);
2880288943Sdim}
2881288943Sdim
2882288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2883288943Sdim_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2884288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2885288943Sdim                                                __u);
2886288943Sdim}
2887288943Sdim
2888288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2889288943Sdim_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2890288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2891288943Sdim                                                (__mmask16)-1);
2892288943Sdim}
2893288943Sdim
2894288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2895288943Sdim_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2896288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2897288943Sdim                                                __u);
2898288943Sdim}
2899288943Sdim
2900288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2901288943Sdim_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2902288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2903288943Sdim                                                 (__mmask16)-1);
2904288943Sdim}
2905288943Sdim
2906288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2907288943Sdim_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2908288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2909288943Sdim                                                 __u);
2910288943Sdim}
2911288943Sdim
2912288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2913288943Sdim_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2914288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2915288943Sdim                                               (__mmask8)-1);
2916288943Sdim}
2917288943Sdim
2918288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2919288943Sdim_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2920288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2921288943Sdim                                               __u);
2922288943Sdim}
2923288943Sdim
2924288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2925288943Sdim_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2926288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2927288943Sdim                                                (__mmask8)-1);
2928288943Sdim}
2929288943Sdim
2930288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2931288943Sdim_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2932288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2933288943Sdim                                                __u);
2934288943Sdim}
2935288943Sdim
2936288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2937288943Sdim_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2938288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2939288943Sdim                                                (__mmask16)-1);
2940288943Sdim}
2941288943Sdim
2942288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2943288943Sdim_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2944288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2945288943Sdim                                                __u);
2946288943Sdim}
2947288943Sdim
2948288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2949288943Sdim_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2950288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2951288943Sdim                                                 (__mmask16)-1);
2952288943Sdim}
2953288943Sdim
2954288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2955288943Sdim_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2956288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2957288943Sdim                                                 __u);
2958288943Sdim}
2959288943Sdim
2960288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2961288943Sdim_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2962288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2963288943Sdim                                               (__mmask8)-1);
2964288943Sdim}
2965288943Sdim
2966288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2967288943Sdim_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2968288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2969288943Sdim                                               __u);
2970288943Sdim}
2971288943Sdim
2972288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2973288943Sdim_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2974288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2975288943Sdim                                                (__mmask8)-1);
2976288943Sdim}
2977288943Sdim
2978288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2979288943Sdim_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2980288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2981288943Sdim                                                __u);
2982288943Sdim}
2983288943Sdim
2984288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2985288943Sdim_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2986288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2987288943Sdim                                                (__mmask16)-1);
2988288943Sdim}
2989288943Sdim
2990288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2991288943Sdim_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2992288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2993288943Sdim                                                __u);
2994288943Sdim}
2995288943Sdim
2996288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2997288943Sdim_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2998288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2999288943Sdim                                                 (__mmask16)-1);
3000288943Sdim}
3001288943Sdim
3002288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
3003288943Sdim_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3004288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3005288943Sdim                                                 __u);
3006288943Sdim}
3007288943Sdim
3008288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
3009288943Sdim_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3010288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3011288943Sdim                                               (__mmask8)-1);
3012288943Sdim}
3013288943Sdim
3014288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
3015288943Sdim_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3016288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3017288943Sdim                                               __u);
3018288943Sdim}
3019288943Sdim
3020288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
3021288943Sdim_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3022288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3023288943Sdim                                                (__mmask8)-1);
3024288943Sdim}
3025288943Sdim
3026288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
3027288943Sdim_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3028288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3029288943Sdim                                                __u);
3030288943Sdim}
3031288943Sdim
3032288943Sdim#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
3033296417Sdim  (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3034296417Sdim                                         (__v16si)(__m512i)(b), (p), \
3035288943Sdim                                         (__mmask16)-1); })
3036288943Sdim
3037288943Sdim#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
3038296417Sdim  (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3039296417Sdim                                          (__v16si)(__m512i)(b), (p), \
3040288943Sdim                                          (__mmask16)-1); })
3041288943Sdim
3042288943Sdim#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
3043296417Sdim  (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3044296417Sdim                                        (__v8di)(__m512i)(b), (p), \
3045288943Sdim                                        (__mmask8)-1); })
3046288943Sdim
3047288943Sdim#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
3048296417Sdim  (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3049296417Sdim                                         (__v8di)(__m512i)(b), (p), \
3050288943Sdim                                         (__mmask8)-1); })
3051288943Sdim
3052288943Sdim#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
3053296417Sdim  (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3054296417Sdim                                         (__v16si)(__m512i)(b), (p), \
3055288943Sdim                                         (__mmask16)(m)); })
3056288943Sdim
3057288943Sdim#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
3058296417Sdim  (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3059296417Sdim                                          (__v16si)(__m512i)(b), (p), \
3060288943Sdim                                          (__mmask16)(m)); })
3061288943Sdim
3062288943Sdim#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
3063296417Sdim  (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3064296417Sdim                                        (__v8di)(__m512i)(b), (p), \
3065288943Sdim                                        (__mmask8)(m)); })
3066288943Sdim
3067288943Sdim#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
3068296417Sdim  (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3069296417Sdim                                         (__v8di)(__m512i)(b), (p), \
3070288943Sdim                                         (__mmask8)(m)); })
3071288943Sdim
3072288943Sdim#undef __DEFAULT_FN_ATTRS
3073288943Sdim
3074277325Sdim#endif // __AVX512FINTRIN_H
3075