avx512fintrin.h revision 288943
1277325Sdim/*===---- avx512fintrin.h - AVX2 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. */
50288943Sdim#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
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
60288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
61277325Sdim_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
62277325Sdim{
63277325Sdim  return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
64277325Sdim                 (__v16si)
65277325Sdim                 _mm512_setzero_si512 (),
66277325Sdim                 __M);
67277325Sdim}
68277325Sdim
69288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
70277325Sdim_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
71277325Sdim{
72277325Sdim#ifdef __x86_64__
73277325Sdim  return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
74277325Sdim                 (__v8di)
75277325Sdim                 _mm512_setzero_si512 (),
76277325Sdim                 __M);
77277325Sdim#else
78277325Sdim  return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
79277325Sdim                 (__v8di)
80277325Sdim                 _mm512_setzero_si512 (),
81277325Sdim                 __M);
82277325Sdim#endif
83277325Sdim}
84277325Sdim
85288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
86277325Sdim_mm512_setzero_ps(void)
87277325Sdim{
88277325Sdim  return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
89277325Sdim                   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
90277325Sdim}
91288943Sdimstatic  __inline __m512d __DEFAULT_FN_ATTRS
92277325Sdim_mm512_setzero_pd(void)
93277325Sdim{
94277325Sdim  return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
95277325Sdim}
96277325Sdim
97288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
98277325Sdim_mm512_set1_ps(float __w)
99277325Sdim{
100277325Sdim  return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
101277325Sdim                   __w, __w, __w, __w, __w, __w, __w, __w  };
102277325Sdim}
103277325Sdim
104288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
105277325Sdim_mm512_set1_pd(double __w)
106277325Sdim{
107277325Sdim  return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
108277325Sdim}
109277325Sdim
110288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
111277325Sdim_mm512_set1_epi32(int __s)
112277325Sdim{
113277325Sdim  return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
114277325Sdim                             __s, __s, __s, __s, __s, __s, __s, __s };
115277325Sdim}
116277325Sdim
117288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
118277325Sdim_mm512_set1_epi64(long long __d)
119277325Sdim{
120277325Sdim  return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
121277325Sdim}
122277325Sdim
123288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
124277325Sdim_mm512_broadcastss_ps(__m128 __X)
125277325Sdim{
126277325Sdim  float __f = __X[0];
127277325Sdim  return (__v16sf){ __f, __f, __f, __f,
128277325Sdim                    __f, __f, __f, __f,
129277325Sdim                    __f, __f, __f, __f,
130277325Sdim                    __f, __f, __f, __f };
131277325Sdim}
132277325Sdim
133288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
134277325Sdim_mm512_broadcastsd_pd(__m128d __X)
135277325Sdim{
136277325Sdim  double __d = __X[0];
137277325Sdim  return (__v8df){ __d, __d, __d, __d,
138277325Sdim                   __d, __d, __d, __d };
139277325Sdim}
140277325Sdim
141277325Sdim/* Cast between vector types */
142277325Sdim
143288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
144277325Sdim_mm512_castpd256_pd512(__m256d __a)
145277325Sdim{
146277325Sdim  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
147277325Sdim}
148277325Sdim
149288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
150277325Sdim_mm512_castps256_ps512(__m256 __a)
151277325Sdim{
152277325Sdim  return __builtin_shufflevector(__a, __a, 0,  1,  2,  3,  4,  5,  6,  7,
153277325Sdim                                          -1, -1, -1, -1, -1, -1, -1, -1);
154277325Sdim}
155277325Sdim
156288943Sdimstatic __inline __m128d __DEFAULT_FN_ATTRS
157277325Sdim_mm512_castpd512_pd128(__m512d __a)
158277325Sdim{
159277325Sdim  return __builtin_shufflevector(__a, __a, 0, 1);
160277325Sdim}
161277325Sdim
162288943Sdimstatic __inline __m128 __DEFAULT_FN_ATTRS
163277325Sdim_mm512_castps512_ps128(__m512 __a)
164277325Sdim{
165277325Sdim  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
166277325Sdim}
167277325Sdim
168288943Sdim/* Bitwise operators */
169288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
170288943Sdim_mm512_and_epi32(__m512i __a, __m512i __b)
171288943Sdim{
172288943Sdim  return __a & __b;
173288943Sdim}
174288943Sdim
175288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
176288943Sdim_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
177288943Sdim{
178288943Sdim  return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
179288943Sdim              (__v16si) __b,
180288943Sdim              (__v16si) __src,
181288943Sdim              (__mmask16) __k);
182288943Sdim}
183288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
184288943Sdim_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
185288943Sdim{
186288943Sdim  return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
187288943Sdim              (__v16si) __b,
188288943Sdim              (__v16si)
189288943Sdim              _mm512_setzero_si512 (),
190288943Sdim              (__mmask16) __k);
191288943Sdim}
192288943Sdim
193288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
194288943Sdim_mm512_and_epi64(__m512i __a, __m512i __b)
195288943Sdim{
196288943Sdim  return __a & __b;
197288943Sdim}
198288943Sdim
199288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
200288943Sdim_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
201288943Sdim{
202288943Sdim  return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
203288943Sdim              (__v8di) __b,
204288943Sdim              (__v8di) __src,
205288943Sdim              (__mmask8) __k);
206288943Sdim}
207288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
208288943Sdim_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
209288943Sdim{
210288943Sdim  return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
211288943Sdim              (__v8di) __b,
212288943Sdim              (__v8di)
213288943Sdim              _mm512_setzero_si512 (),
214288943Sdim              (__mmask8) __k);
215288943Sdim}
216288943Sdim
217288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
218288943Sdim_mm512_andnot_epi32 (__m512i __A, __m512i __B)
219288943Sdim{
220288943Sdim  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
221288943Sdim              (__v16si) __B,
222288943Sdim              (__v16si)
223288943Sdim              _mm512_setzero_si512 (),
224288943Sdim              (__mmask16) -1);
225288943Sdim}
226288943Sdim
227288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
228288943Sdim_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
229288943Sdim{
230288943Sdim  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
231288943Sdim              (__v16si) __B,
232288943Sdim              (__v16si) __W,
233288943Sdim              (__mmask16) __U);
234288943Sdim}
235288943Sdim
236288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
237288943Sdim_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
238288943Sdim{
239288943Sdim  return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
240288943Sdim              (__v16si) __B,
241288943Sdim              (__v16si)
242288943Sdim              _mm512_setzero_si512 (),
243288943Sdim              (__mmask16) __U);
244288943Sdim}
245288943Sdim
246288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
247288943Sdim_mm512_andnot_epi64 (__m512i __A, __m512i __B)
248288943Sdim{
249288943Sdim  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
250288943Sdim              (__v8di) __B,
251288943Sdim              (__v8di)
252288943Sdim              _mm512_setzero_si512 (),
253288943Sdim              (__mmask8) -1);
254288943Sdim}
255288943Sdim
256288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
257288943Sdim_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
258288943Sdim{
259288943Sdim  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
260288943Sdim              (__v8di) __B,
261288943Sdim              (__v8di) __W, __U);
262288943Sdim}
263288943Sdim
264288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
265288943Sdim_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
266288943Sdim{
267288943Sdim  return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
268288943Sdim              (__v8di) __B,
269288943Sdim              (__v8di)
270288943Sdim              _mm512_setzero_pd (),
271288943Sdim              __U);
272288943Sdim}
273288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
274288943Sdim_mm512_or_epi32(__m512i __a, __m512i __b)
275288943Sdim{
276288943Sdim  return __a | __b;
277288943Sdim}
278288943Sdim
279288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
280288943Sdim_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
281288943Sdim{
282288943Sdim  return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
283288943Sdim              (__v16si) __b,
284288943Sdim              (__v16si) __src,
285288943Sdim              (__mmask16) __k);
286288943Sdim}
287288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
288288943Sdim_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
289288943Sdim{
290288943Sdim  return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
291288943Sdim              (__v16si) __b,
292288943Sdim              (__v16si)
293288943Sdim              _mm512_setzero_si512 (),
294288943Sdim              (__mmask16) __k);
295288943Sdim}
296288943Sdim
297288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
298288943Sdim_mm512_or_epi64(__m512i __a, __m512i __b)
299288943Sdim{
300288943Sdim  return __a | __b;
301288943Sdim}
302288943Sdim
303288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
304288943Sdim_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
305288943Sdim{
306288943Sdim  return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
307288943Sdim              (__v8di) __b,
308288943Sdim              (__v8di) __src,
309288943Sdim              (__mmask8) __k);
310288943Sdim}
311288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
312288943Sdim_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
313288943Sdim{
314288943Sdim  return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
315288943Sdim              (__v8di) __b,
316288943Sdim              (__v8di)
317288943Sdim              _mm512_setzero_si512 (),
318288943Sdim              (__mmask8) __k);
319288943Sdim}
320288943Sdim
321288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
322288943Sdim_mm512_xor_epi32(__m512i __a, __m512i __b)
323288943Sdim{
324288943Sdim  return __a ^ __b;
325288943Sdim}
326288943Sdim
327288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
328288943Sdim_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
329288943Sdim{
330288943Sdim  return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
331288943Sdim              (__v16si) __b,
332288943Sdim              (__v16si) __src,
333288943Sdim              (__mmask16) __k);
334288943Sdim}
335288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
336288943Sdim_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
337288943Sdim{
338288943Sdim  return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
339288943Sdim              (__v16si) __b,
340288943Sdim              (__v16si)
341288943Sdim              _mm512_setzero_si512 (),
342288943Sdim              (__mmask16) __k);
343288943Sdim}
344288943Sdim
345288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
346288943Sdim_mm512_xor_epi64(__m512i __a, __m512i __b)
347288943Sdim{
348288943Sdim  return __a ^ __b;
349288943Sdim}
350288943Sdim
351288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
352288943Sdim_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
353288943Sdim{
354288943Sdim  return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
355288943Sdim              (__v8di) __b,
356288943Sdim              (__v8di) __src,
357288943Sdim              (__mmask8) __k);
358288943Sdim}
359288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
360288943Sdim_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
361288943Sdim{
362288943Sdim  return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
363288943Sdim              (__v8di) __b,
364288943Sdim              (__v8di)
365288943Sdim              _mm512_setzero_si512 (),
366288943Sdim              (__mmask8) __k);
367288943Sdim}
368288943Sdim
369288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
370288943Sdim_mm512_and_si512(__m512i __a, __m512i __b)
371288943Sdim{
372288943Sdim  return __a & __b;
373288943Sdim}
374288943Sdim
375288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
376288943Sdim_mm512_or_si512(__m512i __a, __m512i __b)
377288943Sdim{
378288943Sdim  return __a | __b;
379288943Sdim}
380288943Sdim
381288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
382288943Sdim_mm512_xor_si512(__m512i __a, __m512i __b)
383288943Sdim{
384288943Sdim  return __a ^ __b;
385288943Sdim}
386277325Sdim/* Arithmetic */
387277325Sdim
388288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
389277325Sdim_mm512_add_pd(__m512d __a, __m512d __b)
390277325Sdim{
391277325Sdim  return __a + __b;
392277325Sdim}
393277325Sdim
394288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
395277325Sdim_mm512_add_ps(__m512 __a, __m512 __b)
396277325Sdim{
397277325Sdim  return __a + __b;
398277325Sdim}
399277325Sdim
400288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
401277325Sdim_mm512_mul_pd(__m512d __a, __m512d __b)
402277325Sdim{
403277325Sdim  return __a * __b;
404277325Sdim}
405277325Sdim
406288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
407277325Sdim_mm512_mul_ps(__m512 __a, __m512 __b)
408277325Sdim{
409277325Sdim  return __a * __b;
410277325Sdim}
411277325Sdim
412288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
413277325Sdim_mm512_sub_pd(__m512d __a, __m512d __b)
414277325Sdim{
415277325Sdim  return __a - __b;
416277325Sdim}
417277325Sdim
418288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
419277325Sdim_mm512_sub_ps(__m512 __a, __m512 __b)
420277325Sdim{
421277325Sdim  return __a - __b;
422277325Sdim}
423277325Sdim
424288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
425288943Sdim_mm512_add_epi64 (__m512i __A, __m512i __B)
426288943Sdim{
427288943Sdim  return (__m512i) ((__v8di) __A + (__v8di) __B);
428288943Sdim}
429288943Sdim
430288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
431288943Sdim_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
432288943Sdim{
433288943Sdim  return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
434288943Sdim             (__v8di) __B,
435288943Sdim             (__v8di) __W,
436288943Sdim             (__mmask8) __U);
437288943Sdim}
438288943Sdim
439288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
440288943Sdim_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
441288943Sdim{
442288943Sdim  return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
443288943Sdim             (__v8di) __B,
444288943Sdim             (__v8di)
445288943Sdim             _mm512_setzero_si512 (),
446288943Sdim             (__mmask8) __U);
447288943Sdim}
448288943Sdim
449288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
450288943Sdim_mm512_sub_epi64 (__m512i __A, __m512i __B)
451288943Sdim{
452288943Sdim  return (__m512i) ((__v8di) __A - (__v8di) __B);
453288943Sdim}
454288943Sdim
455288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
456288943Sdim_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
457288943Sdim{
458288943Sdim  return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
459288943Sdim             (__v8di) __B,
460288943Sdim             (__v8di) __W,
461288943Sdim             (__mmask8) __U);
462288943Sdim}
463288943Sdim
464288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
465288943Sdim_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
466288943Sdim{
467288943Sdim  return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
468288943Sdim             (__v8di) __B,
469288943Sdim             (__v8di)
470288943Sdim             _mm512_setzero_si512 (),
471288943Sdim             (__mmask8) __U);
472288943Sdim}
473288943Sdim
474288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
475288943Sdim_mm512_add_epi32 (__m512i __A, __m512i __B)
476288943Sdim{
477288943Sdim  return (__m512i) ((__v16si) __A + (__v16si) __B);
478288943Sdim}
479288943Sdim
480288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
481288943Sdim_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
482288943Sdim{
483288943Sdim  return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
484288943Sdim             (__v16si) __B,
485288943Sdim             (__v16si) __W,
486288943Sdim             (__mmask16) __U);
487288943Sdim}
488288943Sdim
489288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
490288943Sdim_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
491288943Sdim{
492288943Sdim  return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
493288943Sdim             (__v16si) __B,
494288943Sdim             (__v16si)
495288943Sdim             _mm512_setzero_si512 (),
496288943Sdim             (__mmask16) __U);
497288943Sdim}
498288943Sdim
499288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
500288943Sdim_mm512_sub_epi32 (__m512i __A, __m512i __B)
501288943Sdim{
502288943Sdim  return (__m512i) ((__v16si) __A - (__v16si) __B);
503288943Sdim}
504288943Sdim
505288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
506288943Sdim_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
507288943Sdim{
508288943Sdim  return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
509288943Sdim             (__v16si) __B,
510288943Sdim             (__v16si) __W,
511288943Sdim             (__mmask16) __U);
512288943Sdim}
513288943Sdim
514288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS
515288943Sdim_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
516288943Sdim{
517288943Sdim  return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
518288943Sdim             (__v16si) __B,
519288943Sdim             (__v16si)
520288943Sdim             _mm512_setzero_si512 (),
521288943Sdim             (__mmask16) __U);
522288943Sdim}
523288943Sdim
524288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
525277325Sdim_mm512_max_pd(__m512d __A, __m512d __B)
526277325Sdim{
527277325Sdim  return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
528277325Sdim             (__v8df) __B,
529277325Sdim             (__v8df)
530277325Sdim             _mm512_setzero_pd (),
531277325Sdim             (__mmask8) -1,
532277325Sdim             _MM_FROUND_CUR_DIRECTION);
533277325Sdim}
534277325Sdim
535288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
536277325Sdim_mm512_max_ps(__m512 __A, __m512 __B)
537277325Sdim{
538277325Sdim  return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
539277325Sdim            (__v16sf) __B,
540277325Sdim            (__v16sf)
541277325Sdim            _mm512_setzero_ps (),
542277325Sdim            (__mmask16) -1,
543277325Sdim            _MM_FROUND_CUR_DIRECTION);
544277325Sdim}
545277325Sdim
546277325Sdimstatic __inline __m512i
547288943Sdim__DEFAULT_FN_ATTRS
548277325Sdim_mm512_max_epi32(__m512i __A, __m512i __B)
549277325Sdim{
550277325Sdim  return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
551277325Sdim              (__v16si) __B,
552277325Sdim              (__v16si)
553277325Sdim              _mm512_setzero_si512 (),
554277325Sdim              (__mmask16) -1);
555277325Sdim}
556277325Sdim
557288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
558277325Sdim_mm512_max_epu32(__m512i __A, __m512i __B)
559277325Sdim{
560277325Sdim  return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
561277325Sdim              (__v16si) __B,
562277325Sdim              (__v16si)
563277325Sdim              _mm512_setzero_si512 (),
564277325Sdim              (__mmask16) -1);
565277325Sdim}
566277325Sdim
567288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
568277325Sdim_mm512_max_epi64(__m512i __A, __m512i __B)
569277325Sdim{
570277325Sdim  return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
571277325Sdim              (__v8di) __B,
572277325Sdim              (__v8di)
573277325Sdim              _mm512_setzero_si512 (),
574277325Sdim              (__mmask8) -1);
575277325Sdim}
576277325Sdim
577288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
578277325Sdim_mm512_max_epu64(__m512i __A, __m512i __B)
579277325Sdim{
580277325Sdim  return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
581277325Sdim              (__v8di) __B,
582277325Sdim              (__v8di)
583277325Sdim              _mm512_setzero_si512 (),
584277325Sdim              (__mmask8) -1);
585277325Sdim}
586277325Sdim
587288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
588277325Sdim_mm512_min_pd(__m512d __A, __m512d __B)
589277325Sdim{
590277325Sdim  return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
591277325Sdim             (__v8df) __B,
592277325Sdim             (__v8df)
593277325Sdim             _mm512_setzero_pd (),
594277325Sdim             (__mmask8) -1,
595277325Sdim             _MM_FROUND_CUR_DIRECTION);
596277325Sdim}
597277325Sdim
598288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
599277325Sdim_mm512_min_ps(__m512 __A, __m512 __B)
600277325Sdim{
601277325Sdim  return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
602277325Sdim            (__v16sf) __B,
603277325Sdim            (__v16sf)
604277325Sdim            _mm512_setzero_ps (),
605277325Sdim            (__mmask16) -1,
606277325Sdim            _MM_FROUND_CUR_DIRECTION);
607277325Sdim}
608277325Sdim
609277325Sdimstatic __inline __m512i
610288943Sdim__DEFAULT_FN_ATTRS
611277325Sdim_mm512_min_epi32(__m512i __A, __m512i __B)
612277325Sdim{
613277325Sdim  return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
614277325Sdim              (__v16si) __B,
615277325Sdim              (__v16si)
616277325Sdim              _mm512_setzero_si512 (),
617277325Sdim              (__mmask16) -1);
618277325Sdim}
619277325Sdim
620288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
621277325Sdim_mm512_min_epu32(__m512i __A, __m512i __B)
622277325Sdim{
623277325Sdim  return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
624277325Sdim              (__v16si) __B,
625277325Sdim              (__v16si)
626277325Sdim              _mm512_setzero_si512 (),
627277325Sdim              (__mmask16) -1);
628277325Sdim}
629277325Sdim
630288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
631277325Sdim_mm512_min_epi64(__m512i __A, __m512i __B)
632277325Sdim{
633277325Sdim  return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
634277325Sdim              (__v8di) __B,
635277325Sdim              (__v8di)
636277325Sdim              _mm512_setzero_si512 (),
637277325Sdim              (__mmask8) -1);
638277325Sdim}
639277325Sdim
640288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
641277325Sdim_mm512_min_epu64(__m512i __A, __m512i __B)
642277325Sdim{
643277325Sdim  return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
644277325Sdim              (__v8di) __B,
645277325Sdim              (__v8di)
646277325Sdim              _mm512_setzero_si512 (),
647277325Sdim              (__mmask8) -1);
648277325Sdim}
649277325Sdim
650288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
651277325Sdim_mm512_mul_epi32(__m512i __X, __m512i __Y)
652277325Sdim{
653277325Sdim  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
654277325Sdim              (__v16si) __Y,
655277325Sdim              (__v8di)
656277325Sdim              _mm512_setzero_si512 (),
657277325Sdim              (__mmask8) -1);
658277325Sdim}
659277325Sdim
660288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
661288943Sdim_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
662288943Sdim{
663288943Sdim  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
664288943Sdim              (__v16si) __Y,
665288943Sdim              (__v8di) __W, __M);
666288943Sdim}
667288943Sdim
668288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
669288943Sdim_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
670288943Sdim{
671288943Sdim  return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
672288943Sdim              (__v16si) __Y,
673288943Sdim              (__v8di)
674288943Sdim              _mm512_setzero_si512 (),
675288943Sdim              __M);
676288943Sdim}
677288943Sdim
678288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
679277325Sdim_mm512_mul_epu32(__m512i __X, __m512i __Y)
680277325Sdim{
681277325Sdim  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
682277325Sdim               (__v16si) __Y,
683277325Sdim               (__v8di)
684277325Sdim               _mm512_setzero_si512 (),
685277325Sdim               (__mmask8) -1);
686277325Sdim}
687277325Sdim
688288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
689288943Sdim_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
690288943Sdim{
691288943Sdim  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
692288943Sdim               (__v16si) __Y,
693288943Sdim               (__v8di) __W, __M);
694288943Sdim}
695288943Sdim
696288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
697288943Sdim_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
698288943Sdim{
699288943Sdim  return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
700288943Sdim               (__v16si) __Y,
701288943Sdim               (__v8di)
702288943Sdim               _mm512_setzero_si512 (),
703288943Sdim               __M);
704288943Sdim}
705288943Sdim
706288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
707288943Sdim_mm512_mullo_epi32 (__m512i __A, __m512i __B)
708288943Sdim{
709288943Sdim  return (__m512i) ((__v16si) __A * (__v16si) __B);
710288943Sdim}
711288943Sdim
712288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
713288943Sdim_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
714288943Sdim{
715288943Sdim  return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
716288943Sdim              (__v16si) __B,
717288943Sdim              (__v16si)
718288943Sdim              _mm512_setzero_si512 (),
719288943Sdim              __M);
720288943Sdim}
721288943Sdim
722288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
723288943Sdim_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
724288943Sdim{
725288943Sdim  return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
726288943Sdim              (__v16si) __B,
727288943Sdim              (__v16si) __W, __M);
728288943Sdim}
729288943Sdim
730288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
731277325Sdim_mm512_sqrt_pd(__m512d a)
732277325Sdim{
733277325Sdim  return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
734277325Sdim                                                (__v8df) _mm512_setzero_pd (),
735277325Sdim                                                (__mmask8) -1,
736277325Sdim                                                _MM_FROUND_CUR_DIRECTION);
737277325Sdim}
738277325Sdim
739288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
740277325Sdim_mm512_sqrt_ps(__m512 a)
741277325Sdim{
742277325Sdim  return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
743277325Sdim                                               (__v16sf) _mm512_setzero_ps (),
744277325Sdim                                               (__mmask16) -1,
745277325Sdim                                               _MM_FROUND_CUR_DIRECTION);
746277325Sdim}
747277325Sdim
748288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
749277325Sdim_mm512_rsqrt14_pd(__m512d __A)
750277325Sdim{
751277325Sdim  return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
752277325Sdim                 (__v8df)
753277325Sdim                 _mm512_setzero_pd (),
754277325Sdim                 (__mmask8) -1);}
755277325Sdim
756288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
757277325Sdim_mm512_rsqrt14_ps(__m512 __A)
758277325Sdim{
759277325Sdim  return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
760277325Sdim                (__v16sf)
761277325Sdim                _mm512_setzero_ps (),
762277325Sdim                (__mmask16) -1);
763277325Sdim}
764277325Sdim
765288943Sdimstatic  __inline__ __m128 __DEFAULT_FN_ATTRS
766277325Sdim_mm_rsqrt14_ss(__m128 __A, __m128 __B)
767277325Sdim{
768277325Sdim  return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
769277325Sdim             (__v4sf) __B,
770277325Sdim             (__v4sf)
771277325Sdim             _mm_setzero_ps (),
772277325Sdim             (__mmask8) -1);
773277325Sdim}
774277325Sdim
775288943Sdimstatic  __inline__ __m128d __DEFAULT_FN_ATTRS
776277325Sdim_mm_rsqrt14_sd(__m128d __A, __m128d __B)
777277325Sdim{
778277325Sdim  return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
779277325Sdim              (__v2df) __B,
780277325Sdim              (__v2df)
781277325Sdim              _mm_setzero_pd (),
782277325Sdim              (__mmask8) -1);
783277325Sdim}
784277325Sdim
785288943Sdimstatic  __inline__ __m512d __DEFAULT_FN_ATTRS
786277325Sdim_mm512_rcp14_pd(__m512d __A)
787277325Sdim{
788277325Sdim  return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
789277325Sdim               (__v8df)
790277325Sdim               _mm512_setzero_pd (),
791277325Sdim               (__mmask8) -1);
792277325Sdim}
793277325Sdim
794288943Sdimstatic  __inline__ __m512 __DEFAULT_FN_ATTRS
795277325Sdim_mm512_rcp14_ps(__m512 __A)
796277325Sdim{
797277325Sdim  return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
798277325Sdim              (__v16sf)
799277325Sdim              _mm512_setzero_ps (),
800277325Sdim              (__mmask16) -1);
801277325Sdim}
802288943Sdimstatic  __inline__ __m128 __DEFAULT_FN_ATTRS
803277325Sdim_mm_rcp14_ss(__m128 __A, __m128 __B)
804277325Sdim{
805277325Sdim  return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
806277325Sdim                 (__v4sf) __B,
807277325Sdim                 (__v4sf)
808277325Sdim                 _mm_setzero_ps (),
809277325Sdim                 (__mmask8) -1);
810277325Sdim}
811277325Sdim
812288943Sdimstatic  __inline__ __m128d __DEFAULT_FN_ATTRS
813277325Sdim_mm_rcp14_sd(__m128d __A, __m128d __B)
814277325Sdim{
815277325Sdim  return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
816277325Sdim            (__v2df) __B,
817277325Sdim            (__v2df)
818277325Sdim            _mm_setzero_pd (),
819277325Sdim            (__mmask8) -1);
820277325Sdim}
821277325Sdim
822288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
823277325Sdim_mm512_floor_ps(__m512 __A)
824277325Sdim{
825277325Sdim  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
826277325Sdim                                                  _MM_FROUND_FLOOR,
827277325Sdim                                                  (__v16sf) __A, -1,
828277325Sdim                                                  _MM_FROUND_CUR_DIRECTION);
829277325Sdim}
830277325Sdim
831288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
832277325Sdim_mm512_floor_pd(__m512d __A)
833277325Sdim{
834277325Sdim  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
835277325Sdim                                                   _MM_FROUND_FLOOR,
836277325Sdim                                                   (__v8df) __A, -1,
837277325Sdim                                                   _MM_FROUND_CUR_DIRECTION);
838277325Sdim}
839277325Sdim
840288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
841277325Sdim_mm512_ceil_ps(__m512 __A)
842277325Sdim{
843277325Sdim  return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
844277325Sdim                                                  _MM_FROUND_CEIL,
845277325Sdim                                                  (__v16sf) __A, -1,
846277325Sdim                                                  _MM_FROUND_CUR_DIRECTION);
847277325Sdim}
848277325Sdim
849288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
850277325Sdim_mm512_ceil_pd(__m512d __A)
851277325Sdim{
852277325Sdim  return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
853277325Sdim                                                   _MM_FROUND_CEIL,
854277325Sdim                                                   (__v8df) __A, -1,
855277325Sdim                                                   _MM_FROUND_CUR_DIRECTION);
856277325Sdim}
857277325Sdim
858288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
859277325Sdim_mm512_abs_epi64(__m512i __A)
860277325Sdim{
861277325Sdim  return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
862277325Sdim             (__v8di)
863277325Sdim             _mm512_setzero_si512 (),
864277325Sdim             (__mmask8) -1);
865277325Sdim}
866277325Sdim
867288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
868277325Sdim_mm512_abs_epi32(__m512i __A)
869277325Sdim{
870277325Sdim  return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
871277325Sdim             (__v16si)
872277325Sdim             _mm512_setzero_si512 (),
873277325Sdim             (__mmask16) -1);
874277325Sdim}
875277325Sdim
876288943Sdim#define _mm512_roundscale_ps(A, B) __extension__ ({ \
877288943Sdim  (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
878288943Sdim                                         -1, _MM_FROUND_CUR_DIRECTION); })
879288943Sdim
880288943Sdim#define _mm512_roundscale_pd(A, B) __extension__ ({ \
881288943Sdim  (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
882288943Sdim                                          -1, _MM_FROUND_CUR_DIRECTION); })
883288943Sdim
884288943Sdim#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
885288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
886288943Sdim                                             (__v8df) (B), (__v8df) (C), \
887288943Sdim                                             (__mmask8) -1, (R)); })
888288943Sdim
889288943Sdim
890288943Sdim#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
891288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
892288943Sdim                                             (__v8df) (B), (__v8df) (C), \
893288943Sdim                                             (__mmask8) (U), (R)); })
894288943Sdim
895288943Sdim
896288943Sdim#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
897288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
898288943Sdim                                              (__v8df) (B), (__v8df) (C), \
899288943Sdim                                              (__mmask8) (U), (R)); })
900288943Sdim
901288943Sdim
902288943Sdim#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
903288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
904288943Sdim                                              (__v8df) (B), (__v8df) (C), \
905288943Sdim                                              (__mmask8) (U), (R)); })
906288943Sdim
907288943Sdim
908288943Sdim#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
909288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
910288943Sdim                                             (__v8df) (B), -(__v8df) (C), \
911288943Sdim                                             (__mmask8) -1, (R)); })
912288943Sdim
913288943Sdim
914288943Sdim#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
915288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
916288943Sdim                                             (__v8df) (B), -(__v8df) (C), \
917288943Sdim                                             (__mmask8) (U), (R)); })
918288943Sdim
919288943Sdim
920288943Sdim#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
921288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
922288943Sdim                                              (__v8df) (B), -(__v8df) (C), \
923288943Sdim                                              (__mmask8) (U), (R)); })
924288943Sdim
925288943Sdim
926288943Sdim#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
927288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
928288943Sdim                                             (__v8df) (B), (__v8df) (C), \
929288943Sdim                                             (__mmask8) -1, (R)); })
930288943Sdim
931288943Sdim
932288943Sdim#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
933288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
934288943Sdim                                              (__v8df) (B), (__v8df) (C), \
935288943Sdim                                              (__mmask8) (U), (R)); })
936288943Sdim
937288943Sdim
938288943Sdim#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
939288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
940288943Sdim                                              (__v8df) (B), (__v8df) (C), \
941288943Sdim                                              (__mmask8) (U), (R)); })
942288943Sdim
943288943Sdim
944288943Sdim#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
945288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
946288943Sdim                                             (__v8df) (B), -(__v8df) (C), \
947288943Sdim                                             (__mmask8) -1, (R)); })
948288943Sdim
949288943Sdim
950288943Sdim#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
951288943Sdim  (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
952288943Sdim                                              (__v8df) (B), -(__v8df) (C), \
953288943Sdim                                              (__mmask8) (U), (R)); })
954288943Sdim
955288943Sdim
956288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
957288943Sdim_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
958277325Sdim{
959288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
960288943Sdim                                                    (__v8df) __B,
961288943Sdim                                                    (__v8df) __C,
962288943Sdim                                                    (__mmask8) -1,
963288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
964277325Sdim}
965288943Sdim
966288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
967288943Sdim_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
968277325Sdim{
969288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
970288943Sdim                                                    (__v8df) __B,
971288943Sdim                                                    (__v8df) __C,
972288943Sdim                                                    (__mmask8) __U,
973288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
974277325Sdim}
975277325Sdim
976288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
977288943Sdim_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
978277325Sdim{
979288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
980288943Sdim                                                     (__v8df) __B,
981288943Sdim                                                     (__v8df) __C,
982288943Sdim                                                     (__mmask8) __U,
983288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
984277325Sdim}
985277325Sdim
986288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
987288943Sdim_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
988288943Sdim{
989288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
990288943Sdim                                                     (__v8df) __B,
991288943Sdim                                                     (__v8df) __C,
992288943Sdim                                                     (__mmask8) __U,
993288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
994288943Sdim}
995288943Sdim
996288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
997277325Sdim_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
998277325Sdim{
999288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1000288943Sdim                                                    (__v8df) __B,
1001288943Sdim                                                    -(__v8df) __C,
1002288943Sdim                                                    (__mmask8) -1,
1003288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1004277325Sdim}
1005277325Sdim
1006288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1007288943Sdim_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1008288943Sdim{
1009288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1010288943Sdim                                                    (__v8df) __B,
1011288943Sdim                                                    -(__v8df) __C,
1012288943Sdim                                                    (__mmask8) __U,
1013288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1014288943Sdim}
1015288943Sdim
1016288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1017288943Sdim_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1018288943Sdim{
1019288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1020288943Sdim                                                     (__v8df) __B,
1021288943Sdim                                                     -(__v8df) __C,
1022288943Sdim                                                     (__mmask8) __U,
1023288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1024288943Sdim}
1025288943Sdim
1026288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1027277325Sdim_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1028277325Sdim{
1029288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1030288943Sdim                                                    (__v8df) __B,
1031288943Sdim                                                    (__v8df) __C,
1032288943Sdim                                                    (__mmask8) -1,
1033288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1034277325Sdim}
1035277325Sdim
1036288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1037288943Sdim_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1038288943Sdim{
1039288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1040288943Sdim                                                     (__v8df) __B,
1041288943Sdim                                                     (__v8df) __C,
1042288943Sdim                                                     (__mmask8) __U,
1043288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1044288943Sdim}
1045288943Sdim
1046288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1047288943Sdim_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1048288943Sdim{
1049288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1050288943Sdim                                                     (__v8df) __B,
1051288943Sdim                                                     (__v8df) __C,
1052288943Sdim                                                     (__mmask8) __U,
1053288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1054288943Sdim}
1055288943Sdim
1056288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1057288943Sdim_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1058288943Sdim{
1059288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1060288943Sdim                                                    (__v8df) __B,
1061288943Sdim                                                    -(__v8df) __C,
1062288943Sdim                                                    (__mmask8) -1,
1063288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1064288943Sdim}
1065288943Sdim
1066288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1067288943Sdim_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1068288943Sdim{
1069288943Sdim  return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1070288943Sdim                                                     (__v8df) __B,
1071288943Sdim                                                     -(__v8df) __C,
1072288943Sdim                                                     (__mmask8) __U,
1073288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1074288943Sdim}
1075288943Sdim
1076288943Sdim#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1077288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1078288943Sdim                                            (__v16sf) (B), (__v16sf) (C), \
1079288943Sdim                                            (__mmask16) -1, (R)); })
1080288943Sdim
1081288943Sdim
1082288943Sdim#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1083288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1084288943Sdim                                            (__v16sf) (B), (__v16sf) (C), \
1085288943Sdim                                            (__mmask16) (U), (R)); })
1086288943Sdim
1087288943Sdim
1088288943Sdim#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1089288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1090288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1091288943Sdim                                             (__mmask16) (U), (R)); })
1092288943Sdim
1093288943Sdim
1094288943Sdim#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1095288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1096288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1097288943Sdim                                             (__mmask16) (U), (R)); })
1098288943Sdim
1099288943Sdim
1100288943Sdim#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1101288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1102288943Sdim                                            (__v16sf) (B), -(__v16sf) (C), \
1103288943Sdim                                            (__mmask16) -1, (R)); })
1104288943Sdim
1105288943Sdim
1106288943Sdim#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1107288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1108288943Sdim                                            (__v16sf) (B), -(__v16sf) (C), \
1109288943Sdim                                            (__mmask16) (U), (R)); })
1110288943Sdim
1111288943Sdim
1112288943Sdim#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1113288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1114288943Sdim                                             (__v16sf) (B), -(__v16sf) (C), \
1115288943Sdim                                             (__mmask16) (U), (R)); })
1116288943Sdim
1117288943Sdim
1118288943Sdim#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1119288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1120288943Sdim                                            (__v16sf) (B), (__v16sf) (C), \
1121288943Sdim                                            (__mmask16) -1, (R)); })
1122288943Sdim
1123288943Sdim
1124288943Sdim#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1125288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1126288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1127288943Sdim                                             (__mmask16) (U), (R)); })
1128288943Sdim
1129288943Sdim
1130288943Sdim#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1131288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1132288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1133288943Sdim                                             (__mmask16) (U), (R)); })
1134288943Sdim
1135288943Sdim
1136288943Sdim#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1137288943Sdim  (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1138288943Sdim                                            (__v16sf) (B), -(__v16sf) (C), \
1139288943Sdim                                            (__mmask16) -1, (R)); })
1140288943Sdim
1141288943Sdim
1142288943Sdim#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1143288943Sdim  (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1144288943Sdim                                             (__v16sf) (B), -(__v16sf) (C), \
1145288943Sdim                                             (__mmask16) (U), (R)); })
1146288943Sdim
1147288943Sdim
1148288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1149277325Sdim_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1150277325Sdim{
1151288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1152288943Sdim                                                   (__v16sf) __B,
1153288943Sdim                                                   (__v16sf) __C,
1154288943Sdim                                                   (__mmask16) -1,
1155288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1156277325Sdim}
1157277325Sdim
1158288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1159288943Sdim_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1160288943Sdim{
1161288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1162288943Sdim                                                   (__v16sf) __B,
1163288943Sdim                                                   (__v16sf) __C,
1164288943Sdim                                                   (__mmask16) __U,
1165288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1166288943Sdim}
1167288943Sdim
1168288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1169288943Sdim_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1170288943Sdim{
1171288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1172288943Sdim                                                    (__v16sf) __B,
1173288943Sdim                                                    (__v16sf) __C,
1174288943Sdim                                                    (__mmask16) __U,
1175288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1176288943Sdim}
1177288943Sdim
1178288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1179288943Sdim_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1180288943Sdim{
1181288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1182288943Sdim                                                    (__v16sf) __B,
1183288943Sdim                                                    (__v16sf) __C,
1184288943Sdim                                                    (__mmask16) __U,
1185288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1186288943Sdim}
1187288943Sdim
1188288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1189277325Sdim_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1190277325Sdim{
1191288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1192288943Sdim                                                   (__v16sf) __B,
1193288943Sdim                                                   -(__v16sf) __C,
1194288943Sdim                                                   (__mmask16) -1,
1195288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1196277325Sdim}
1197277325Sdim
1198288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1199288943Sdim_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1200288943Sdim{
1201288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1202288943Sdim                                                   (__v16sf) __B,
1203288943Sdim                                                   -(__v16sf) __C,
1204288943Sdim                                                   (__mmask16) __U,
1205288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1206288943Sdim}
1207288943Sdim
1208288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1209288943Sdim_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1210288943Sdim{
1211288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1212288943Sdim                                                    (__v16sf) __B,
1213288943Sdim                                                    -(__v16sf) __C,
1214288943Sdim                                                    (__mmask16) __U,
1215288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1216288943Sdim}
1217288943Sdim
1218288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1219277325Sdim_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1220277325Sdim{
1221288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1222288943Sdim                                                   (__v16sf) __B,
1223288943Sdim                                                   (__v16sf) __C,
1224288943Sdim                                                   (__mmask16) -1,
1225288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1226277325Sdim}
1227277325Sdim
1228288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1229288943Sdim_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1230288943Sdim{
1231288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
1232288943Sdim                                                    (__v16sf) __B,
1233288943Sdim                                                    (__v16sf) __C,
1234288943Sdim                                                    (__mmask16) __U,
1235288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1236288943Sdim}
1237288943Sdim
1238288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1239288943Sdim_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1240288943Sdim{
1241288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1242288943Sdim                                                    (__v16sf) __B,
1243288943Sdim                                                    (__v16sf) __C,
1244288943Sdim                                                    (__mmask16) __U,
1245288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1246288943Sdim}
1247288943Sdim
1248288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1249288943Sdim_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1250288943Sdim{
1251288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
1252288943Sdim                                                   (__v16sf) __B,
1253288943Sdim                                                   -(__v16sf) __C,
1254288943Sdim                                                   (__mmask16) -1,
1255288943Sdim                                                   _MM_FROUND_CUR_DIRECTION);
1256288943Sdim}
1257288943Sdim
1258288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1259288943Sdim_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1260288943Sdim{
1261288943Sdim  return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
1262288943Sdim                                                    (__v16sf) __B,
1263288943Sdim                                                    -(__v16sf) __C,
1264288943Sdim                                                    (__mmask16) __U,
1265288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1266288943Sdim}
1267288943Sdim
1268288943Sdim#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
1269288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1270288943Sdim                                                (__v8df) (B), (__v8df) (C), \
1271288943Sdim                                                (__mmask8) -1, (R)); })
1272288943Sdim
1273288943Sdim
1274288943Sdim#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
1275288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1276288943Sdim                                                (__v8df) (B), (__v8df) (C), \
1277288943Sdim                                                (__mmask8) (U), (R)); })
1278288943Sdim
1279288943Sdim
1280288943Sdim#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
1281288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
1282288943Sdim                                                 (__v8df) (B), (__v8df) (C), \
1283288943Sdim                                                 (__mmask8) (U), (R)); })
1284288943Sdim
1285288943Sdim
1286288943Sdim#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
1287288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1288288943Sdim                                                 (__v8df) (B), (__v8df) (C), \
1289288943Sdim                                                 (__mmask8) (U), (R)); })
1290288943Sdim
1291288943Sdim
1292288943Sdim#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
1293288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1294288943Sdim                                                (__v8df) (B), -(__v8df) (C), \
1295288943Sdim                                                (__mmask8) -1, (R)); })
1296288943Sdim
1297288943Sdim
1298288943Sdim#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
1299288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
1300288943Sdim                                                (__v8df) (B), -(__v8df) (C), \
1301288943Sdim                                                (__mmask8) (U), (R)); })
1302288943Sdim
1303288943Sdim
1304288943Sdim#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
1305288943Sdim  (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
1306288943Sdim                                                 (__v8df) (B), -(__v8df) (C), \
1307288943Sdim                                                 (__mmask8) (U), (R)); })
1308288943Sdim
1309288943Sdim
1310288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1311288943Sdim_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
1312288943Sdim{
1313288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1314288943Sdim                                                       (__v8df) __B,
1315288943Sdim                                                       (__v8df) __C,
1316288943Sdim                                                       (__mmask8) -1,
1317288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1318288943Sdim}
1319288943Sdim
1320288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1321288943Sdim_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1322288943Sdim{
1323288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1324288943Sdim                                                       (__v8df) __B,
1325288943Sdim                                                       (__v8df) __C,
1326288943Sdim                                                       (__mmask8) __U,
1327288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1328288943Sdim}
1329288943Sdim
1330288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1331288943Sdim_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1332288943Sdim{
1333288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
1334288943Sdim                                                        (__v8df) __B,
1335288943Sdim                                                        (__v8df) __C,
1336288943Sdim                                                        (__mmask8) __U,
1337288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
1338288943Sdim}
1339288943Sdim
1340288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1341288943Sdim_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1342288943Sdim{
1343288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1344288943Sdim                                                        (__v8df) __B,
1345288943Sdim                                                        (__v8df) __C,
1346288943Sdim                                                        (__mmask8) __U,
1347288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
1348288943Sdim}
1349288943Sdim
1350288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1351288943Sdim_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
1352288943Sdim{
1353288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1354288943Sdim                                                       (__v8df) __B,
1355288943Sdim                                                       -(__v8df) __C,
1356288943Sdim                                                       (__mmask8) -1,
1357288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1358288943Sdim}
1359288943Sdim
1360288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1361288943Sdim_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1362288943Sdim{
1363288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
1364288943Sdim                                                       (__v8df) __B,
1365288943Sdim                                                       -(__v8df) __C,
1366288943Sdim                                                       (__mmask8) __U,
1367288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1368288943Sdim}
1369288943Sdim
1370288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1371288943Sdim_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1372288943Sdim{
1373288943Sdim  return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
1374288943Sdim                                                        (__v8df) __B,
1375288943Sdim                                                        -(__v8df) __C,
1376288943Sdim                                                        (__mmask8) __U,
1377288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
1378288943Sdim}
1379288943Sdim
1380288943Sdim#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
1381288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1382288943Sdim                                               (__v16sf) (B), (__v16sf) (C), \
1383288943Sdim                                               (__mmask16) -1, (R)); })
1384288943Sdim
1385288943Sdim
1386288943Sdim#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
1387288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1388288943Sdim                                               (__v16sf) (B), (__v16sf) (C), \
1389288943Sdim                                               (__mmask16) (U), (R)); })
1390288943Sdim
1391288943Sdim
1392288943Sdim#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
1393288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
1394288943Sdim                                                (__v16sf) (B), (__v16sf) (C), \
1395288943Sdim                                                (__mmask16) (U), (R)); })
1396288943Sdim
1397288943Sdim
1398288943Sdim#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
1399288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
1400288943Sdim                                                (__v16sf) (B), (__v16sf) (C), \
1401288943Sdim                                                (__mmask16) (U), (R)); })
1402288943Sdim
1403288943Sdim
1404288943Sdim#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
1405288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1406288943Sdim                                               (__v16sf) (B), -(__v16sf) (C), \
1407288943Sdim                                               (__mmask16) -1, (R)); })
1408288943Sdim
1409288943Sdim
1410288943Sdim#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
1411288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
1412288943Sdim                                               (__v16sf) (B), -(__v16sf) (C), \
1413288943Sdim                                               (__mmask16) (U), (R)); })
1414288943Sdim
1415288943Sdim
1416288943Sdim#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
1417288943Sdim  (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
1418288943Sdim                                                (__v16sf) (B), -(__v16sf) (C), \
1419288943Sdim                                                (__mmask16) (U), (R)); })
1420288943Sdim
1421288943Sdim
1422288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1423288943Sdim_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
1424288943Sdim{
1425288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1426288943Sdim                                                      (__v16sf) __B,
1427288943Sdim                                                      (__v16sf) __C,
1428288943Sdim                                                      (__mmask16) -1,
1429288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
1430288943Sdim}
1431288943Sdim
1432288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1433288943Sdim_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1434288943Sdim{
1435288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1436288943Sdim                                                      (__v16sf) __B,
1437288943Sdim                                                      (__v16sf) __C,
1438288943Sdim                                                      (__mmask16) __U,
1439288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
1440288943Sdim}
1441288943Sdim
1442288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1443288943Sdim_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1444288943Sdim{
1445288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
1446288943Sdim                                                       (__v16sf) __B,
1447288943Sdim                                                       (__v16sf) __C,
1448288943Sdim                                                       (__mmask16) __U,
1449288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1450288943Sdim}
1451288943Sdim
1452288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1453288943Sdim_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1454288943Sdim{
1455288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
1456288943Sdim                                                       (__v16sf) __B,
1457288943Sdim                                                       (__v16sf) __C,
1458288943Sdim                                                       (__mmask16) __U,
1459288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1460288943Sdim}
1461288943Sdim
1462288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1463288943Sdim_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
1464288943Sdim{
1465288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1466288943Sdim                                                      (__v16sf) __B,
1467288943Sdim                                                      -(__v16sf) __C,
1468288943Sdim                                                      (__mmask16) -1,
1469288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
1470288943Sdim}
1471288943Sdim
1472288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1473288943Sdim_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1474288943Sdim{
1475288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
1476288943Sdim                                                      (__v16sf) __B,
1477288943Sdim                                                      -(__v16sf) __C,
1478288943Sdim                                                      (__mmask16) __U,
1479288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
1480288943Sdim}
1481288943Sdim
1482288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1483288943Sdim_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1484288943Sdim{
1485288943Sdim  return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
1486288943Sdim                                                       (__v16sf) __B,
1487288943Sdim                                                       -(__v16sf) __C,
1488288943Sdim                                                       (__mmask16) __U,
1489288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1490288943Sdim}
1491288943Sdim
1492288943Sdim#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
1493288943Sdim  (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
1494288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1495288943Sdim                                              (__mmask8) (U), (R)); })
1496288943Sdim
1497288943Sdim
1498288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1499288943Sdim_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1500288943Sdim{
1501288943Sdim  return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
1502288943Sdim                                                     (__v8df) __B,
1503288943Sdim                                                     (__v8df) __C,
1504288943Sdim                                                     (__mmask8) __U,
1505288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1506288943Sdim}
1507288943Sdim
1508288943Sdim#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
1509288943Sdim  (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
1510288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1511288943Sdim                                             (__mmask16) (U), (R)); })
1512288943Sdim
1513288943Sdim
1514288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1515288943Sdim_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1516288943Sdim{
1517288943Sdim  return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
1518288943Sdim                                                    (__v16sf) __B,
1519288943Sdim                                                    (__v16sf) __C,
1520288943Sdim                                                    (__mmask16) __U,
1521288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1522288943Sdim}
1523288943Sdim
1524288943Sdim#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
1525288943Sdim  (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
1526288943Sdim                                                 (__v8df) (B), (__v8df) (C), \
1527288943Sdim                                                 (__mmask8) (U), (R)); })
1528288943Sdim
1529288943Sdim
1530288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1531288943Sdim_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1532288943Sdim{
1533288943Sdim  return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
1534288943Sdim                                                        (__v8df) __B,
1535288943Sdim                                                        (__v8df) __C,
1536288943Sdim                                                        (__mmask8) __U,
1537288943Sdim                                                        _MM_FROUND_CUR_DIRECTION);
1538288943Sdim}
1539288943Sdim
1540288943Sdim#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
1541288943Sdim  (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
1542288943Sdim                                                (__v16sf) (B), (__v16sf) (C), \
1543288943Sdim                                                (__mmask16) (U), (R)); })
1544288943Sdim
1545288943Sdim
1546288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1547288943Sdim_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1548288943Sdim{
1549288943Sdim  return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
1550288943Sdim                                                       (__v16sf) __B,
1551288943Sdim                                                       (__v16sf) __C,
1552288943Sdim                                                       (__mmask16) __U,
1553288943Sdim                                                       _MM_FROUND_CUR_DIRECTION);
1554288943Sdim}
1555288943Sdim
1556288943Sdim#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1557288943Sdim  (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
1558288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1559288943Sdim                                              (__mmask8) (U), (R)); })
1560288943Sdim
1561288943Sdim
1562288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1563288943Sdim_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1564288943Sdim{
1565288943Sdim  return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
1566288943Sdim                                                     (__v8df) __B,
1567288943Sdim                                                     (__v8df) __C,
1568288943Sdim                                                     (__mmask8) __U,
1569288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1570288943Sdim}
1571288943Sdim
1572288943Sdim#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1573288943Sdim  (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
1574288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1575288943Sdim                                             (__mmask16) (U), (R)); })
1576288943Sdim
1577288943Sdim
1578288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1579288943Sdim_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1580288943Sdim{
1581288943Sdim  return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
1582288943Sdim                                                    (__v16sf) __B,
1583288943Sdim                                                    (__v16sf) __C,
1584288943Sdim                                                    (__mmask16) __U,
1585288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1586288943Sdim}
1587288943Sdim
1588288943Sdim#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1589288943Sdim  (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
1590288943Sdim                                              (__v8df) (B), (__v8df) (C), \
1591288943Sdim                                              (__mmask8) (U), (R)); })
1592288943Sdim
1593288943Sdim
1594288943Sdim#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
1595288943Sdim  (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
1596288943Sdim                                               (__v8df) (B), (__v8df) (C), \
1597288943Sdim                                               (__mmask8) (U), (R)); })
1598288943Sdim
1599288943Sdim
1600288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1601288943Sdim_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1602288943Sdim{
1603288943Sdim  return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
1604288943Sdim                                                     (__v8df) __B,
1605288943Sdim                                                     (__v8df) __C,
1606288943Sdim                                                     (__mmask8) __U,
1607288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1608288943Sdim}
1609288943Sdim
1610288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS
1611288943Sdim_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1612288943Sdim{
1613288943Sdim  return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
1614288943Sdim                                                      (__v8df) __B,
1615288943Sdim                                                      (__v8df) __C,
1616288943Sdim                                                      (__mmask8) __U,
1617288943Sdim                                                      _MM_FROUND_CUR_DIRECTION);
1618288943Sdim}
1619288943Sdim
1620288943Sdim#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1621288943Sdim  (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
1622288943Sdim                                             (__v16sf) (B), (__v16sf) (C), \
1623288943Sdim                                             (__mmask16) (U), (R)); })
1624288943Sdim
1625288943Sdim
1626288943Sdim#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
1627288943Sdim  (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
1628288943Sdim                                              (__v16sf) (B), (__v16sf) (C), \
1629288943Sdim                                              (__mmask16) (U), (R)); })
1630288943Sdim
1631288943Sdim
1632288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1633288943Sdim_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1634288943Sdim{
1635288943Sdim  return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
1636288943Sdim                                                    (__v16sf) __B,
1637288943Sdim                                                    (__v16sf) __C,
1638288943Sdim                                                    (__mmask16) __U,
1639288943Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1640288943Sdim}
1641288943Sdim
1642288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS
1643288943Sdim_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1644288943Sdim{
1645288943Sdim  return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
1646288943Sdim                                                     (__v16sf) __B,
1647288943Sdim                                                     (__v16sf) __C,
1648288943Sdim                                                     (__mmask16) __U,
1649288943Sdim                                                     _MM_FROUND_CUR_DIRECTION);
1650288943Sdim}
1651288943Sdim
1652288943Sdim
1653288943Sdim
1654277325Sdim/* Vector permutations */
1655277325Sdim
1656288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1657277325Sdim_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
1658277325Sdim{
1659277325Sdim  return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
1660277325Sdim                                                       /* idx */ ,
1661277325Sdim                                                       (__v16si) __A,
1662277325Sdim                                                       (__v16si) __B,
1663277325Sdim                                                       (__mmask16) -1);
1664277325Sdim}
1665288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1666277325Sdim_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
1667277325Sdim{
1668277325Sdim  return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
1669277325Sdim                                                       /* idx */ ,
1670277325Sdim                                                       (__v8di) __A,
1671277325Sdim                                                       (__v8di) __B,
1672277325Sdim                                                       (__mmask8) -1);
1673277325Sdim}
1674277325Sdim
1675288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1676277325Sdim_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
1677277325Sdim{
1678277325Sdim  return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
1679277325Sdim                                                        /* idx */ ,
1680277325Sdim                                                        (__v8df) __A,
1681277325Sdim                                                        (__v8df) __B,
1682277325Sdim                                                        (__mmask8) -1);
1683277325Sdim}
1684288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
1685277325Sdim_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
1686277325Sdim{
1687277325Sdim  return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
1688277325Sdim                                                       /* idx */ ,
1689277325Sdim                                                       (__v16sf) __A,
1690277325Sdim                                                       (__v16sf) __B,
1691277325Sdim                                                       (__mmask16) -1);
1692277325Sdim}
1693277325Sdim
1694288943Sdim#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
1695288943Sdim  (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
1696288943Sdim                                         (__v8di)(__m512i)(B), \
1697288943Sdim                                         (I), (__v8di)_mm512_setzero_si512(), \
1698288943Sdim                                         (__mmask8)-1); })
1699277325Sdim
1700288943Sdim#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
1701288943Sdim  (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
1702288943Sdim                                         (__v16si)(__m512i)(B), \
1703288943Sdim                                         (I), (__v16si)_mm512_setzero_si512(), \
1704288943Sdim                                         (__mmask16)-1); })
1705277325Sdim
1706288943Sdim/* Vector Extract */
1707288943Sdim
1708288943Sdim#define _mm512_extractf64x4_pd(A, I) __extension__ ({                    \
1709288943Sdim      __m512d __A = (A);                                                 \
1710288943Sdim      (__m256d)                                                          \
1711288943Sdim        __builtin_ia32_extractf64x4_mask((__v8df)__A,                    \
1712288943Sdim                                         (I),                            \
1713288943Sdim                                         (__v4df)_mm256_setzero_si256(), \
1714288943Sdim                                         (__mmask8) -1); })
1715288943Sdim
1716288943Sdim#define _mm512_extractf32x4_ps(A, I) __extension__ ({                    \
1717288943Sdim      __m512 __A = (A);                                                  \
1718288943Sdim      (__m128)                                                           \
1719288943Sdim        __builtin_ia32_extractf32x4_mask((__v16sf)__A,                   \
1720288943Sdim                                         (I),                            \
1721288943Sdim                                         (__v4sf)_mm_setzero_ps(),       \
1722288943Sdim                                         (__mmask8) -1); })
1723288943Sdim
1724277325Sdim/* Vector Blend */
1725277325Sdim
1726288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1727277325Sdim_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
1728277325Sdim{
1729277325Sdim  return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
1730277325Sdim                 (__v8df) __W,
1731277325Sdim                 (__mmask8) __U);
1732277325Sdim}
1733277325Sdim
1734288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
1735277325Sdim_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
1736277325Sdim{
1737277325Sdim  return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
1738277325Sdim                (__v16sf) __W,
1739277325Sdim                (__mmask16) __U);
1740277325Sdim}
1741277325Sdim
1742288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1743277325Sdim_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
1744277325Sdim{
1745277325Sdim  return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
1746277325Sdim                (__v8di) __W,
1747277325Sdim                (__mmask8) __U);
1748277325Sdim}
1749277325Sdim
1750288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1751277325Sdim_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
1752277325Sdim{
1753277325Sdim  return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
1754277325Sdim                (__v16si) __W,
1755277325Sdim                (__mmask16) __U);
1756277325Sdim}
1757277325Sdim
1758277325Sdim/* Compare */
1759277325Sdim
1760288943Sdim#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
1761288943Sdim  (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
1762288943Sdim                                          (__v16sf)(__m512)(B), \
1763288943Sdim                                          (P), (__mmask16)-1, (R)); })
1764277325Sdim
1765288943Sdim#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
1766288943Sdim  (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
1767288943Sdim                                          (__v16sf)(__m512)(B), \
1768288943Sdim                                          (P), (__mmask16)(U), (R)); })
1769277325Sdim
1770288943Sdim#define _mm512_cmp_ps_mask(A, B, P) \
1771288943Sdim  _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1772288943Sdim
1773288943Sdim#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
1774288943Sdim  _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1775288943Sdim
1776288943Sdim#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
1777288943Sdim  (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
1778288943Sdim                                         (__v8df)(__m512d)(B), \
1779288943Sdim                                         (P), (__mmask8)-1, (R)); })
1780288943Sdim
1781288943Sdim#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
1782288943Sdim  (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
1783288943Sdim                                         (__v8df)(__m512d)(B), \
1784288943Sdim                                         (P), (__mmask8)(U), (R)); })
1785288943Sdim
1786288943Sdim#define _mm512_cmp_pd_mask(A, B, P) \
1787288943Sdim  _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1788288943Sdim
1789288943Sdim#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
1790288943Sdim  _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1791288943Sdim
1792277325Sdim/* Conversion */
1793277325Sdim
1794288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1795277325Sdim_mm512_cvttps_epu32(__m512 __A)
1796277325Sdim{
1797277325Sdim  return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
1798277325Sdim                  (__v16si)
1799277325Sdim                  _mm512_setzero_si512 (),
1800277325Sdim                  (__mmask16) -1,
1801277325Sdim                  _MM_FROUND_CUR_DIRECTION);
1802277325Sdim}
1803277325Sdim
1804288943Sdim#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
1805288943Sdim  (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
1806288943Sdim                                          (__v16sf)_mm512_setzero_ps(), \
1807288943Sdim                                          (__mmask16)-1, (R)); })
1808277325Sdim
1809288943Sdim#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
1810288943Sdim  (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
1811288943Sdim                                           (__v16sf)_mm512_setzero_ps(), \
1812288943Sdim                                           (__mmask16)-1, (R)); })
1813277325Sdim
1814288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1815277325Sdim_mm512_cvtepi32_pd(__m256i __A)
1816277325Sdim{
1817277325Sdim  return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
1818277325Sdim                (__v8df)
1819277325Sdim                _mm512_setzero_pd (),
1820277325Sdim                (__mmask8) -1);
1821277325Sdim}
1822277325Sdim
1823288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1824277325Sdim_mm512_cvtepu32_pd(__m256i __A)
1825277325Sdim{
1826277325Sdim  return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
1827277325Sdim                (__v8df)
1828277325Sdim                _mm512_setzero_pd (),
1829277325Sdim                (__mmask8) -1);
1830277325Sdim}
1831277325Sdim
1832288943Sdim#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
1833288943Sdim  (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
1834288943Sdim                                          (__v8sf)_mm256_setzero_ps(), \
1835288943Sdim                                          (__mmask8)-1, (R)); })
1836277325Sdim
1837288943Sdim#define _mm512_cvtps_ph(A, I) __extension__ ({ \
1838288943Sdim  (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
1839288943Sdim                                            (__v16hi)_mm256_setzero_si256(), \
1840288943Sdim                                            -1); })
1841288943Sdim
1842288943Sdimstatic  __inline __m512 __DEFAULT_FN_ATTRS
1843277325Sdim_mm512_cvtph_ps(__m256i __A)
1844277325Sdim{
1845277325Sdim  return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
1846277325Sdim                (__v16sf)
1847277325Sdim                _mm512_setzero_ps (),
1848277325Sdim                (__mmask16) -1,
1849277325Sdim                _MM_FROUND_CUR_DIRECTION);
1850277325Sdim}
1851277325Sdim
1852288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1853277325Sdim_mm512_cvttps_epi32(__m512 a)
1854277325Sdim{
1855277325Sdim  return (__m512i)
1856277325Sdim    __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
1857277325Sdim                                     (__v16si) _mm512_setzero_si512 (),
1858277325Sdim                                     (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
1859277325Sdim}
1860277325Sdim
1861288943Sdimstatic __inline __m256i __DEFAULT_FN_ATTRS
1862277325Sdim_mm512_cvttpd_epi32(__m512d a)
1863277325Sdim{
1864277325Sdim  return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
1865277325Sdim                                                   (__v8si)_mm256_setzero_si256(),
1866277325Sdim                                                   (__mmask8) -1,
1867277325Sdim                                                    _MM_FROUND_CUR_DIRECTION);
1868277325Sdim}
1869277325Sdim
1870288943Sdim#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
1871288943Sdim  (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
1872288943Sdim                                            (__v8si)_mm256_setzero_si256(), \
1873288943Sdim                                            (__mmask8)-1, (R)); })
1874277325Sdim
1875288943Sdim#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
1876288943Sdim  (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
1877288943Sdim                                            (__v16si)_mm512_setzero_si512(), \
1878288943Sdim                                            (__mmask16)-1, (R)); })
1879277325Sdim
1880288943Sdim#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
1881288943Sdim  (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
1882288943Sdim                                           (__v16si)_mm512_setzero_si512(), \
1883288943Sdim                                           (__mmask16)-1, (R)); })
1884288943Sdim
1885288943Sdim#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
1886288943Sdim  (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
1887288943Sdim                                           (__v8si)_mm256_setzero_si256(), \
1888288943Sdim                                           (__mmask8)-1, (R)); })
1889288943Sdim
1890288943Sdim#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
1891288943Sdim  (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
1892288943Sdim                                            (__v16si)_mm512_setzero_si512(), \
1893288943Sdim                                            (__mmask16)-1, (R)); })
1894288943Sdim
1895288943Sdim#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
1896288943Sdim  (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
1897288943Sdim                                            (__v8si)_mm256_setzero_si256(), \
1898288943Sdim                                            (__mmask8) -1, (R)); })
1899288943Sdim
1900277325Sdim/* Unpack and Interleave */
1901288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1902277325Sdim_mm512_unpackhi_pd(__m512d __a, __m512d __b)
1903277325Sdim{
1904277325Sdim  return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
1905277325Sdim}
1906277325Sdim
1907288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1908277325Sdim_mm512_unpacklo_pd(__m512d __a, __m512d __b)
1909277325Sdim{
1910277325Sdim  return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
1911277325Sdim}
1912277325Sdim
1913288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
1914277325Sdim_mm512_unpackhi_ps(__m512 __a, __m512 __b)
1915277325Sdim{
1916277325Sdim  return __builtin_shufflevector(__a, __b,
1917277325Sdim                                 2,    18,    3,    19,
1918277325Sdim                                 2+4,  18+4,  3+4,  19+4,
1919277325Sdim                                 2+8,  18+8,  3+8,  19+8,
1920277325Sdim                                 2+12, 18+12, 3+12, 19+12);
1921277325Sdim}
1922277325Sdim
1923288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
1924277325Sdim_mm512_unpacklo_ps(__m512 __a, __m512 __b)
1925277325Sdim{
1926277325Sdim  return __builtin_shufflevector(__a, __b,
1927277325Sdim                                 0,    16,    1,    17,
1928277325Sdim                                 0+4,  16+4,  1+4,  17+4,
1929277325Sdim                                 0+8,  16+8,  1+8,  17+8,
1930277325Sdim                                 0+12, 16+12, 1+12, 17+12);
1931277325Sdim}
1932277325Sdim
1933277325Sdim/* Bit Test */
1934277325Sdim
1935288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS
1936277325Sdim_mm512_test_epi32_mask(__m512i __A, __m512i __B)
1937277325Sdim{
1938277325Sdim  return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
1939277325Sdim            (__v16si) __B,
1940277325Sdim            (__mmask16) -1);
1941277325Sdim}
1942277325Sdim
1943288943Sdimstatic __inline __mmask8 __DEFAULT_FN_ATTRS
1944277325Sdim_mm512_test_epi64_mask(__m512i __A, __m512i __B)
1945277325Sdim{
1946277325Sdim  return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
1947277325Sdim                 (__v8di) __B,
1948277325Sdim                 (__mmask8) -1);
1949277325Sdim}
1950277325Sdim
1951277325Sdim/* SIMD load ops */
1952277325Sdim
1953288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1954277325Sdim_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
1955277325Sdim{
1956277325Sdim  return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
1957277325Sdim                                                     (__v16si)
1958277325Sdim                                                     _mm512_setzero_si512 (),
1959277325Sdim                                                     (__mmask16) __U);
1960277325Sdim}
1961277325Sdim
1962288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS
1963277325Sdim_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
1964277325Sdim{
1965277325Sdim  return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
1966277325Sdim                                                     (__v8di)
1967277325Sdim                                                     _mm512_setzero_si512 (),
1968277325Sdim                                                     (__mmask8) __U);
1969277325Sdim}
1970277325Sdim
1971288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
1972277325Sdim_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
1973277325Sdim{
1974277325Sdim  return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
1975277325Sdim                                                  (__v16sf)
1976277325Sdim                                                  _mm512_setzero_ps (),
1977277325Sdim                                                  (__mmask16) __U);
1978277325Sdim}
1979277325Sdim
1980288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1981277325Sdim_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
1982277325Sdim{
1983277325Sdim  return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
1984277325Sdim                                                   (__v8df)
1985277325Sdim                                                   _mm512_setzero_pd (),
1986277325Sdim                                                   (__mmask8) __U);
1987277325Sdim}
1988277325Sdim
1989288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
1990288943Sdim_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
1991288943Sdim{
1992288943Sdim  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
1993288943Sdim                                                  (__v16sf)
1994288943Sdim                                                  _mm512_setzero_ps (),
1995288943Sdim                                                  (__mmask16) __U);
1996288943Sdim}
1997288943Sdim
1998288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
1999288943Sdim_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2000288943Sdim{
2001288943Sdim  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2002288943Sdim                                                   (__v8df)
2003288943Sdim                                                   _mm512_setzero_pd (),
2004288943Sdim                                                   (__mmask8) __U);
2005288943Sdim}
2006288943Sdim
2007288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2008277325Sdim_mm512_loadu_pd(double const *__p)
2009277325Sdim{
2010277325Sdim  struct __loadu_pd {
2011277325Sdim    __m512d __v;
2012288943Sdim  } __attribute__((__packed__, __may_alias__));
2013277325Sdim  return ((struct __loadu_pd*)__p)->__v;
2014277325Sdim}
2015277325Sdim
2016288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2017277325Sdim_mm512_loadu_ps(float const *__p)
2018277325Sdim{
2019277325Sdim  struct __loadu_ps {
2020277325Sdim    __m512 __v;
2021288943Sdim  } __attribute__((__packed__, __may_alias__));
2022277325Sdim  return ((struct __loadu_ps*)__p)->__v;
2023277325Sdim}
2024277325Sdim
2025288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS
2026288943Sdim_mm512_load_ps(double const *__p)
2027288943Sdim{
2028288943Sdim  return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2029288943Sdim                                                  (__v16sf)
2030288943Sdim                                                  _mm512_setzero_ps (),
2031288943Sdim                                                  (__mmask16) -1);
2032288943Sdim}
2033288943Sdim
2034288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS
2035288943Sdim_mm512_load_pd(float const *__p)
2036288943Sdim{
2037288943Sdim  return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2038288943Sdim                                                   (__v8df)
2039288943Sdim                                                   _mm512_setzero_pd (),
2040288943Sdim                                                   (__mmask8) -1);
2041288943Sdim}
2042288943Sdim
2043277325Sdim/* SIMD store ops */
2044277325Sdim
2045288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2046277325Sdim_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
2047277325Sdim{
2048277325Sdim  __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2049277325Sdim                                     (__mmask8) __U);
2050277325Sdim}
2051277325Sdim
2052288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2053277325Sdim_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
2054277325Sdim{
2055277325Sdim  __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2056277325Sdim                                     (__mmask16) __U);
2057277325Sdim}
2058277325Sdim
2059288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2060277325Sdim_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
2061277325Sdim{
2062277325Sdim  __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2063277325Sdim}
2064277325Sdim
2065288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2066277325Sdim_mm512_storeu_pd(void *__P, __m512d __A)
2067277325Sdim{
2068277325Sdim  __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2069277325Sdim}
2070277325Sdim
2071288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2072277325Sdim_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
2073277325Sdim{
2074277325Sdim  __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2075277325Sdim                                   (__mmask16) __U);
2076277325Sdim}
2077277325Sdim
2078288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2079277325Sdim_mm512_storeu_ps(void *__P, __m512 __A)
2080277325Sdim{
2081277325Sdim  __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2082277325Sdim}
2083277325Sdim
2084288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2085288943Sdim_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
2086277325Sdim{
2087288943Sdim  __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2088277325Sdim}
2089277325Sdim
2090288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2091277325Sdim_mm512_store_pd(void *__P, __m512d __A)
2092277325Sdim{
2093277325Sdim  *(__m512d*)__P = __A;
2094277325Sdim}
2095277325Sdim
2096288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2097288943Sdim_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2098288943Sdim{
2099288943Sdim  __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2100288943Sdim                                   (__mmask16) __U);
2101288943Sdim}
2102288943Sdim
2103288943Sdimstatic __inline void __DEFAULT_FN_ATTRS
2104288943Sdim_mm512_store_ps(void *__P, __m512 __A)
2105288943Sdim{
2106288943Sdim  *(__m512*)__P = __A;
2107288943Sdim}
2108288943Sdim
2109277325Sdim/* Mask ops */
2110277325Sdim
2111288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS
2112277325Sdim_mm512_knot(__mmask16 __M)
2113277325Sdim{
2114277325Sdim  return __builtin_ia32_knothi(__M);
2115277325Sdim}
2116277325Sdim
2117277325Sdim/* Integer compare */
2118277325Sdim
2119288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2120277325Sdim_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2121277325Sdim  return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2122277325Sdim                                                   (__mmask16)-1);
2123277325Sdim}
2124277325Sdim
2125288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2126277325Sdim_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2127277325Sdim  return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2128277325Sdim                                                   __u);
2129277325Sdim}
2130277325Sdim
2131288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2132288943Sdim_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2133288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2134288943Sdim                                                 (__mmask16)-1);
2135288943Sdim}
2136288943Sdim
2137288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2138288943Sdim_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2139288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2140288943Sdim                                                 __u);
2141288943Sdim}
2142288943Sdim
2143288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2144277325Sdim_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2145277325Sdim  return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2146277325Sdim                                                  __u);
2147277325Sdim}
2148277325Sdim
2149288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2150277325Sdim_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2151277325Sdim  return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2152277325Sdim                                                  (__mmask8)-1);
2153277325Sdim}
2154277325Sdim
2155288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2156288943Sdim_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2157288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2158288943Sdim                                                (__mmask8)-1);
2159288943Sdim}
2160288943Sdim
2161288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2162288943Sdim_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2163288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2164288943Sdim                                                __u);
2165288943Sdim}
2166288943Sdim
2167288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2168288943Sdim_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2169288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2170288943Sdim                                                (__mmask16)-1);
2171288943Sdim}
2172288943Sdim
2173288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2174288943Sdim_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2175288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2176288943Sdim                                                __u);
2177288943Sdim}
2178288943Sdim
2179288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2180288943Sdim_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2181288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2182288943Sdim                                                 (__mmask16)-1);
2183288943Sdim}
2184288943Sdim
2185288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2186288943Sdim_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2187288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2188288943Sdim                                                 __u);
2189288943Sdim}
2190288943Sdim
2191288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2192288943Sdim_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2193288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2194288943Sdim                                               (__mmask8)-1);
2195288943Sdim}
2196288943Sdim
2197288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2198288943Sdim_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2199288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2200288943Sdim                                               __u);
2201288943Sdim}
2202288943Sdim
2203288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2204288943Sdim_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2205288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2206288943Sdim                                                (__mmask8)-1);
2207288943Sdim}
2208288943Sdim
2209288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2210288943Sdim_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2211288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2212288943Sdim                                                __u);
2213288943Sdim}
2214288943Sdim
2215288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2216288943Sdim_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
2217288943Sdim  return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2218288943Sdim                                                   (__mmask16)-1);
2219288943Sdim}
2220288943Sdim
2221288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2222288943Sdim_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2223288943Sdim  return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
2224288943Sdim                                                   __u);
2225288943Sdim}
2226288943Sdim
2227288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2228288943Sdim_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2229288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2230288943Sdim                                                 (__mmask16)-1);
2231288943Sdim}
2232288943Sdim
2233288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2234288943Sdim_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2235288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
2236288943Sdim                                                 __u);
2237288943Sdim}
2238288943Sdim
2239288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2240288943Sdim_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2241288943Sdim  return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2242288943Sdim                                                  __u);
2243288943Sdim}
2244288943Sdim
2245288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2246288943Sdim_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
2247288943Sdim  return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
2248288943Sdim                                                  (__mmask8)-1);
2249288943Sdim}
2250288943Sdim
2251288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2252288943Sdim_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2253288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2254288943Sdim                                                (__mmask8)-1);
2255288943Sdim}
2256288943Sdim
2257288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2258288943Sdim_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2259288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
2260288943Sdim                                                __u);
2261288943Sdim}
2262288943Sdim
2263288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2264288943Sdim_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2265288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2266288943Sdim                                                (__mmask16)-1);
2267288943Sdim}
2268288943Sdim
2269288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2270288943Sdim_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2271288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2272288943Sdim                                                __u);
2273288943Sdim}
2274288943Sdim
2275288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2276288943Sdim_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2277288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2278288943Sdim                                                 (__mmask16)-1);
2279288943Sdim}
2280288943Sdim
2281288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2282288943Sdim_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2283288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
2284288943Sdim                                                 __u);
2285288943Sdim}
2286288943Sdim
2287288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2288288943Sdim_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2289288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2290288943Sdim                                               (__mmask8)-1);
2291288943Sdim}
2292288943Sdim
2293288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2294288943Sdim_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2295288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2296288943Sdim                                               __u);
2297288943Sdim}
2298288943Sdim
2299288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2300288943Sdim_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2301288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2302288943Sdim                                                (__mmask8)-1);
2303288943Sdim}
2304288943Sdim
2305288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2306288943Sdim_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2307288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
2308288943Sdim                                                __u);
2309288943Sdim}
2310288943Sdim
2311288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2312288943Sdim_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2313288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2314288943Sdim                                                (__mmask16)-1);
2315288943Sdim}
2316288943Sdim
2317288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2318288943Sdim_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2319288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2320288943Sdim                                                __u);
2321288943Sdim}
2322288943Sdim
2323288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2324288943Sdim_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2325288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2326288943Sdim                                                 (__mmask16)-1);
2327288943Sdim}
2328288943Sdim
2329288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2330288943Sdim_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2331288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
2332288943Sdim                                                 __u);
2333288943Sdim}
2334288943Sdim
2335288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2336288943Sdim_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2337288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2338288943Sdim                                               (__mmask8)-1);
2339288943Sdim}
2340288943Sdim
2341288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2342288943Sdim_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2343288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2344288943Sdim                                               __u);
2345288943Sdim}
2346288943Sdim
2347288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2348288943Sdim_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2349288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2350288943Sdim                                                (__mmask8)-1);
2351288943Sdim}
2352288943Sdim
2353288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2354288943Sdim_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2355288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
2356288943Sdim                                                __u);
2357288943Sdim}
2358288943Sdim
2359288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2360288943Sdim_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2361288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2362288943Sdim                                                (__mmask16)-1);
2363288943Sdim}
2364288943Sdim
2365288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2366288943Sdim_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2367288943Sdim  return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2368288943Sdim                                                __u);
2369288943Sdim}
2370288943Sdim
2371288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2372288943Sdim_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2373288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2374288943Sdim                                                 (__mmask16)-1);
2375288943Sdim}
2376288943Sdim
2377288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS
2378288943Sdim_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2379288943Sdim  return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
2380288943Sdim                                                 __u);
2381288943Sdim}
2382288943Sdim
2383288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2384288943Sdim_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2385288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2386288943Sdim                                               (__mmask8)-1);
2387288943Sdim}
2388288943Sdim
2389288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2390288943Sdim_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2391288943Sdim  return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2392288943Sdim                                               __u);
2393288943Sdim}
2394288943Sdim
2395288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2396288943Sdim_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2397288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2398288943Sdim                                                (__mmask8)-1);
2399288943Sdim}
2400288943Sdim
2401288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS
2402288943Sdim_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2403288943Sdim  return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
2404288943Sdim                                                __u);
2405288943Sdim}
2406288943Sdim
2407288943Sdim#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
2408288943Sdim  __m512i __a = (a); \
2409288943Sdim  __m512i __b = (b); \
2410288943Sdim  (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2411288943Sdim                                         (__mmask16)-1); })
2412288943Sdim
2413288943Sdim#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
2414288943Sdim  __m512i __a = (a); \
2415288943Sdim  __m512i __b = (b); \
2416288943Sdim  (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2417288943Sdim                                          (__mmask16)-1); })
2418288943Sdim
2419288943Sdim#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
2420288943Sdim  __m512i __a = (a); \
2421288943Sdim  __m512i __b = (b); \
2422288943Sdim  (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2423288943Sdim                                        (__mmask8)-1); })
2424288943Sdim
2425288943Sdim#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
2426288943Sdim  __m512i __a = (a); \
2427288943Sdim  __m512i __b = (b); \
2428288943Sdim  (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2429288943Sdim                                         (__mmask8)-1); })
2430288943Sdim
2431288943Sdim#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
2432288943Sdim  __m512i __a = (a); \
2433288943Sdim  __m512i __b = (b); \
2434288943Sdim  (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2435288943Sdim                                         (__mmask16)(m)); })
2436288943Sdim
2437288943Sdim#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
2438288943Sdim  __m512i __a = (a); \
2439288943Sdim  __m512i __b = (b); \
2440288943Sdim  (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
2441288943Sdim                                          (__mmask16)(m)); })
2442288943Sdim
2443288943Sdim#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
2444288943Sdim  __m512i __a = (a); \
2445288943Sdim  __m512i __b = (b); \
2446288943Sdim  (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2447288943Sdim                                        (__mmask8)(m)); })
2448288943Sdim
2449288943Sdim#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
2450288943Sdim  __m512i __a = (a); \
2451288943Sdim  __m512i __b = (b); \
2452288943Sdim  (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
2453288943Sdim                                         (__mmask8)(m)); })
2454288943Sdim
2455288943Sdim#undef __DEFAULT_FN_ATTRS
2456288943Sdim
2457277325Sdim#endif // __AVX512FINTRIN_H
2458