]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/avx512fintrin.h
Add missing ChangeLog entry for previous patch.
[thirdparty/gcc.git] / gcc / config / i386 / avx512fintrin.h
CommitLineData
85ec4feb 1/* Copyright (C) 2013-2018 Free Software Foundation, Inc.
756c5857
AI
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
8 any later version.
9
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
18
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
23
24#ifndef _IMMINTRIN_H_INCLUDED
25#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef _AVX512FINTRIN_H_INCLUDED
29#define _AVX512FINTRIN_H_INCLUDED
30
31#ifndef __AVX512F__
32#pragma GCC push_options
33#pragma GCC target("avx512f")
34#define __DISABLE_AVX512F__
35#endif /* __AVX512F__ */
36
37/* Internal data types for implementing the intrinsics. */
38typedef double __v8df __attribute__ ((__vector_size__ (64)));
39typedef float __v16sf __attribute__ ((__vector_size__ (64)));
40typedef long long __v8di __attribute__ ((__vector_size__ (64)));
2069d6fc 41typedef unsigned long long __v8du __attribute__ ((__vector_size__ (64)));
756c5857 42typedef int __v16si __attribute__ ((__vector_size__ (64)));
2069d6fc 43typedef unsigned int __v16su __attribute__ ((__vector_size__ (64)));
7d9088c2 44typedef short __v32hi __attribute__ ((__vector_size__ (64)));
2069d6fc 45typedef unsigned short __v32hu __attribute__ ((__vector_size__ (64)));
7d9088c2 46typedef char __v64qi __attribute__ ((__vector_size__ (64)));
2069d6fc 47typedef unsigned char __v64qu __attribute__ ((__vector_size__ (64)));
756c5857
AI
48
49/* The Intel API is flexible enough that we must allow aliasing with other
50 vector types, and their scalar components. */
51typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__));
52typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__));
53typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
54
c6b0037d
MG
55/* Unaligned version of the same type. */
56typedef float __m512_u __attribute__ ((__vector_size__ (64), __may_alias__, __aligned__ (1)));
57typedef long long __m512i_u __attribute__ ((__vector_size__ (64), __may_alias__, __aligned__ (1)));
58typedef double __m512d_u __attribute__ ((__vector_size__ (64), __may_alias__, __aligned__ (1)));
59
756c5857
AI
60typedef unsigned char __mmask8;
61typedef unsigned short __mmask16;
62
dcb2c527
JJ
63extern __inline __mmask16
64__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
65_mm512_int2mask (int __M)
66{
67 return (__mmask16) __M;
68}
69
70extern __inline int
71__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
72_mm512_mask2int (__mmask16 __M)
73{
74 return (int) __M;
75}
76
756c5857
AI
77extern __inline __m512i
78__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
79_mm512_set_epi64 (long long __A, long long __B, long long __C,
80 long long __D, long long __E, long long __F,
81 long long __G, long long __H)
82{
83 return __extension__ (__m512i) (__v8di)
84 { __H, __G, __F, __E, __D, __C, __B, __A };
85}
86
87/* Create the vector [A B C D E F G H I J K L M N O P]. */
88extern __inline __m512i
89__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
90_mm512_set_epi32 (int __A, int __B, int __C, int __D,
91 int __E, int __F, int __G, int __H,
92 int __I, int __J, int __K, int __L,
93 int __M, int __N, int __O, int __P)
94{
95 return __extension__ (__m512i)(__v16si)
96 { __P, __O, __N, __M, __L, __K, __J, __I,
97 __H, __G, __F, __E, __D, __C, __B, __A };
98}
99
100extern __inline __m512d
101__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
102_mm512_set_pd (double __A, double __B, double __C, double __D,
103 double __E, double __F, double __G, double __H)
104{
105 return __extension__ (__m512d)
106 { __H, __G, __F, __E, __D, __C, __B, __A };
107}
108
109extern __inline __m512
110__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
111_mm512_set_ps (float __A, float __B, float __C, float __D,
112 float __E, float __F, float __G, float __H,
113 float __I, float __J, float __K, float __L,
114 float __M, float __N, float __O, float __P)
115{
116 return __extension__ (__m512)
117 { __P, __O, __N, __M, __L, __K, __J, __I,
118 __H, __G, __F, __E, __D, __C, __B, __A };
119}
120
121#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
122 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
123
124#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
125 e8,e9,e10,e11,e12,e13,e14,e15) \
126 _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
127
128#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
129 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
130
131#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
132 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
133
0b192937
UD
134extern __inline __m512
135__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
136_mm512_undefined_ps (void)
137{
138 __m512 __Y = __Y;
139 return __Y;
140}
141
dcb2c527
JJ
142#define _mm512_undefined _mm512_undefined_ps
143
0b192937
UD
144extern __inline __m512d
145__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
146_mm512_undefined_pd (void)
147{
148 __m512d __Y = __Y;
149 return __Y;
150}
151
152extern __inline __m512i
153__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4271e5cb 154_mm512_undefined_epi32 (void)
0b192937
UD
155{
156 __m512i __Y = __Y;
157 return __Y;
158}
159
4271e5cb
UB
160#define _mm512_undefined_si512 _mm512_undefined_epi32
161
7d9088c2
UD
162extern __inline __m512i
163__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
164_mm512_set1_epi8 (char __A)
165{
166 return __extension__ (__m512i)(__v64qi)
167 { __A, __A, __A, __A, __A, __A, __A, __A,
168 __A, __A, __A, __A, __A, __A, __A, __A,
169 __A, __A, __A, __A, __A, __A, __A, __A,
170 __A, __A, __A, __A, __A, __A, __A, __A,
171 __A, __A, __A, __A, __A, __A, __A, __A,
172 __A, __A, __A, __A, __A, __A, __A, __A,
173 __A, __A, __A, __A, __A, __A, __A, __A,
174 __A, __A, __A, __A, __A, __A, __A, __A };
175}
176
177extern __inline __m512i
178__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
179_mm512_set1_epi16 (short __A)
180{
181 return __extension__ (__m512i)(__v32hi)
182 { __A, __A, __A, __A, __A, __A, __A, __A,
183 __A, __A, __A, __A, __A, __A, __A, __A,
184 __A, __A, __A, __A, __A, __A, __A, __A,
185 __A, __A, __A, __A, __A, __A, __A, __A };
186}
187
2b2384e8
UD
188extern __inline __m512d
189__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
190_mm512_set1_pd (double __A)
191{
192 return (__m512d) __builtin_ia32_broadcastsd512 (__extension__
193 (__v2df) { __A, },
194 (__v8df)
195 _mm512_undefined_pd (),
196 (__mmask8) -1);
197}
198
199extern __inline __m512
200__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
201_mm512_set1_ps (float __A)
202{
203 return (__m512) __builtin_ia32_broadcastss512 (__extension__
204 (__v4sf) { __A, },
205 (__v16sf)
206 _mm512_undefined_ps (),
207 (__mmask16) -1);
208}
209
7d9088c2
UD
210/* Create the vector [A B C D A B C D A B C D A B C D]. */
211extern __inline __m512i
212__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
213_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
214{
215 return __extension__ (__m512i)(__v16si)
216 { __D, __C, __B, __A, __D, __C, __B, __A,
217 __D, __C, __B, __A, __D, __C, __B, __A };
218}
219
220extern __inline __m512i
221__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
222_mm512_set4_epi64 (long long __A, long long __B, long long __C,
223 long long __D)
224{
225 return __extension__ (__m512i) (__v8di)
226 { __D, __C, __B, __A, __D, __C, __B, __A };
227}
228
229extern __inline __m512d
230__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
231_mm512_set4_pd (double __A, double __B, double __C, double __D)
232{
233 return __extension__ (__m512d)
234 { __D, __C, __B, __A, __D, __C, __B, __A };
235}
236
237extern __inline __m512
238__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
239_mm512_set4_ps (float __A, float __B, float __C, float __D)
240{
241 return __extension__ (__m512)
242 { __D, __C, __B, __A, __D, __C, __B, __A,
243 __D, __C, __B, __A, __D, __C, __B, __A };
244}
245
246#define _mm512_setr4_epi64(e0,e1,e2,e3) \
247 _mm512_set4_epi64(e3,e2,e1,e0)
248
249#define _mm512_setr4_epi32(e0,e1,e2,e3) \
250 _mm512_set4_epi32(e3,e2,e1,e0)
251
252#define _mm512_setr4_pd(e0,e1,e2,e3) \
253 _mm512_set4_pd(e3,e2,e1,e0)
254
255#define _mm512_setr4_ps(e0,e1,e2,e3) \
256 _mm512_set4_ps(e3,e2,e1,e0)
257
756c5857
AI
258extern __inline __m512
259__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
260_mm512_setzero_ps (void)
261{
262 return __extension__ (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
263 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
264}
265
266extern __inline __m512d
267__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
268_mm512_setzero_pd (void)
269{
270 return __extension__ (__m512d) { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
271}
272
7d9088c2
UD
273extern __inline __m512i
274__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
275_mm512_setzero_epi32 (void)
276{
277 return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
278}
279
756c5857
AI
280extern __inline __m512i
281__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
282_mm512_setzero_si512 (void)
283{
284 return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
285}
286
287extern __inline __m512d
288__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
289_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
290{
291 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
292 (__v8df) __W,
293 (__mmask8) __U);
294}
295
296extern __inline __m512d
297__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
298_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
299{
300 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
301 (__v8df)
302 _mm512_setzero_pd (),
303 (__mmask8) __U);
304}
305
306extern __inline __m512
307__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
308_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
309{
310 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
311 (__v16sf) __W,
312 (__mmask16) __U);
313}
314
315extern __inline __m512
316__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
317_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
318{
319 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
320 (__v16sf)
321 _mm512_setzero_ps (),
322 (__mmask16) __U);
323}
324
325extern __inline __m512d
326__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
327_mm512_load_pd (void const *__P)
328{
329 return *(__m512d *) __P;
330}
331
332extern __inline __m512d
333__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
334_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
335{
336 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
337 (__v8df) __W,
338 (__mmask8) __U);
339}
340
341extern __inline __m512d
342__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
343_mm512_maskz_load_pd (__mmask8 __U, void const *__P)
344{
345 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
346 (__v8df)
347 _mm512_setzero_pd (),
348 (__mmask8) __U);
349}
350
351extern __inline void
352__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
353_mm512_store_pd (void *__P, __m512d __A)
354{
355 *(__m512d *) __P = __A;
356}
357
358extern __inline void
359__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
360_mm512_mask_store_pd (void *__P, __mmask8 __U, __m512d __A)
361{
362 __builtin_ia32_storeapd512_mask ((__v8df *) __P, (__v8df) __A,
363 (__mmask8) __U);
364}
365
366extern __inline __m512
367__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
368_mm512_load_ps (void const *__P)
369{
370 return *(__m512 *) __P;
371}
372
373extern __inline __m512
374__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
375_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
376{
377 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
378 (__v16sf) __W,
379 (__mmask16) __U);
380}
381
382extern __inline __m512
383__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
384_mm512_maskz_load_ps (__mmask16 __U, void const *__P)
385{
386 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
387 (__v16sf)
388 _mm512_setzero_ps (),
389 (__mmask16) __U);
390}
391
392extern __inline void
393__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
394_mm512_store_ps (void *__P, __m512 __A)
395{
396 *(__m512 *) __P = __A;
397}
398
399extern __inline void
400__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
401_mm512_mask_store_ps (void *__P, __mmask16 __U, __m512 __A)
402{
403 __builtin_ia32_storeaps512_mask ((__v16sf *) __P, (__v16sf) __A,
404 (__mmask16) __U);
405}
406
407extern __inline __m512i
408__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
409_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
410{
411 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
412 (__v8di) __W,
413 (__mmask8) __U);
414}
415
416extern __inline __m512i
417__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
418_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
419{
420 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
421 (__v8di)
422 _mm512_setzero_si512 (),
423 (__mmask8) __U);
424}
425
426extern __inline __m512i
427__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
428_mm512_load_epi64 (void const *__P)
429{
430 return *(__m512i *) __P;
431}
432
433extern __inline __m512i
434__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
435_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
436{
437 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
438 (__v8di) __W,
439 (__mmask8) __U);
440}
441
442extern __inline __m512i
443__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
444_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
445{
446 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
447 (__v8di)
448 _mm512_setzero_si512 (),
449 (__mmask8) __U);
450}
451
452extern __inline void
453__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
454_mm512_store_epi64 (void *__P, __m512i __A)
455{
456 *(__m512i *) __P = __A;
457}
458
459extern __inline void
460__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
461_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
462{
463 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
464 (__mmask8) __U);
465}
466
467extern __inline __m512i
468__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
469_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
470{
471 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
472 (__v16si) __W,
473 (__mmask16) __U);
474}
475
476extern __inline __m512i
477__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
478_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
479{
480 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
481 (__v16si)
482 _mm512_setzero_si512 (),
483 (__mmask16) __U);
484}
485
486extern __inline __m512i
487__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
488_mm512_load_si512 (void const *__P)
489{
490 return *(__m512i *) __P;
491}
492
493extern __inline __m512i
494__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
495_mm512_load_epi32 (void const *__P)
496{
497 return *(__m512i *) __P;
498}
499
500extern __inline __m512i
501__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
502_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
503{
504 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
505 (__v16si) __W,
506 (__mmask16) __U);
507}
508
509extern __inline __m512i
510__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
511_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
512{
513 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
514 (__v16si)
515 _mm512_setzero_si512 (),
516 (__mmask16) __U);
517}
518
519extern __inline void
520__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
521_mm512_store_si512 (void *__P, __m512i __A)
522{
523 *(__m512i *) __P = __A;
524}
525
526extern __inline void
527__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
528_mm512_store_epi32 (void *__P, __m512i __A)
529{
530 *(__m512i *) __P = __A;
531}
532
533extern __inline void
534__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
535_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
536{
537 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
538 (__mmask16) __U);
539}
540
541extern __inline __m512i
542__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
543_mm512_mullo_epi32 (__m512i __A, __m512i __B)
544{
2069d6fc 545 return (__m512i) ((__v16su) __A * (__v16su) __B);
756c5857
AI
546}
547
548extern __inline __m512i
549__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
550_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
551{
552 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
553 (__v16si) __B,
554 (__v16si)
555 _mm512_setzero_si512 (),
556 __M);
557}
558
559extern __inline __m512i
560__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
561_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
562{
563 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
564 (__v16si) __B,
565 (__v16si) __W, __M);
566}
567
568extern __inline __m512i
569__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
570_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
571{
572 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
573 (__v16si) __Y,
574 (__v16si)
4271e5cb 575 _mm512_undefined_epi32 (),
756c5857
AI
576 (__mmask16) -1);
577}
578
579extern __inline __m512i
580__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
581_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
582{
583 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
584 (__v16si) __Y,
585 (__v16si) __W,
586 (__mmask16) __U);
587}
588
589extern __inline __m512i
590__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
591_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
592{
593 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
594 (__v16si) __Y,
595 (__v16si)
596 _mm512_setzero_si512 (),
597 (__mmask16) __U);
598}
599
600extern __inline __m512i
601__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
602_mm512_srav_epi32 (__m512i __X, __m512i __Y)
603{
604 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
605 (__v16si) __Y,
606 (__v16si)
4271e5cb 607 _mm512_undefined_epi32 (),
756c5857
AI
608 (__mmask16) -1);
609}
610
611extern __inline __m512i
612__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
613_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
614{
615 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
616 (__v16si) __Y,
617 (__v16si) __W,
618 (__mmask16) __U);
619}
620
621extern __inline __m512i
622__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
623_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
624{
625 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
626 (__v16si) __Y,
627 (__v16si)
628 _mm512_setzero_si512 (),
629 (__mmask16) __U);
630}
631
632extern __inline __m512i
633__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
634_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
635{
636 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
637 (__v16si) __Y,
638 (__v16si)
4271e5cb 639 _mm512_undefined_epi32 (),
756c5857
AI
640 (__mmask16) -1);
641}
642
643extern __inline __m512i
644__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
645_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
646{
647 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
648 (__v16si) __Y,
649 (__v16si) __W,
650 (__mmask16) __U);
651}
652
653extern __inline __m512i
654__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
655_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
656{
657 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
658 (__v16si) __Y,
659 (__v16si)
660 _mm512_setzero_si512 (),
661 (__mmask16) __U);
662}
663
664extern __inline __m512i
665__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
666_mm512_add_epi64 (__m512i __A, __m512i __B)
667{
2069d6fc 668 return (__m512i) ((__v8du) __A + (__v8du) __B);
756c5857
AI
669}
670
671extern __inline __m512i
672__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
673_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
674{
675 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
676 (__v8di) __B,
677 (__v8di) __W,
678 (__mmask8) __U);
679}
680
681extern __inline __m512i
682__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
683_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
684{
685 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
686 (__v8di) __B,
687 (__v8di)
688 _mm512_setzero_si512 (),
689 (__mmask8) __U);
690}
691
692extern __inline __m512i
693__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
694_mm512_sub_epi64 (__m512i __A, __m512i __B)
695{
2069d6fc 696 return (__m512i) ((__v8du) __A - (__v8du) __B);
756c5857
AI
697}
698
699extern __inline __m512i
700__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
701_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
702{
703 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
704 (__v8di) __B,
705 (__v8di) __W,
706 (__mmask8) __U);
707}
708
709extern __inline __m512i
710__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
711_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
712{
713 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
714 (__v8di) __B,
715 (__v8di)
716 _mm512_setzero_si512 (),
717 (__mmask8) __U);
718}
719
720extern __inline __m512i
721__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
722_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
723{
724 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
725 (__v8di) __Y,
726 (__v8di)
0b192937 727 _mm512_undefined_pd (),
756c5857
AI
728 (__mmask8) -1);
729}
730
731extern __inline __m512i
732__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
733_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
734{
735 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
736 (__v8di) __Y,
737 (__v8di) __W,
738 (__mmask8) __U);
739}
740
741extern __inline __m512i
742__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
743_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
744{
745 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
746 (__v8di) __Y,
747 (__v8di)
748 _mm512_setzero_si512 (),
749 (__mmask8) __U);
750}
751
752extern __inline __m512i
753__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
754_mm512_srav_epi64 (__m512i __X, __m512i __Y)
755{
756 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
757 (__v8di) __Y,
758 (__v8di)
4271e5cb 759 _mm512_undefined_epi32 (),
756c5857
AI
760 (__mmask8) -1);
761}
762
763extern __inline __m512i
764__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
765_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
766{
767 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
768 (__v8di) __Y,
769 (__v8di) __W,
770 (__mmask8) __U);
771}
772
773extern __inline __m512i
774__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
775_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
776{
777 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
778 (__v8di) __Y,
779 (__v8di)
780 _mm512_setzero_si512 (),
781 (__mmask8) __U);
782}
783
784extern __inline __m512i
785__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
786_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
787{
788 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
789 (__v8di) __Y,
790 (__v8di)
4271e5cb 791 _mm512_undefined_epi32 (),
756c5857
AI
792 (__mmask8) -1);
793}
794
795extern __inline __m512i
796__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
797_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
798{
799 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
800 (__v8di) __Y,
801 (__v8di) __W,
802 (__mmask8) __U);
803}
804
805extern __inline __m512i
806__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
807_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
808{
809 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
810 (__v8di) __Y,
811 (__v8di)
812 _mm512_setzero_si512 (),
813 (__mmask8) __U);
814}
815
816extern __inline __m512i
817__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
818_mm512_add_epi32 (__m512i __A, __m512i __B)
819{
2069d6fc 820 return (__m512i) ((__v16su) __A + (__v16su) __B);
756c5857
AI
821}
822
823extern __inline __m512i
824__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
825_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
826{
827 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
828 (__v16si) __B,
829 (__v16si) __W,
830 (__mmask16) __U);
831}
832
833extern __inline __m512i
834__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
835_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
836{
837 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
838 (__v16si) __B,
839 (__v16si)
840 _mm512_setzero_si512 (),
841 (__mmask16) __U);
842}
843
844extern __inline __m512i
845__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
846_mm512_mul_epi32 (__m512i __X, __m512i __Y)
847{
848 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
849 (__v16si) __Y,
850 (__v8di)
4271e5cb 851 _mm512_undefined_epi32 (),
756c5857
AI
852 (__mmask8) -1);
853}
854
855extern __inline __m512i
856__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
857_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
858{
859 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
860 (__v16si) __Y,
861 (__v8di) __W, __M);
862}
863
864extern __inline __m512i
865__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
866_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
867{
868 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
869 (__v16si) __Y,
870 (__v8di)
871 _mm512_setzero_si512 (),
872 __M);
873}
874
875extern __inline __m512i
876__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
877_mm512_sub_epi32 (__m512i __A, __m512i __B)
878{
2069d6fc 879 return (__m512i) ((__v16su) __A - (__v16su) __B);
756c5857
AI
880}
881
882extern __inline __m512i
883__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
884_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
885{
886 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
887 (__v16si) __B,
888 (__v16si) __W,
889 (__mmask16) __U);
890}
891
892extern __inline __m512i
893__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
894_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
895{
896 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
897 (__v16si) __B,
898 (__v16si)
899 _mm512_setzero_si512 (),
900 (__mmask16) __U);
901}
902
903extern __inline __m512i
904__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
905_mm512_mul_epu32 (__m512i __X, __m512i __Y)
906{
907 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
908 (__v16si) __Y,
909 (__v8di)
4271e5cb 910 _mm512_undefined_epi32 (),
756c5857
AI
911 (__mmask8) -1);
912}
913
914extern __inline __m512i
915__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
916_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
917{
918 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
919 (__v16si) __Y,
920 (__v8di) __W, __M);
921}
922
923extern __inline __m512i
924__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
925_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
926{
927 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
928 (__v16si) __Y,
929 (__v8di)
930 _mm512_setzero_si512 (),
931 __M);
932}
933
934#ifdef __OPTIMIZE__
935extern __inline __m512i
936__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
937_mm512_slli_epi64 (__m512i __A, unsigned int __B)
938{
939 return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
940 (__v8di)
4271e5cb 941 _mm512_undefined_epi32 (),
756c5857
AI
942 (__mmask8) -1);
943}
944
945extern __inline __m512i
946__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
947_mm512_mask_slli_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
948 unsigned int __B)
949{
950 return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
951 (__v8di) __W,
952 (__mmask8) __U);
953}
954
955extern __inline __m512i
956__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
957_mm512_maskz_slli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
958{
959 return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
960 (__v8di)
961 _mm512_setzero_si512 (),
962 (__mmask8) __U);
963}
964#else
965#define _mm512_slli_epi64(X, C) \
966 ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
4271e5cb 967 (__v8di)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
968 (__mmask8)-1))
969
970#define _mm512_mask_slli_epi64(W, U, X, C) \
971 ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
972 (__v8di)(__m512i)(W),\
973 (__mmask8)(U)))
974
975#define _mm512_maskz_slli_epi64(U, X, C) \
976 ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
977 (__v8di)(__m512i)_mm512_setzero_si512 (),\
978 (__mmask8)(U)))
979#endif
980
981extern __inline __m512i
982__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
983_mm512_sll_epi64 (__m512i __A, __m128i __B)
984{
985 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
986 (__v2di) __B,
987 (__v8di)
4271e5cb 988 _mm512_undefined_epi32 (),
756c5857
AI
989 (__mmask8) -1);
990}
991
992extern __inline __m512i
993__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
994_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
995{
996 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
997 (__v2di) __B,
998 (__v8di) __W,
999 (__mmask8) __U);
1000}
1001
1002extern __inline __m512i
1003__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1004_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
1005{
1006 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
1007 (__v2di) __B,
1008 (__v8di)
1009 _mm512_setzero_si512 (),
1010 (__mmask8) __U);
1011}
1012
1013#ifdef __OPTIMIZE__
1014extern __inline __m512i
1015__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1016_mm512_srli_epi64 (__m512i __A, unsigned int __B)
1017{
1018 return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
1019 (__v8di)
4271e5cb 1020 _mm512_undefined_epi32 (),
756c5857
AI
1021 (__mmask8) -1);
1022}
1023
1024extern __inline __m512i
1025__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1026_mm512_mask_srli_epi64 (__m512i __W, __mmask8 __U,
1027 __m512i __A, unsigned int __B)
1028{
1029 return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
1030 (__v8di) __W,
1031 (__mmask8) __U);
1032}
1033
1034extern __inline __m512i
1035__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1036_mm512_maskz_srli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
1037{
1038 return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
1039 (__v8di)
1040 _mm512_setzero_si512 (),
1041 (__mmask8) __U);
1042}
1043#else
1044#define _mm512_srli_epi64(X, C) \
1045 ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
4271e5cb 1046 (__v8di)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
1047 (__mmask8)-1))
1048
1049#define _mm512_mask_srli_epi64(W, U, X, C) \
1050 ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1051 (__v8di)(__m512i)(W),\
1052 (__mmask8)(U)))
1053
1054#define _mm512_maskz_srli_epi64(U, X, C) \
1055 ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1056 (__v8di)(__m512i)_mm512_setzero_si512 (),\
1057 (__mmask8)(U)))
1058#endif
1059
1060extern __inline __m512i
1061__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1062_mm512_srl_epi64 (__m512i __A, __m128i __B)
1063{
1064 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
1065 (__v2di) __B,
1066 (__v8di)
4271e5cb 1067 _mm512_undefined_epi32 (),
756c5857
AI
1068 (__mmask8) -1);
1069}
1070
1071extern __inline __m512i
1072__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1073_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
1074{
1075 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
1076 (__v2di) __B,
1077 (__v8di) __W,
1078 (__mmask8) __U);
1079}
1080
1081extern __inline __m512i
1082__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1083_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
1084{
1085 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
1086 (__v2di) __B,
1087 (__v8di)
1088 _mm512_setzero_si512 (),
1089 (__mmask8) __U);
1090}
1091
1092#ifdef __OPTIMIZE__
1093extern __inline __m512i
1094__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1095_mm512_srai_epi64 (__m512i __A, unsigned int __B)
1096{
1097 return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
1098 (__v8di)
4271e5cb 1099 _mm512_undefined_epi32 (),
756c5857
AI
1100 (__mmask8) -1);
1101}
1102
1103extern __inline __m512i
1104__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1105_mm512_mask_srai_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
1106 unsigned int __B)
1107{
1108 return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
1109 (__v8di) __W,
1110 (__mmask8) __U);
1111}
1112
1113extern __inline __m512i
1114__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1115_mm512_maskz_srai_epi64 (__mmask8 __U, __m512i __A, unsigned int __B)
1116{
1117 return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
1118 (__v8di)
1119 _mm512_setzero_si512 (),
1120 (__mmask8) __U);
1121}
1122#else
1123#define _mm512_srai_epi64(X, C) \
1124 ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
4271e5cb 1125 (__v8di)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
1126 (__mmask8)-1))
1127
1128#define _mm512_mask_srai_epi64(W, U, X, C) \
1129 ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1130 (__v8di)(__m512i)(W),\
1131 (__mmask8)(U)))
1132
1133#define _mm512_maskz_srai_epi64(U, X, C) \
1134 ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
1135 (__v8di)(__m512i)_mm512_setzero_si512 (),\
1136 (__mmask8)(U)))
1137#endif
1138
1139extern __inline __m512i
1140__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1141_mm512_sra_epi64 (__m512i __A, __m128i __B)
1142{
1143 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
1144 (__v2di) __B,
1145 (__v8di)
4271e5cb 1146 _mm512_undefined_epi32 (),
756c5857
AI
1147 (__mmask8) -1);
1148}
1149
1150extern __inline __m512i
1151__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1152_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
1153{
1154 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
1155 (__v2di) __B,
1156 (__v8di) __W,
1157 (__mmask8) __U);
1158}
1159
1160extern __inline __m512i
1161__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1162_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
1163{
1164 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
1165 (__v2di) __B,
1166 (__v8di)
1167 _mm512_setzero_si512 (),
1168 (__mmask8) __U);
1169}
1170
1171#ifdef __OPTIMIZE__
1172extern __inline __m512i
1173__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1174_mm512_slli_epi32 (__m512i __A, unsigned int __B)
1175{
1176 return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
1177 (__v16si)
4271e5cb 1178 _mm512_undefined_epi32 (),
756c5857
AI
1179 (__mmask16) -1);
1180}
1181
1182extern __inline __m512i
1183__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1184_mm512_mask_slli_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
1185 unsigned int __B)
1186{
1187 return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
1188 (__v16si) __W,
1189 (__mmask16) __U);
1190}
1191
1192extern __inline __m512i
1193__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1194_mm512_maskz_slli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
1195{
1196 return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
1197 (__v16si)
1198 _mm512_setzero_si512 (),
1199 (__mmask16) __U);
1200}
1201#else
1202#define _mm512_slli_epi32(X, C) \
1203 ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
4271e5cb 1204 (__v16si)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
1205 (__mmask16)-1))
1206
1207#define _mm512_mask_slli_epi32(W, U, X, C) \
1208 ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1209 (__v16si)(__m512i)(W),\
1210 (__mmask16)(U)))
1211
1212#define _mm512_maskz_slli_epi32(U, X, C) \
1213 ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1214 (__v16si)(__m512i)_mm512_setzero_si512 (),\
1215 (__mmask16)(U)))
1216#endif
1217
1218extern __inline __m512i
1219__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1220_mm512_sll_epi32 (__m512i __A, __m128i __B)
1221{
1222 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
1223 (__v4si) __B,
1224 (__v16si)
4271e5cb 1225 _mm512_undefined_epi32 (),
756c5857
AI
1226 (__mmask16) -1);
1227}
1228
1229extern __inline __m512i
1230__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1231_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
1232{
1233 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
1234 (__v4si) __B,
1235 (__v16si) __W,
1236 (__mmask16) __U);
1237}
1238
1239extern __inline __m512i
1240__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1241_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
1242{
1243 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
1244 (__v4si) __B,
1245 (__v16si)
1246 _mm512_setzero_si512 (),
1247 (__mmask16) __U);
1248}
1249
1250#ifdef __OPTIMIZE__
1251extern __inline __m512i
1252__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1253_mm512_srli_epi32 (__m512i __A, unsigned int __B)
1254{
1255 return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
1256 (__v16si)
4271e5cb 1257 _mm512_undefined_epi32 (),
756c5857
AI
1258 (__mmask16) -1);
1259}
1260
1261extern __inline __m512i
1262__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1263_mm512_mask_srli_epi32 (__m512i __W, __mmask16 __U,
1264 __m512i __A, unsigned int __B)
1265{
1266 return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
1267 (__v16si) __W,
1268 (__mmask16) __U);
1269}
1270
1271extern __inline __m512i
1272__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1273_mm512_maskz_srli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
1274{
1275 return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
1276 (__v16si)
1277 _mm512_setzero_si512 (),
1278 (__mmask16) __U);
1279}
1280#else
1281#define _mm512_srli_epi32(X, C) \
1282 ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
4271e5cb 1283 (__v16si)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
1284 (__mmask16)-1))
1285
1286#define _mm512_mask_srli_epi32(W, U, X, C) \
1287 ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1288 (__v16si)(__m512i)(W),\
1289 (__mmask16)(U)))
1290
1291#define _mm512_maskz_srli_epi32(U, X, C) \
1292 ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1293 (__v16si)(__m512i)_mm512_setzero_si512 (),\
1294 (__mmask16)(U)))
1295#endif
1296
1297extern __inline __m512i
1298__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1299_mm512_srl_epi32 (__m512i __A, __m128i __B)
1300{
1301 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
1302 (__v4si) __B,
1303 (__v16si)
4271e5cb 1304 _mm512_undefined_epi32 (),
756c5857
AI
1305 (__mmask16) -1);
1306}
1307
1308extern __inline __m512i
1309__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1310_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
1311{
1312 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
1313 (__v4si) __B,
1314 (__v16si) __W,
1315 (__mmask16) __U);
1316}
1317
1318extern __inline __m512i
1319__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1320_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
1321{
1322 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
1323 (__v4si) __B,
1324 (__v16si)
1325 _mm512_setzero_si512 (),
1326 (__mmask16) __U);
1327}
1328
1329#ifdef __OPTIMIZE__
1330extern __inline __m512i
1331__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1332_mm512_srai_epi32 (__m512i __A, unsigned int __B)
1333{
1334 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
1335 (__v16si)
4271e5cb 1336 _mm512_undefined_epi32 (),
756c5857
AI
1337 (__mmask16) -1);
1338}
1339
1340extern __inline __m512i
1341__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1342_mm512_mask_srai_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
1343 unsigned int __B)
1344{
1345 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
1346 (__v16si) __W,
1347 (__mmask16) __U);
1348}
1349
1350extern __inline __m512i
1351__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1352_mm512_maskz_srai_epi32 (__mmask16 __U, __m512i __A, unsigned int __B)
1353{
1354 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
1355 (__v16si)
1356 _mm512_setzero_si512 (),
1357 (__mmask16) __U);
1358}
1359#else
1360#define _mm512_srai_epi32(X, C) \
1361 ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
4271e5cb 1362 (__v16si)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
1363 (__mmask16)-1))
1364
1365#define _mm512_mask_srai_epi32(W, U, X, C) \
1366 ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1367 (__v16si)(__m512i)(W),\
1368 (__mmask16)(U)))
1369
1370#define _mm512_maskz_srai_epi32(U, X, C) \
1371 ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
1372 (__v16si)(__m512i)_mm512_setzero_si512 (),\
1373 (__mmask16)(U)))
1374#endif
1375
1376extern __inline __m512i
1377__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1378_mm512_sra_epi32 (__m512i __A, __m128i __B)
1379{
1380 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
1381 (__v4si) __B,
1382 (__v16si)
4271e5cb 1383 _mm512_undefined_epi32 (),
756c5857
AI
1384 (__mmask16) -1);
1385}
1386
1387extern __inline __m512i
1388__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1389_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
1390{
1391 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
1392 (__v4si) __B,
1393 (__v16si) __W,
1394 (__mmask16) __U);
1395}
1396
1397extern __inline __m512i
1398__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1399_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
1400{
1401 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
1402 (__v4si) __B,
1403 (__v16si)
1404 _mm512_setzero_si512 (),
1405 (__mmask16) __U);
1406}
1407
075691af
AI
1408#ifdef __OPTIMIZE__
1409extern __inline __m128d
1410__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1411_mm_add_round_sd (__m128d __A, __m128d __B, const int __R)
1412{
1413 return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A,
1414 (__v2df) __B,
1415 __R);
1416}
1417
1853f5c7
SP
1418extern __inline __m128d
1419__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1420_mm_mask_add_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
1421 __m128d __B, const int __R)
1422{
1423 return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
1424 (__v2df) __B,
1425 (__v2df) __W,
1426 (__mmask8) __U, __R);
1427}
1428
1429extern __inline __m128d
1430__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1431_mm_maskz_add_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
1432 const int __R)
1433{
1434 return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
1435 (__v2df) __B,
1436 (__v2df)
1437 _mm_setzero_pd (),
1438 (__mmask8) __U, __R);
1439}
1440
075691af
AI
1441extern __inline __m128
1442__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1443_mm_add_round_ss (__m128 __A, __m128 __B, const int __R)
1444{
1445 return (__m128) __builtin_ia32_addss_round ((__v4sf) __A,
1446 (__v4sf) __B,
1447 __R);
1448}
1449
1853f5c7
SP
1450extern __inline __m128
1451__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1452_mm_mask_add_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
1453 __m128 __B, const int __R)
1454{
1455 return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
1456 (__v4sf) __B,
1457 (__v4sf) __W,
1458 (__mmask8) __U, __R);
1459}
1460
1461extern __inline __m128
1462__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1463_mm_maskz_add_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
1464 const int __R)
1465{
1466 return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
1467 (__v4sf) __B,
1468 (__v4sf)
1469 _mm_setzero_ps (),
1470 (__mmask8) __U, __R);
1471}
1472
075691af
AI
1473extern __inline __m128d
1474__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1475_mm_sub_round_sd (__m128d __A, __m128d __B, const int __R)
1476{
1477 return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A,
1478 (__v2df) __B,
1479 __R);
1480}
1481
1853f5c7
SP
1482extern __inline __m128d
1483__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1484_mm_mask_sub_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
1485 __m128d __B, const int __R)
1486{
1487 return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
1488 (__v2df) __B,
1489 (__v2df) __W,
1490 (__mmask8) __U, __R);
1491}
1492
1493extern __inline __m128d
1494__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1495_mm_maskz_sub_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
1496 const int __R)
1497{
1498 return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
1499 (__v2df) __B,
1500 (__v2df)
1501 _mm_setzero_pd (),
1502 (__mmask8) __U, __R);
1503}
1504
075691af
AI
1505extern __inline __m128
1506__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1507_mm_sub_round_ss (__m128 __A, __m128 __B, const int __R)
1508{
1509 return (__m128) __builtin_ia32_subss_round ((__v4sf) __A,
1510 (__v4sf) __B,
1511 __R);
1512}
1513
1853f5c7
SP
1514extern __inline __m128
1515__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1516_mm_mask_sub_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
1517 __m128 __B, const int __R)
1518{
1519 return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
1520 (__v4sf) __B,
1521 (__v4sf) __W,
1522 (__mmask8) __U, __R);
1523}
1524
1525extern __inline __m128
1526__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1527_mm_maskz_sub_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
1528 const int __R)
1529{
1530 return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
1531 (__v4sf) __B,
1532 (__v4sf)
1533 _mm_setzero_ps (),
1534 (__mmask8) __U, __R);
1535}
1536
075691af
AI
1537#else
1538#define _mm_add_round_sd(A, B, C) \
1539 (__m128d)__builtin_ia32_addsd_round(A, B, C)
1540
1853f5c7
SP
1541#define _mm_mask_add_round_sd(W, U, A, B, C) \
1542 (__m128d)__builtin_ia32_addsd_mask_round(A, B, W, U, C)
1543
1544#define _mm_maskz_add_round_sd(U, A, B, C) \
1545 (__m128d)__builtin_ia32_addsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
1546
075691af
AI
1547#define _mm_add_round_ss(A, B, C) \
1548 (__m128)__builtin_ia32_addss_round(A, B, C)
1549
1853f5c7
SP
1550#define _mm_mask_add_round_ss(W, U, A, B, C) \
1551 (__m128)__builtin_ia32_addss_mask_round(A, B, W, U, C)
1552
1553#define _mm_maskz_add_round_ss(U, A, B, C) \
1554 (__m128)__builtin_ia32_addss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
1555
075691af
AI
1556#define _mm_sub_round_sd(A, B, C) \
1557 (__m128d)__builtin_ia32_subsd_round(A, B, C)
1558
1853f5c7
SP
1559#define _mm_mask_sub_round_sd(W, U, A, B, C) \
1560 (__m128d)__builtin_ia32_subsd_mask_round(A, B, W, U, C)
1561
1562#define _mm_maskz_sub_round_sd(U, A, B, C) \
1563 (__m128d)__builtin_ia32_subsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
1564
075691af
AI
1565#define _mm_sub_round_ss(A, B, C) \
1566 (__m128)__builtin_ia32_subss_round(A, B, C)
1853f5c7
SP
1567
1568#define _mm_mask_sub_round_ss(W, U, A, B, C) \
1569 (__m128)__builtin_ia32_subss_mask_round(A, B, W, U, C)
1570
1571#define _mm_maskz_sub_round_ss(U, A, B, C) \
1572 (__m128)__builtin_ia32_subss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
1573
075691af
AI
1574#endif
1575
756c5857
AI
1576#ifdef __OPTIMIZE__
1577extern __inline __m512i
1578__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b5fd0b71
JJ
1579_mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C,
1580 const int __imm)
756c5857
AI
1581{
1582 return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
1583 (__v8di) __B,
b5fd0b71 1584 (__v8di) __C, __imm,
756c5857
AI
1585 (__mmask8) -1);
1586}
1587
1588extern __inline __m512i
1589__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1590_mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B,
b5fd0b71 1591 __m512i __C, const int __imm)
756c5857
AI
1592{
1593 return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
1594 (__v8di) __B,
b5fd0b71 1595 (__v8di) __C, __imm,
756c5857
AI
1596 (__mmask8) __U);
1597}
1598
1599extern __inline __m512i
1600__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1601_mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
b5fd0b71 1602 __m512i __C, const int __imm)
756c5857
AI
1603{
1604 return (__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di) __A,
1605 (__v8di) __B,
1606 (__v8di) __C,
b5fd0b71 1607 __imm, (__mmask8) __U);
756c5857
AI
1608}
1609
1610extern __inline __m512i
1611__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b5fd0b71
JJ
1612_mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C,
1613 const int __imm)
756c5857
AI
1614{
1615 return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
1616 (__v16si) __B,
1617 (__v16si) __C,
b5fd0b71 1618 __imm, (__mmask16) -1);
756c5857
AI
1619}
1620
1621extern __inline __m512i
1622__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1623_mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B,
b5fd0b71 1624 __m512i __C, const int __imm)
756c5857
AI
1625{
1626 return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
1627 (__v16si) __B,
1628 (__v16si) __C,
b5fd0b71 1629 __imm, (__mmask16) __U);
756c5857
AI
1630}
1631
1632extern __inline __m512i
1633__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1634_mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
b5fd0b71 1635 __m512i __C, const int __imm)
756c5857
AI
1636{
1637 return (__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si) __A,
1638 (__v16si) __B,
1639 (__v16si) __C,
b5fd0b71 1640 __imm, (__mmask16) __U);
756c5857
AI
1641}
1642#else
1643#define _mm512_ternarylogic_epi64(A, B, C, I) \
1644 ((__m512i) __builtin_ia32_pternlogq512_mask ((__v8di)(__m512i)(A), \
1645 (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)-1))
1646#define _mm512_mask_ternarylogic_epi64(A, U, B, C, I) \
1647 ((__m512i) __builtin_ia32_pternlogq512_mask ((__v8di)(__m512i)(A), \
1648 (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)(U)))
1649#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, I) \
1650 ((__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di)(__m512i)(A), \
1651 (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)(U)))
1652#define _mm512_ternarylogic_epi32(A, B, C, I) \
1653 ((__m512i) __builtin_ia32_pternlogd512_mask ((__v16si)(__m512i)(A), \
1654 (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I), \
1655 (__mmask16)-1))
1656#define _mm512_mask_ternarylogic_epi32(A, U, B, C, I) \
1657 ((__m512i) __builtin_ia32_pternlogd512_mask ((__v16si)(__m512i)(A), \
1658 (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I), \
1659 (__mmask16)(U)))
1660#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, I) \
1661 ((__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si)(__m512i)(A), \
1662 (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I), \
1663 (__mmask16)(U)))
1664#endif
1665
1666extern __inline __m512d
1667__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1668_mm512_rcp14_pd (__m512d __A)
1669{
1670 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1671 (__v8df)
0b192937 1672 _mm512_undefined_pd (),
756c5857
AI
1673 (__mmask8) -1);
1674}
1675
1676extern __inline __m512d
1677__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1678_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1679{
1680 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1681 (__v8df) __W,
1682 (__mmask8) __U);
1683}
1684
1685extern __inline __m512d
1686__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1687_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1688{
1689 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1690 (__v8df)
1691 _mm512_setzero_pd (),
1692 (__mmask8) __U);
1693}
1694
1695extern __inline __m512
1696__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1697_mm512_rcp14_ps (__m512 __A)
1698{
1699 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1700 (__v16sf)
0b192937 1701 _mm512_undefined_ps (),
756c5857
AI
1702 (__mmask16) -1);
1703}
1704
1705extern __inline __m512
1706__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1707_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1708{
1709 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1710 (__v16sf) __W,
1711 (__mmask16) __U);
1712}
1713
1714extern __inline __m512
1715__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1716_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1717{
1718 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1719 (__v16sf)
1720 _mm512_setzero_ps (),
1721 (__mmask16) __U);
1722}
1723
075691af
AI
1724extern __inline __m128d
1725__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1726_mm_rcp14_sd (__m128d __A, __m128d __B)
1727{
df62b4af
IT
1728 return (__m128d) __builtin_ia32_rcp14sd ((__v2df) __B,
1729 (__v2df) __A);
075691af
AI
1730}
1731
f4ee3a9e
UB
1732extern __inline __m128d
1733__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1734_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1735{
1736 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __B,
1737 (__v2df) __A,
1738 (__v2df) __W,
1739 (__mmask8) __U);
1740}
1741
1742extern __inline __m128d
1743__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1744_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1745{
1746 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __B,
1747 (__v2df) __A,
1748 (__v2df) _mm_setzero_ps (),
1749 (__mmask8) __U);
1750}
1751
075691af
AI
1752extern __inline __m128
1753__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1754_mm_rcp14_ss (__m128 __A, __m128 __B)
1755{
df62b4af
IT
1756 return (__m128) __builtin_ia32_rcp14ss ((__v4sf) __B,
1757 (__v4sf) __A);
075691af
AI
1758}
1759
f4ee3a9e
UB
1760extern __inline __m128
1761__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1762_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1763{
1764 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __B,
1765 (__v4sf) __A,
1766 (__v4sf) __W,
1767 (__mmask8) __U);
1768}
1769
1770extern __inline __m128
1771__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1772_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1773{
1774 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __B,
1775 (__v4sf) __A,
1776 (__v4sf) _mm_setzero_ps (),
1777 (__mmask8) __U);
1778}
1779
756c5857
AI
1780extern __inline __m512d
1781__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1782_mm512_rsqrt14_pd (__m512d __A)
1783{
1784 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1785 (__v8df)
0b192937 1786 _mm512_undefined_pd (),
756c5857
AI
1787 (__mmask8) -1);
1788}
1789
1790extern __inline __m512d
1791__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1792_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1793{
1794 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1795 (__v8df) __W,
1796 (__mmask8) __U);
1797}
1798
1799extern __inline __m512d
1800__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1801_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1802{
1803 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1804 (__v8df)
1805 _mm512_setzero_pd (),
1806 (__mmask8) __U);
1807}
1808
1809extern __inline __m512
1810__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1811_mm512_rsqrt14_ps (__m512 __A)
1812{
1813 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1814 (__v16sf)
0b192937 1815 _mm512_undefined_ps (),
756c5857
AI
1816 (__mmask16) -1);
1817}
1818
1819extern __inline __m512
1820__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1821_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1822{
1823 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1824 (__v16sf) __W,
1825 (__mmask16) __U);
1826}
1827
1828extern __inline __m512
1829__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1830_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1831{
1832 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1833 (__v16sf)
1834 _mm512_setzero_ps (),
1835 (__mmask16) __U);
1836}
1837
075691af
AI
1838extern __inline __m128d
1839__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1840_mm_rsqrt14_sd (__m128d __A, __m128d __B)
1841{
df62b4af
IT
1842 return (__m128d) __builtin_ia32_rsqrt14sd ((__v2df) __B,
1843 (__v2df) __A);
075691af
AI
1844}
1845
d7a33a4c
JK
1846extern __inline __m128d
1847__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1848_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1849{
1850 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __B,
1851 (__v2df) __A,
1852 (__v2df) __W,
1853 (__mmask8) __U);
1854}
1855
1856extern __inline __m128d
1857__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1858_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1859{
1860 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __B,
1861 (__v2df) __A,
1862 (__v2df) _mm_setzero_pd (),
1863 (__mmask8) __U);
1864}
1865
075691af
AI
1866extern __inline __m128
1867__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1868_mm_rsqrt14_ss (__m128 __A, __m128 __B)
1869{
df62b4af
IT
1870 return (__m128) __builtin_ia32_rsqrt14ss ((__v4sf) __B,
1871 (__v4sf) __A);
075691af
AI
1872}
1873
d7a33a4c
JK
1874extern __inline __m128
1875__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1876_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1877{
1878 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __B,
1879 (__v4sf) __A,
1880 (__v4sf) __W,
1881 (__mmask8) __U);
1882}
1883
1884extern __inline __m128
1885__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1886_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1887{
1888 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __B,
1889 (__v4sf) __A,
1890 (__v4sf) _mm_setzero_ps (),
1891 (__mmask8) __U);
1892}
1893
756c5857
AI
1894#ifdef __OPTIMIZE__
1895extern __inline __m512d
1896__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1897_mm512_sqrt_round_pd (__m512d __A, const int __R)
1898{
1899 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1900 (__v8df)
0b192937 1901 _mm512_undefined_pd (),
756c5857
AI
1902 (__mmask8) -1, __R);
1903}
1904
1905extern __inline __m512d
1906__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1907_mm512_mask_sqrt_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
1908 const int __R)
1909{
1910 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1911 (__v8df) __W,
1912 (__mmask8) __U, __R);
1913}
1914
1915extern __inline __m512d
1916__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1917_mm512_maskz_sqrt_round_pd (__mmask8 __U, __m512d __A, const int __R)
1918{
1919 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1920 (__v8df)
1921 _mm512_setzero_pd (),
1922 (__mmask8) __U, __R);
1923}
1924
1925extern __inline __m512
1926__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1927_mm512_sqrt_round_ps (__m512 __A, const int __R)
1928{
1929 return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
1930 (__v16sf)
0b192937 1931 _mm512_undefined_ps (),
756c5857
AI
1932 (__mmask16) -1, __R);
1933}
1934
1935extern __inline __m512
1936__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1937_mm512_mask_sqrt_round_ps (__m512 __W, __mmask16 __U, __m512 __A, const int __R)
1938{
1939 return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
1940 (__v16sf) __W,
1941 (__mmask16) __U, __R);
1942}
1943
1944extern __inline __m512
1945__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1946_mm512_maskz_sqrt_round_ps (__mmask16 __U, __m512 __A, const int __R)
1947{
1948 return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
1949 (__v16sf)
1950 _mm512_setzero_ps (),
1951 (__mmask16) __U, __R);
1952}
1953
075691af
AI
1954extern __inline __m128d
1955__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1956_mm_sqrt_round_sd (__m128d __A, __m128d __B, const int __R)
1957{
b10bc0d6
OM
1958 return (__m128d) __builtin_ia32_sqrtsd_mask_round ((__v2df) __B,
1959 (__v2df) __A,
1960 (__v2df)
1961 _mm_setzero_pd (),
1962 (__mmask8) -1, __R);
1963}
1964
1965extern __inline __m128d
1966__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1967_mm_mask_sqrt_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
1968 const int __R)
1969{
1970 return (__m128d) __builtin_ia32_sqrtsd_mask_round ((__v2df) __B,
1971 (__v2df) __A,
1972 (__v2df) __W,
1973 (__mmask8) __U, __R);
1974}
1975
1976extern __inline __m128d
1977__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1978_mm_maskz_sqrt_round_sd (__mmask8 __U, __m128d __A, __m128d __B, const int __R)
1979{
1980 return (__m128d) __builtin_ia32_sqrtsd_mask_round ((__v2df) __B,
1981 (__v2df) __A,
1982 (__v2df)
1983 _mm_setzero_pd (),
1984 (__mmask8) __U, __R);
075691af
AI
1985}
1986
1987extern __inline __m128
1988__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1989_mm_sqrt_round_ss (__m128 __A, __m128 __B, const int __R)
1990{
b10bc0d6
OM
1991 return (__m128) __builtin_ia32_sqrtss_mask_round ((__v4sf) __B,
1992 (__v4sf) __A,
1993 (__v4sf)
1994 _mm_setzero_ps (),
1995 (__mmask8) -1, __R);
1996}
1997
1998extern __inline __m128
1999__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2000_mm_mask_sqrt_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
2001 const int __R)
2002{
2003 return (__m128) __builtin_ia32_sqrtss_mask_round ((__v4sf) __B,
2004 (__v4sf) __A,
2005 (__v4sf) __W,
2006 (__mmask8) __U, __R);
2007}
2008
2009extern __inline __m128
2010__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2011_mm_maskz_sqrt_round_ss (__mmask8 __U, __m128 __A, __m128 __B, const int __R)
2012{
2013 return (__m128) __builtin_ia32_sqrtss_mask_round ((__v4sf) __B,
2014 (__v4sf) __A,
2015 (__v4sf)
2016 _mm_setzero_ps (),
2017 (__mmask8) __U, __R);
075691af 2018}
756c5857
AI
2019#else
2020#define _mm512_sqrt_round_pd(A, C) \
0b192937 2021 (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, C)
756c5857
AI
2022
2023#define _mm512_mask_sqrt_round_pd(W, U, A, C) \
2024 (__m512d)__builtin_ia32_sqrtpd512_mask(A, W, U, C)
2025
2026#define _mm512_maskz_sqrt_round_pd(U, A, C) \
2027 (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), U, C)
2028
2029#define _mm512_sqrt_round_ps(A, C) \
0b192937 2030 (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_undefined_ps(), -1, C)
756c5857
AI
2031
2032#define _mm512_mask_sqrt_round_ps(W, U, A, C) \
2033 (__m512)__builtin_ia32_sqrtps512_mask(A, W, U, C)
2034
2035#define _mm512_maskz_sqrt_round_ps(U, A, C) \
2036 (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), U, C)
075691af 2037
b10bc0d6
OM
2038#define _mm_sqrt_round_sd(A, B, C) \
2039 (__m128d)__builtin_ia32_sqrtsd_mask_round (B, A, \
2040 (__v2df) _mm_setzero_pd (), -1, C)
2041
2042#define _mm_mask_sqrt_round_sd(W, U, A, B, C) \
2043 (__m128d)__builtin_ia32_sqrtsd_mask_round (B, A, W, U, C)
2044
2045#define _mm_maskz_sqrt_round_sd(U, A, B, C) \
2046 (__m128d)__builtin_ia32_sqrtsd_mask_round (B, A, \
2047 (__v2df) _mm_setzero_pd (), U, C)
2048
2049#define _mm_sqrt_round_ss(A, B, C) \
2050 (__m128)__builtin_ia32_sqrtss_mask_round (B, A, \
2051 (__v4sf) _mm_setzero_ps (), -1, C)
2052
2053#define _mm_mask_sqrt_round_ss(W, U, A, B, C) \
2054 (__m128)__builtin_ia32_sqrtss_mask_round (B, A, W, U, C)
075691af 2055
b10bc0d6
OM
2056#define _mm_maskz_sqrt_round_ss(U, A, B, C) \
2057 (__m128)__builtin_ia32_sqrtss_mask_round (B, A, \
2058 (__v4sf) _mm_setzero_ps (), U, C)
756c5857
AI
2059#endif
2060
2061extern __inline __m512i
2062__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2063_mm512_cvtepi8_epi32 (__m128i __A)
2064{
2065 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
2066 (__v16si)
4271e5cb 2067 _mm512_undefined_epi32 (),
756c5857
AI
2068 (__mmask16) -1);
2069}
2070
2071extern __inline __m512i
2072__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2073_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
2074{
2075 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
2076 (__v16si) __W,
2077 (__mmask16) __U);
2078}
2079
2080extern __inline __m512i
2081__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2082_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
2083{
2084 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
2085 (__v16si)
2086 _mm512_setzero_si512 (),
2087 (__mmask16) __U);
2088}
2089
2090extern __inline __m512i
2091__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2092_mm512_cvtepi8_epi64 (__m128i __A)
2093{
2094 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
2095 (__v8di)
4271e5cb 2096 _mm512_undefined_epi32 (),
756c5857
AI
2097 (__mmask8) -1);
2098}
2099
2100extern __inline __m512i
2101__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2102_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2103{
2104 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
2105 (__v8di) __W,
2106 (__mmask8) __U);
2107}
2108
2109extern __inline __m512i
2110__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2111_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
2112{
2113 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
2114 (__v8di)
2115 _mm512_setzero_si512 (),
2116 (__mmask8) __U);
2117}
2118
2119extern __inline __m512i
2120__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2121_mm512_cvtepi16_epi32 (__m256i __A)
2122{
2123 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
2124 (__v16si)
4271e5cb 2125 _mm512_undefined_epi32 (),
756c5857
AI
2126 (__mmask16) -1);
2127}
2128
2129extern __inline __m512i
2130__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2131_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
2132{
2133 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
2134 (__v16si) __W,
2135 (__mmask16) __U);
2136}
2137
2138extern __inline __m512i
2139__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2140_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
2141{
2142 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
2143 (__v16si)
2144 _mm512_setzero_si512 (),
2145 (__mmask16) __U);
2146}
2147
2148extern __inline __m512i
2149__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2150_mm512_cvtepi16_epi64 (__m128i __A)
2151{
2152 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
2153 (__v8di)
4271e5cb 2154 _mm512_undefined_epi32 (),
756c5857
AI
2155 (__mmask8) -1);
2156}
2157
2158extern __inline __m512i
2159__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2160_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2161{
2162 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
2163 (__v8di) __W,
2164 (__mmask8) __U);
2165}
2166
2167extern __inline __m512i
2168__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2169_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
2170{
2171 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
2172 (__v8di)
2173 _mm512_setzero_si512 (),
2174 (__mmask8) __U);
2175}
2176
2177extern __inline __m512i
2178__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2179_mm512_cvtepi32_epi64 (__m256i __X)
2180{
2181 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
2182 (__v8di)
4271e5cb 2183 _mm512_undefined_epi32 (),
756c5857
AI
2184 (__mmask8) -1);
2185}
2186
2187extern __inline __m512i
2188__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2189_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
2190{
2191 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
2192 (__v8di) __W,
2193 (__mmask8) __U);
2194}
2195
2196extern __inline __m512i
2197__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2198_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
2199{
2200 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
2201 (__v8di)
2202 _mm512_setzero_si512 (),
2203 (__mmask8) __U);
2204}
2205
2206extern __inline __m512i
2207__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2208_mm512_cvtepu8_epi32 (__m128i __A)
2209{
2210 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
2211 (__v16si)
4271e5cb 2212 _mm512_undefined_epi32 (),
756c5857
AI
2213 (__mmask16) -1);
2214}
2215
2216extern __inline __m512i
2217__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2218_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
2219{
2220 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
2221 (__v16si) __W,
2222 (__mmask16) __U);
2223}
2224
2225extern __inline __m512i
2226__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2227_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
2228{
2229 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
2230 (__v16si)
2231 _mm512_setzero_si512 (),
2232 (__mmask16) __U);
2233}
2234
2235extern __inline __m512i
2236__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2237_mm512_cvtepu8_epi64 (__m128i __A)
2238{
2239 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
2240 (__v8di)
4271e5cb 2241 _mm512_undefined_epi32 (),
756c5857
AI
2242 (__mmask8) -1);
2243}
2244
2245extern __inline __m512i
2246__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2247_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2248{
2249 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
2250 (__v8di) __W,
2251 (__mmask8) __U);
2252}
2253
2254extern __inline __m512i
2255__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2256_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
2257{
2258 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
2259 (__v8di)
2260 _mm512_setzero_si512 (),
2261 (__mmask8) __U);
2262}
2263
2264extern __inline __m512i
2265__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2266_mm512_cvtepu16_epi32 (__m256i __A)
2267{
2268 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
2269 (__v16si)
4271e5cb 2270 _mm512_undefined_epi32 (),
756c5857
AI
2271 (__mmask16) -1);
2272}
2273
2274extern __inline __m512i
2275__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2276_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
2277{
2278 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
2279 (__v16si) __W,
2280 (__mmask16) __U);
2281}
2282
2283extern __inline __m512i
2284__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2285_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
2286{
2287 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
2288 (__v16si)
2289 _mm512_setzero_si512 (),
2290 (__mmask16) __U);
2291}
2292
2293extern __inline __m512i
2294__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2295_mm512_cvtepu16_epi64 (__m128i __A)
2296{
2297 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
2298 (__v8di)
4271e5cb 2299 _mm512_undefined_epi32 (),
756c5857
AI
2300 (__mmask8) -1);
2301}
2302
2303extern __inline __m512i
2304__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2305_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
2306{
2307 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
2308 (__v8di) __W,
2309 (__mmask8) __U);
2310}
2311
2312extern __inline __m512i
2313__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2314_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
2315{
2316 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
2317 (__v8di)
2318 _mm512_setzero_si512 (),
2319 (__mmask8) __U);
2320}
2321
2322extern __inline __m512i
2323__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2324_mm512_cvtepu32_epi64 (__m256i __X)
2325{
2326 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
2327 (__v8di)
4271e5cb 2328 _mm512_undefined_epi32 (),
756c5857
AI
2329 (__mmask8) -1);
2330}
2331
2332extern __inline __m512i
2333__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2334_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
2335{
2336 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
2337 (__v8di) __W,
2338 (__mmask8) __U);
2339}
2340
2341extern __inline __m512i
2342__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2343_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
2344{
2345 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
2346 (__v8di)
2347 _mm512_setzero_si512 (),
2348 (__mmask8) __U);
2349}
2350
2351#ifdef __OPTIMIZE__
2352extern __inline __m512d
2353__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2354_mm512_add_round_pd (__m512d __A, __m512d __B, const int __R)
2355{
2356 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2357 (__v8df) __B,
2358 (__v8df)
0b192937 2359 _mm512_undefined_pd (),
756c5857
AI
2360 (__mmask8) -1, __R);
2361}
2362
2363extern __inline __m512d
2364__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2365_mm512_mask_add_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2366 __m512d __B, const int __R)
2367{
2368 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2369 (__v8df) __B,
2370 (__v8df) __W,
2371 (__mmask8) __U, __R);
2372}
2373
2374extern __inline __m512d
2375__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2376_mm512_maskz_add_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2377 const int __R)
2378{
2379 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2380 (__v8df) __B,
2381 (__v8df)
2382 _mm512_setzero_pd (),
2383 (__mmask8) __U, __R);
2384}
2385
2386extern __inline __m512
2387__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2388_mm512_add_round_ps (__m512 __A, __m512 __B, const int __R)
2389{
2390 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2391 (__v16sf) __B,
2392 (__v16sf)
0b192937 2393 _mm512_undefined_ps (),
756c5857
AI
2394 (__mmask16) -1, __R);
2395}
2396
2397extern __inline __m512
2398__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2399_mm512_mask_add_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2400 __m512 __B, const int __R)
2401{
2402 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2403 (__v16sf) __B,
2404 (__v16sf) __W,
2405 (__mmask16) __U, __R);
2406}
2407
2408extern __inline __m512
2409__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2410_mm512_maskz_add_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2411{
2412 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2413 (__v16sf) __B,
2414 (__v16sf)
2415 _mm512_setzero_ps (),
2416 (__mmask16) __U, __R);
2417}
2418
2419extern __inline __m512d
2420__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2421_mm512_sub_round_pd (__m512d __A, __m512d __B, const int __R)
2422{
2423 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2424 (__v8df) __B,
2425 (__v8df)
0b192937 2426 _mm512_undefined_pd (),
756c5857
AI
2427 (__mmask8) -1, __R);
2428}
2429
2430extern __inline __m512d
2431__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2432_mm512_mask_sub_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2433 __m512d __B, const int __R)
2434{
2435 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2436 (__v8df) __B,
2437 (__v8df) __W,
2438 (__mmask8) __U, __R);
2439}
2440
2441extern __inline __m512d
2442__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2443_mm512_maskz_sub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2444 const int __R)
2445{
2446 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2447 (__v8df) __B,
2448 (__v8df)
2449 _mm512_setzero_pd (),
2450 (__mmask8) __U, __R);
2451}
2452
2453extern __inline __m512
2454__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2455_mm512_sub_round_ps (__m512 __A, __m512 __B, const int __R)
2456{
2457 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2458 (__v16sf) __B,
2459 (__v16sf)
0b192937 2460 _mm512_undefined_ps (),
756c5857
AI
2461 (__mmask16) -1, __R);
2462}
2463
2464extern __inline __m512
2465__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2466_mm512_mask_sub_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2467 __m512 __B, const int __R)
2468{
2469 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2470 (__v16sf) __B,
2471 (__v16sf) __W,
2472 (__mmask16) __U, __R);
2473}
2474
2475extern __inline __m512
2476__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2477_mm512_maskz_sub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2478{
2479 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2480 (__v16sf) __B,
2481 (__v16sf)
2482 _mm512_setzero_ps (),
2483 (__mmask16) __U, __R);
2484}
2485#else
2486#define _mm512_add_round_pd(A, B, C) \
0b192937 2487 (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
756c5857
AI
2488
2489#define _mm512_mask_add_round_pd(W, U, A, B, C) \
2490 (__m512d)__builtin_ia32_addpd512_mask(A, B, W, U, C)
2491
2492#define _mm512_maskz_add_round_pd(U, A, B, C) \
2493 (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2494
2495#define _mm512_add_round_ps(A, B, C) \
0b192937 2496 (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
756c5857
AI
2497
2498#define _mm512_mask_add_round_ps(W, U, A, B, C) \
2499 (__m512)__builtin_ia32_addps512_mask(A, B, W, U, C)
2500
2501#define _mm512_maskz_add_round_ps(U, A, B, C) \
2502 (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2503
2504#define _mm512_sub_round_pd(A, B, C) \
0b192937 2505 (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
756c5857
AI
2506
2507#define _mm512_mask_sub_round_pd(W, U, A, B, C) \
2508 (__m512d)__builtin_ia32_subpd512_mask(A, B, W, U, C)
2509
2510#define _mm512_maskz_sub_round_pd(U, A, B, C) \
2511 (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2512
2513#define _mm512_sub_round_ps(A, B, C) \
0b192937 2514 (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
756c5857
AI
2515
2516#define _mm512_mask_sub_round_ps(W, U, A, B, C) \
2517 (__m512)__builtin_ia32_subps512_mask(A, B, W, U, C)
2518
2519#define _mm512_maskz_sub_round_ps(U, A, B, C) \
2520 (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2521#endif
2522
2523#ifdef __OPTIMIZE__
2524extern __inline __m512d
2525__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2526_mm512_mul_round_pd (__m512d __A, __m512d __B, const int __R)
2527{
2528 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2529 (__v8df) __B,
2530 (__v8df)
0b192937 2531 _mm512_undefined_pd (),
756c5857
AI
2532 (__mmask8) -1, __R);
2533}
2534
2535extern __inline __m512d
2536__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2537_mm512_mask_mul_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2538 __m512d __B, const int __R)
2539{
2540 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2541 (__v8df) __B,
2542 (__v8df) __W,
2543 (__mmask8) __U, __R);
2544}
2545
2546extern __inline __m512d
2547__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2548_mm512_maskz_mul_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2549 const int __R)
2550{
2551 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2552 (__v8df) __B,
2553 (__v8df)
2554 _mm512_setzero_pd (),
2555 (__mmask8) __U, __R);
2556}
2557
2558extern __inline __m512
2559__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2560_mm512_mul_round_ps (__m512 __A, __m512 __B, const int __R)
2561{
2562 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2563 (__v16sf) __B,
2564 (__v16sf)
0b192937 2565 _mm512_undefined_ps (),
756c5857
AI
2566 (__mmask16) -1, __R);
2567}
2568
2569extern __inline __m512
2570__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2571_mm512_mask_mul_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2572 __m512 __B, const int __R)
2573{
2574 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2575 (__v16sf) __B,
2576 (__v16sf) __W,
2577 (__mmask16) __U, __R);
2578}
2579
2580extern __inline __m512
2581__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2582_mm512_maskz_mul_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2583{
2584 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2585 (__v16sf) __B,
2586 (__v16sf)
2587 _mm512_setzero_ps (),
2588 (__mmask16) __U, __R);
2589}
2590
2591extern __inline __m512d
2592__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2593_mm512_div_round_pd (__m512d __M, __m512d __V, const int __R)
2594{
2595 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
2596 (__v8df) __V,
2597 (__v8df)
0b192937 2598 _mm512_undefined_pd (),
756c5857
AI
2599 (__mmask8) -1, __R);
2600}
2601
2602extern __inline __m512d
2603__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2604_mm512_mask_div_round_pd (__m512d __W, __mmask8 __U, __m512d __M,
2605 __m512d __V, const int __R)
2606{
2607 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
2608 (__v8df) __V,
2609 (__v8df) __W,
2610 (__mmask8) __U, __R);
2611}
2612
2613extern __inline __m512d
2614__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2615_mm512_maskz_div_round_pd (__mmask8 __U, __m512d __M, __m512d __V,
2616 const int __R)
2617{
2618 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
2619 (__v8df) __V,
2620 (__v8df)
2621 _mm512_setzero_pd (),
2622 (__mmask8) __U, __R);
2623}
2624
2625extern __inline __m512
2626__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2627_mm512_div_round_ps (__m512 __A, __m512 __B, const int __R)
2628{
2629 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2630 (__v16sf) __B,
2631 (__v16sf)
0b192937 2632 _mm512_undefined_ps (),
756c5857
AI
2633 (__mmask16) -1, __R);
2634}
2635
2636extern __inline __m512
2637__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2638_mm512_mask_div_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2639 __m512 __B, const int __R)
2640{
2641 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2642 (__v16sf) __B,
2643 (__v16sf) __W,
2644 (__mmask16) __U, __R);
2645}
2646
2647extern __inline __m512
2648__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2649_mm512_maskz_div_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2650{
2651 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2652 (__v16sf) __B,
2653 (__v16sf)
2654 _mm512_setzero_ps (),
2655 (__mmask16) __U, __R);
2656}
2657
075691af
AI
2658extern __inline __m128d
2659__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2660_mm_mul_round_sd (__m128d __A, __m128d __B, const int __R)
2661{
2662 return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A,
2663 (__v2df) __B,
2664 __R);
2665}
2666
f4ee3a9e
UB
2667extern __inline __m128d
2668__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2669_mm_mask_mul_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
2670 __m128d __B, const int __R)
2671{
2672 return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
2673 (__v2df) __B,
2674 (__v2df) __W,
2675 (__mmask8) __U, __R);
2676}
2677
2678extern __inline __m128d
2679__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2680_mm_maskz_mul_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
2681 const int __R)
2682{
2683 return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
2684 (__v2df) __B,
2685 (__v2df)
2686 _mm_setzero_pd (),
2687 (__mmask8) __U, __R);
2688}
2689
075691af
AI
2690extern __inline __m128
2691__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2692_mm_mul_round_ss (__m128 __A, __m128 __B, const int __R)
2693{
2694 return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A,
2695 (__v4sf) __B,
2696 __R);
2697}
2698
f4ee3a9e
UB
2699extern __inline __m128
2700__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2701_mm_mask_mul_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
2702 __m128 __B, const int __R)
2703{
2704 return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
2705 (__v4sf) __B,
2706 (__v4sf) __W,
2707 (__mmask8) __U, __R);
2708}
2709
2710extern __inline __m128
2711__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2712_mm_maskz_mul_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
2713 const int __R)
2714{
2715 return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
2716 (__v4sf) __B,
2717 (__v4sf)
2718 _mm_setzero_ps (),
2719 (__mmask8) __U, __R);
2720}
2721
075691af
AI
2722extern __inline __m128d
2723__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2724_mm_div_round_sd (__m128d __A, __m128d __B, const int __R)
2725{
2726 return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A,
2727 (__v2df) __B,
2728 __R);
2729}
2730
f4ee3a9e
UB
2731extern __inline __m128d
2732__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2733_mm_mask_div_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
2734 __m128d __B, const int __R)
2735{
2736 return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
2737 (__v2df) __B,
2738 (__v2df) __W,
2739 (__mmask8) __U, __R);
2740}
2741
2742extern __inline __m128d
2743__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2744_mm_maskz_div_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
2745 const int __R)
2746{
2747 return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
2748 (__v2df) __B,
2749 (__v2df)
2750 _mm_setzero_pd (),
2751 (__mmask8) __U, __R);
2752}
2753
075691af
AI
2754extern __inline __m128
2755__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2756_mm_div_round_ss (__m128 __A, __m128 __B, const int __R)
2757{
2758 return (__m128) __builtin_ia32_divss_round ((__v4sf) __A,
2759 (__v4sf) __B,
2760 __R);
2761}
2762
f4ee3a9e
UB
2763extern __inline __m128
2764__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2765_mm_mask_div_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
2766 __m128 __B, const int __R)
2767{
2768 return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
2769 (__v4sf) __B,
2770 (__v4sf) __W,
2771 (__mmask8) __U, __R);
2772}
2773
2774extern __inline __m128
2775__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2776_mm_maskz_div_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
2777 const int __R)
2778{
2779 return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
2780 (__v4sf) __B,
2781 (__v4sf)
2782 _mm_setzero_ps (),
2783 (__mmask8) __U, __R);
2784}
2785
756c5857
AI
2786#else
2787#define _mm512_mul_round_pd(A, B, C) \
0b192937 2788 (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
756c5857
AI
2789
2790#define _mm512_mask_mul_round_pd(W, U, A, B, C) \
2791 (__m512d)__builtin_ia32_mulpd512_mask(A, B, W, U, C)
2792
2793#define _mm512_maskz_mul_round_pd(U, A, B, C) \
2794 (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2795
2796#define _mm512_mul_round_ps(A, B, C) \
0b192937 2797 (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
756c5857
AI
2798
2799#define _mm512_mask_mul_round_ps(W, U, A, B, C) \
2800 (__m512)__builtin_ia32_mulps512_mask(A, B, W, U, C)
2801
2802#define _mm512_maskz_mul_round_ps(U, A, B, C) \
2803 (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
2804
2805#define _mm512_div_round_pd(A, B, C) \
0b192937 2806 (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
756c5857
AI
2807
2808#define _mm512_mask_div_round_pd(W, U, A, B, C) \
2809 (__m512d)__builtin_ia32_divpd512_mask(A, B, W, U, C)
2810
2811#define _mm512_maskz_div_round_pd(U, A, B, C) \
2812 (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
2813
2814#define _mm512_div_round_ps(A, B, C) \
0b192937 2815 (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
756c5857
AI
2816
2817#define _mm512_mask_div_round_ps(W, U, A, B, C) \
2818 (__m512)__builtin_ia32_divps512_mask(A, B, W, U, C)
2819
2820#define _mm512_maskz_div_round_ps(U, A, B, C) \
2821 (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
075691af
AI
2822
2823#define _mm_mul_round_sd(A, B, C) \
2824 (__m128d)__builtin_ia32_mulsd_round(A, B, C)
2825
f4ee3a9e
UB
2826#define _mm_mask_mul_round_sd(W, U, A, B, C) \
2827 (__m128d)__builtin_ia32_mulsd_mask_round(A, B, W, U, C)
2828
2829#define _mm_maskz_mul_round_sd(U, A, B, C) \
2830 (__m128d)__builtin_ia32_mulsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
2831
075691af
AI
2832#define _mm_mul_round_ss(A, B, C) \
2833 (__m128)__builtin_ia32_mulss_round(A, B, C)
2834
f4ee3a9e
UB
2835#define _mm_mask_mul_round_ss(W, U, A, B, C) \
2836 (__m128)__builtin_ia32_mulss_mask_round(A, B, W, U, C)
2837
2838#define _mm_maskz_mul_round_ss(U, A, B, C) \
2839 (__m128)__builtin_ia32_mulss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
2840
075691af
AI
2841#define _mm_div_round_sd(A, B, C) \
2842 (__m128d)__builtin_ia32_divsd_round(A, B, C)
2843
f4ee3a9e
UB
2844#define _mm_mask_div_round_sd(W, U, A, B, C) \
2845 (__m128d)__builtin_ia32_divsd_mask_round(A, B, W, U, C)
2846
2847#define _mm_maskz_div_round_sd(U, A, B, C) \
2848 (__m128d)__builtin_ia32_divsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
2849
075691af
AI
2850#define _mm_div_round_ss(A, B, C) \
2851 (__m128)__builtin_ia32_divss_round(A, B, C)
f4ee3a9e
UB
2852
2853#define _mm_mask_div_round_ss(W, U, A, B, C) \
2854 (__m128)__builtin_ia32_divss_mask_round(A, B, W, U, C)
2855
2856#define _mm_maskz_div_round_ss(U, A, B, C) \
2857 (__m128)__builtin_ia32_divss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
2858
756c5857
AI
2859#endif
2860
2861#ifdef __OPTIMIZE__
2862extern __inline __m512d
2863__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2864_mm512_max_round_pd (__m512d __A, __m512d __B, const int __R)
2865{
2866 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
2867 (__v8df) __B,
2868 (__v8df)
0b192937 2869 _mm512_undefined_pd (),
756c5857
AI
2870 (__mmask8) -1, __R);
2871}
2872
2873extern __inline __m512d
2874__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2875_mm512_mask_max_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2876 __m512d __B, const int __R)
2877{
2878 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
2879 (__v8df) __B,
2880 (__v8df) __W,
2881 (__mmask8) __U, __R);
2882}
2883
2884extern __inline __m512d
2885__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2886_mm512_maskz_max_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2887 const int __R)
2888{
2889 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
2890 (__v8df) __B,
2891 (__v8df)
2892 _mm512_setzero_pd (),
2893 (__mmask8) __U, __R);
2894}
2895
2896extern __inline __m512
2897__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2898_mm512_max_round_ps (__m512 __A, __m512 __B, const int __R)
2899{
2900 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
2901 (__v16sf) __B,
2902 (__v16sf)
0b192937 2903 _mm512_undefined_ps (),
756c5857
AI
2904 (__mmask16) -1, __R);
2905}
2906
2907extern __inline __m512
2908__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2909_mm512_mask_max_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2910 __m512 __B, const int __R)
2911{
2912 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
2913 (__v16sf) __B,
2914 (__v16sf) __W,
2915 (__mmask16) __U, __R);
2916}
2917
2918extern __inline __m512
2919__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2920_mm512_maskz_max_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2921{
2922 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
2923 (__v16sf) __B,
2924 (__v16sf)
2925 _mm512_setzero_ps (),
2926 (__mmask16) __U, __R);
2927}
2928
2929extern __inline __m512d
2930__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2931_mm512_min_round_pd (__m512d __A, __m512d __B, const int __R)
2932{
2933 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
2934 (__v8df) __B,
2935 (__v8df)
0b192937 2936 _mm512_undefined_pd (),
756c5857
AI
2937 (__mmask8) -1, __R);
2938}
2939
2940extern __inline __m512d
2941__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2942_mm512_mask_min_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2943 __m512d __B, const int __R)
2944{
2945 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
2946 (__v8df) __B,
2947 (__v8df) __W,
2948 (__mmask8) __U, __R);
2949}
2950
2951extern __inline __m512d
2952__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2953_mm512_maskz_min_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2954 const int __R)
2955{
2956 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
2957 (__v8df) __B,
2958 (__v8df)
2959 _mm512_setzero_pd (),
2960 (__mmask8) __U, __R);
2961}
2962
2963extern __inline __m512
2964__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2965_mm512_min_round_ps (__m512 __A, __m512 __B, const int __R)
2966{
2967 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
2968 (__v16sf) __B,
2969 (__v16sf)
0b192937 2970 _mm512_undefined_ps (),
756c5857
AI
2971 (__mmask16) -1, __R);
2972}
2973
2974extern __inline __m512
2975__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2976_mm512_mask_min_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
2977 __m512 __B, const int __R)
2978{
2979 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
2980 (__v16sf) __B,
2981 (__v16sf) __W,
2982 (__mmask16) __U, __R);
2983}
2984
2985extern __inline __m512
2986__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2987_mm512_maskz_min_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R)
2988{
2989 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
2990 (__v16sf) __B,
2991 (__v16sf)
2992 _mm512_setzero_ps (),
2993 (__mmask16) __U, __R);
2994}
2995#else
2996#define _mm512_max_round_pd(A, B, R) \
0b192937 2997 (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R)
756c5857
AI
2998
2999#define _mm512_mask_max_round_pd(W, U, A, B, R) \
3000 (__m512d)__builtin_ia32_maxpd512_mask(A, B, W, U, R)
3001
3002#define _mm512_maskz_max_round_pd(U, A, B, R) \
3003 (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R)
3004
3005#define _mm512_max_round_ps(A, B, R) \
0b192937 3006 (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_undefined_pd(), -1, R)
756c5857
AI
3007
3008#define _mm512_mask_max_round_ps(W, U, A, B, R) \
3009 (__m512)__builtin_ia32_maxps512_mask(A, B, W, U, R)
3010
3011#define _mm512_maskz_max_round_ps(U, A, B, R) \
3012 (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R)
3013
3014#define _mm512_min_round_pd(A, B, R) \
0b192937 3015 (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R)
756c5857
AI
3016
3017#define _mm512_mask_min_round_pd(W, U, A, B, R) \
3018 (__m512d)__builtin_ia32_minpd512_mask(A, B, W, U, R)
3019
3020#define _mm512_maskz_min_round_pd(U, A, B, R) \
3021 (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R)
3022
3023#define _mm512_min_round_ps(A, B, R) \
0b192937 3024 (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, R)
756c5857
AI
3025
3026#define _mm512_mask_min_round_ps(W, U, A, B, R) \
3027 (__m512)__builtin_ia32_minps512_mask(A, B, W, U, R)
3028
3029#define _mm512_maskz_min_round_ps(U, A, B, R) \
3030 (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R)
3031#endif
3032
3033#ifdef __OPTIMIZE__
3034extern __inline __m512d
3035__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3036_mm512_scalef_round_pd (__m512d __A, __m512d __B, const int __R)
3037{
3038 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
3039 (__v8df) __B,
3040 (__v8df)
0b192937 3041 _mm512_undefined_pd (),
756c5857
AI
3042 (__mmask8) -1, __R);
3043}
3044
3045extern __inline __m512d
3046__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3047_mm512_mask_scalef_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
3048 __m512d __B, const int __R)
3049{
3050 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
3051 (__v8df) __B,
3052 (__v8df) __W,
3053 (__mmask8) __U, __R);
3054}
3055
3056extern __inline __m512d
3057__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3058_mm512_maskz_scalef_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3059 const int __R)
3060{
3061 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
3062 (__v8df) __B,
3063 (__v8df)
3064 _mm512_setzero_pd (),
3065 (__mmask8) __U, __R);
3066}
3067
3068extern __inline __m512
3069__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3070_mm512_scalef_round_ps (__m512 __A, __m512 __B, const int __R)
3071{
3072 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
3073 (__v16sf) __B,
3074 (__v16sf)
0b192937 3075 _mm512_undefined_ps (),
756c5857
AI
3076 (__mmask16) -1, __R);
3077}
3078
3079extern __inline __m512
3080__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3081_mm512_mask_scalef_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
3082 __m512 __B, const int __R)
3083{
3084 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
3085 (__v16sf) __B,
3086 (__v16sf) __W,
3087 (__mmask16) __U, __R);
3088}
3089
3090extern __inline __m512
3091__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3092_mm512_maskz_scalef_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3093 const int __R)
3094{
3095 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
3096 (__v16sf) __B,
3097 (__v16sf)
3098 _mm512_setzero_ps (),
3099 (__mmask16) __U, __R);
3100}
3101
075691af
AI
3102extern __inline __m128d
3103__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3104_mm_scalef_round_sd (__m128d __A, __m128d __B, const int __R)
3105{
3106 return (__m128d) __builtin_ia32_scalefsd_round ((__v2df) __A,
3107 (__v2df) __B,
3108 __R);
3109}
3110
3111extern __inline __m128
3112__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3113_mm_scalef_round_ss (__m128 __A, __m128 __B, const int __R)
3114{
3115 return (__m128) __builtin_ia32_scalefss_round ((__v4sf) __A,
3116 (__v4sf) __B,
3117 __R);
3118}
756c5857
AI
3119#else
3120#define _mm512_scalef_round_pd(A, B, C) \
0b192937 3121 (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
756c5857
AI
3122
3123#define _mm512_mask_scalef_round_pd(W, U, A, B, C) \
3124 (__m512d)__builtin_ia32_scalefpd512_mask(A, B, W, U, C)
3125
3126#define _mm512_maskz_scalef_round_pd(U, A, B, C) \
3127 (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
3128
3129#define _mm512_scalef_round_ps(A, B, C) \
0b192937 3130 (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
756c5857
AI
3131
3132#define _mm512_mask_scalef_round_ps(W, U, A, B, C) \
3133 (__m512)__builtin_ia32_scalefps512_mask(A, B, W, U, C)
3134
3135#define _mm512_maskz_scalef_round_ps(U, A, B, C) \
3136 (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
075691af
AI
3137
3138#define _mm_scalef_round_sd(A, B, C) \
3139 (__m128d)__builtin_ia32_scalefsd_round(A, B, C)
3140
3141#define _mm_scalef_round_ss(A, B, C) \
3142 (__m128)__builtin_ia32_scalefss_round(A, B, C)
756c5857
AI
3143#endif
3144
3145#ifdef __OPTIMIZE__
3146extern __inline __m512d
3147__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3148_mm512_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3149{
3150 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3151 (__v8df) __B,
3152 (__v8df) __C,
3153 (__mmask8) -1, __R);
3154}
3155
3156extern __inline __m512d
3157__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3158_mm512_mask_fmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3159 __m512d __C, const int __R)
3160{
3161 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3162 (__v8df) __B,
3163 (__v8df) __C,
3164 (__mmask8) __U, __R);
3165}
3166
3167extern __inline __m512d
3168__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3169_mm512_mask3_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
3170 __mmask8 __U, const int __R)
3171{
3172 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
3173 (__v8df) __B,
3174 (__v8df) __C,
3175 (__mmask8) __U, __R);
3176}
3177
3178extern __inline __m512d
3179__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3180_mm512_maskz_fmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3181 __m512d __C, const int __R)
3182{
3183 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
3184 (__v8df) __B,
3185 (__v8df) __C,
3186 (__mmask8) __U, __R);
3187}
3188
3189extern __inline __m512
3190__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3191_mm512_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3192{
3193 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3194 (__v16sf) __B,
3195 (__v16sf) __C,
3196 (__mmask16) -1, __R);
3197}
3198
3199extern __inline __m512
3200__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3201_mm512_mask_fmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3202 __m512 __C, const int __R)
3203{
3204 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3205 (__v16sf) __B,
3206 (__v16sf) __C,
3207 (__mmask16) __U, __R);
3208}
3209
3210extern __inline __m512
3211__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3212_mm512_mask3_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
3213 __mmask16 __U, const int __R)
3214{
3215 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
3216 (__v16sf) __B,
3217 (__v16sf) __C,
3218 (__mmask16) __U, __R);
3219}
3220
3221extern __inline __m512
3222__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3223_mm512_maskz_fmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3224 __m512 __C, const int __R)
3225{
3226 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
3227 (__v16sf) __B,
3228 (__v16sf) __C,
3229 (__mmask16) __U, __R);
3230}
3231
3232extern __inline __m512d
3233__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3234_mm512_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3235{
3236 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3237 (__v8df) __B,
3238 -(__v8df) __C,
3239 (__mmask8) -1, __R);
3240}
3241
3242extern __inline __m512d
3243__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3244_mm512_mask_fmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3245 __m512d __C, const int __R)
3246{
3247 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
3248 (__v8df) __B,
3249 -(__v8df) __C,
3250 (__mmask8) __U, __R);
3251}
3252
3253extern __inline __m512d
3254__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3255_mm512_mask3_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
3256 __mmask8 __U, const int __R)
3257{
3258 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3259 (__v8df) __B,
3260 (__v8df) __C,
3261 (__mmask8) __U, __R);
3262}
3263
3264extern __inline __m512d
3265__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3266_mm512_maskz_fmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3267 __m512d __C, const int __R)
3268{
3269 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
3270 (__v8df) __B,
3271 -(__v8df) __C,
3272 (__mmask8) __U, __R);
3273}
3274
3275extern __inline __m512
3276__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3277_mm512_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3278{
3279 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3280 (__v16sf) __B,
3281 -(__v16sf) __C,
3282 (__mmask16) -1, __R);
3283}
3284
3285extern __inline __m512
3286__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3287_mm512_mask_fmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3288 __m512 __C, const int __R)
3289{
3290 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
3291 (__v16sf) __B,
3292 -(__v16sf) __C,
3293 (__mmask16) __U, __R);
3294}
3295
3296extern __inline __m512
3297__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3298_mm512_mask3_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
3299 __mmask16 __U, const int __R)
3300{
3301 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3302 (__v16sf) __B,
3303 (__v16sf) __C,
3304 (__mmask16) __U, __R);
3305}
3306
3307extern __inline __m512
3308__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3309_mm512_maskz_fmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3310 __m512 __C, const int __R)
3311{
3312 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
3313 (__v16sf) __B,
3314 -(__v16sf) __C,
3315 (__mmask16) __U, __R);
3316}
3317
3318extern __inline __m512d
3319__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3320_mm512_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3321{
3322 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3323 (__v8df) __B,
3324 (__v8df) __C,
3325 (__mmask8) -1, __R);
3326}
3327
3328extern __inline __m512d
3329__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3330_mm512_mask_fmaddsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3331 __m512d __C, const int __R)
3332{
3333 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3334 (__v8df) __B,
3335 (__v8df) __C,
3336 (__mmask8) __U, __R);
3337}
3338
3339extern __inline __m512d
3340__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3341_mm512_mask3_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
3342 __mmask8 __U, const int __R)
3343{
3344 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
3345 (__v8df) __B,
3346 (__v8df) __C,
3347 (__mmask8) __U, __R);
3348}
3349
3350extern __inline __m512d
3351__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3352_mm512_maskz_fmaddsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3353 __m512d __C, const int __R)
3354{
3355 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3356 (__v8df) __B,
3357 (__v8df) __C,
3358 (__mmask8) __U, __R);
3359}
3360
3361extern __inline __m512
3362__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3363_mm512_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3364{
3365 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3366 (__v16sf) __B,
3367 (__v16sf) __C,
3368 (__mmask16) -1, __R);
3369}
3370
3371extern __inline __m512
3372__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3373_mm512_mask_fmaddsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3374 __m512 __C, const int __R)
3375{
3376 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3377 (__v16sf) __B,
3378 (__v16sf) __C,
3379 (__mmask16) __U, __R);
3380}
3381
3382extern __inline __m512
3383__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3384_mm512_mask3_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
3385 __mmask16 __U, const int __R)
3386{
3387 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3388 (__v16sf) __B,
3389 (__v16sf) __C,
3390 (__mmask16) __U, __R);
3391}
3392
3393extern __inline __m512
3394__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3395_mm512_maskz_fmaddsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3396 __m512 __C, const int __R)
3397{
3398 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3399 (__v16sf) __B,
3400 (__v16sf) __C,
3401 (__mmask16) __U, __R);
3402}
3403
3404extern __inline __m512d
3405__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3406_mm512_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3407{
3408 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3409 (__v8df) __B,
3410 -(__v8df) __C,
3411 (__mmask8) -1, __R);
3412}
3413
3414extern __inline __m512d
3415__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3416_mm512_mask_fmsubadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3417 __m512d __C, const int __R)
3418{
3419 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3420 (__v8df) __B,
3421 -(__v8df) __C,
3422 (__mmask8) __U, __R);
3423}
3424
3425extern __inline __m512d
3426__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3427_mm512_mask3_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
3428 __mmask8 __U, const int __R)
3429{
3430 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3431 (__v8df) __B,
3432 (__v8df) __C,
3433 (__mmask8) __U, __R);
3434}
3435
3436extern __inline __m512d
3437__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3438_mm512_maskz_fmsubadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3439 __m512d __C, const int __R)
3440{
3441 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3442 (__v8df) __B,
3443 -(__v8df) __C,
3444 (__mmask8) __U, __R);
3445}
3446
3447extern __inline __m512
3448__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3449_mm512_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3450{
3451 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3452 (__v16sf) __B,
3453 -(__v16sf) __C,
3454 (__mmask16) -1, __R);
3455}
3456
3457extern __inline __m512
3458__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3459_mm512_mask_fmsubadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3460 __m512 __C, const int __R)
3461{
3462 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3463 (__v16sf) __B,
3464 -(__v16sf) __C,
3465 (__mmask16) __U, __R);
3466}
3467
3468extern __inline __m512
3469__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3470_mm512_mask3_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
3471 __mmask16 __U, const int __R)
3472{
3473 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3474 (__v16sf) __B,
3475 (__v16sf) __C,
3476 (__mmask16) __U, __R);
3477}
3478
3479extern __inline __m512
3480__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3481_mm512_maskz_fmsubadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3482 __m512 __C, const int __R)
3483{
3484 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3485 (__v16sf) __B,
3486 -(__v16sf) __C,
3487 (__mmask16) __U, __R);
3488}
3489
3490extern __inline __m512d
3491__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3492_mm512_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3493{
3494 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
3495 (__v8df) __B,
3496 (__v8df) __C,
3497 (__mmask8) -1, __R);
3498}
3499
3500extern __inline __m512d
3501__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3502_mm512_mask_fnmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3503 __m512d __C, const int __R)
3504{
3505 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3506 (__v8df) __B,
3507 (__v8df) __C,
3508 (__mmask8) __U, __R);
3509}
3510
3511extern __inline __m512d
3512__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3513_mm512_mask3_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C,
3514 __mmask8 __U, const int __R)
3515{
3516 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
3517 (__v8df) __B,
3518 (__v8df) __C,
3519 (__mmask8) __U, __R);
3520}
3521
3522extern __inline __m512d
3523__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3524_mm512_maskz_fnmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3525 __m512d __C, const int __R)
3526{
3527 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
3528 (__v8df) __B,
3529 (__v8df) __C,
3530 (__mmask8) __U, __R);
3531}
3532
3533extern __inline __m512
3534__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3535_mm512_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3536{
3537 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
3538 (__v16sf) __B,
3539 (__v16sf) __C,
3540 (__mmask16) -1, __R);
3541}
3542
3543extern __inline __m512
3544__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3545_mm512_mask_fnmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3546 __m512 __C, const int __R)
3547{
3548 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3549 (__v16sf) __B,
3550 (__v16sf) __C,
3551 (__mmask16) __U, __R);
3552}
3553
3554extern __inline __m512
3555__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3556_mm512_mask3_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C,
3557 __mmask16 __U, const int __R)
3558{
3559 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
3560 (__v16sf) __B,
3561 (__v16sf) __C,
3562 (__mmask16) __U, __R);
3563}
3564
3565extern __inline __m512
3566__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3567_mm512_maskz_fnmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3568 __m512 __C, const int __R)
3569{
3570 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
3571 (__v16sf) __B,
3572 (__v16sf) __C,
3573 (__mmask16) __U, __R);
3574}
3575
3576extern __inline __m512d
3577__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3578_mm512_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R)
3579{
3580 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
3581 (__v8df) __B,
3582 -(__v8df) __C,
3583 (__mmask8) -1, __R);
3584}
3585
3586extern __inline __m512d
3587__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3588_mm512_mask_fnmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
3589 __m512d __C, const int __R)
3590{
3591 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3592 (__v8df) __B,
3593 (__v8df) __C,
3594 (__mmask8) __U, __R);
3595}
3596
3597extern __inline __m512d
3598__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3599_mm512_mask3_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C,
3600 __mmask8 __U, const int __R)
3601{
3602 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3603 (__v8df) __B,
3604 (__v8df) __C,
3605 (__mmask8) __U, __R);
3606}
3607
3608extern __inline __m512d
3609__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3610_mm512_maskz_fnmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
3611 __m512d __C, const int __R)
3612{
3613 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
3614 (__v8df) __B,
3615 -(__v8df) __C,
3616 (__mmask8) __U, __R);
3617}
3618
3619extern __inline __m512
3620__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3621_mm512_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R)
3622{
3623 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
3624 (__v16sf) __B,
3625 -(__v16sf) __C,
3626 (__mmask16) -1, __R);
3627}
3628
3629extern __inline __m512
3630__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3631_mm512_mask_fnmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
3632 __m512 __C, const int __R)
3633{
3634 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3635 (__v16sf) __B,
3636 (__v16sf) __C,
3637 (__mmask16) __U, __R);
3638}
3639
3640extern __inline __m512
3641__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3642_mm512_mask3_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C,
3643 __mmask16 __U, const int __R)
3644{
3645 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3646 (__v16sf) __B,
3647 (__v16sf) __C,
3648 (__mmask16) __U, __R);
3649}
3650
3651extern __inline __m512
3652__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3653_mm512_maskz_fnmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
3654 __m512 __C, const int __R)
3655{
3656 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
3657 (__v16sf) __B,
3658 -(__v16sf) __C,
3659 (__mmask16) __U, __R);
3660}
3661#else
3662#define _mm512_fmadd_round_pd(A, B, C, R) \
3663 (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, -1, R)
3664
3665#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) \
3666 (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R)
3667
3668#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) \
3669 (__m512d)__builtin_ia32_vfmaddpd512_mask3(A, B, C, U, R)
3670
3671#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) \
3672 (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, C, U, R)
3673
3674#define _mm512_fmadd_round_ps(A, B, C, R) \
3675 (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, -1, R)
3676
3677#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) \
3678 (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, U, R)
3679
3680#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) \
3681 (__m512)__builtin_ia32_vfmaddps512_mask3(A, B, C, U, R)
3682
3683#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) \
3684 (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, C, U, R)
3685
3686#define _mm512_fmsub_round_pd(A, B, C, R) \
3687 (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, -(C), -1, R)
3688
3689#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) \
3690 (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, -(C), U, R)
3691
3692#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) \
3693 (__m512d)__builtin_ia32_vfmsubpd512_mask3(A, B, C, U, R)
3694
3695#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) \
3696 (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, -(C), U, R)
3697
3698#define _mm512_fmsub_round_ps(A, B, C, R) \
3699 (__m512)__builtin_ia32_vfmaddps512_mask(A, B, -(C), -1, R)
3700
3701#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) \
3702 (__m512)__builtin_ia32_vfmaddps512_mask(A, B, -(C), U, R)
3703
3704#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) \
3705 (__m512)__builtin_ia32_vfmsubps512_mask3(A, B, C, U, R)
3706
3707#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) \
3708 (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, -(C), U, R)
3709
3710#define _mm512_fmaddsub_round_pd(A, B, C, R) \
3711 (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R)
3712
3713#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) \
3714 (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R)
3715
3716#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) \
3717 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R)
3718
3719#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) \
3720 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, C, U, R)
3721
3722#define _mm512_fmaddsub_round_ps(A, B, C, R) \
3723 (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, -1, R)
3724
3725#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) \
3726 (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, U, R)
3727
3728#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) \
3729 (__m512)__builtin_ia32_vfmaddsubps512_mask3(A, B, C, U, R)
3730
3731#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) \
3732 (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, C, U, R)
3733
3734#define _mm512_fmsubadd_round_pd(A, B, C, R) \
3735 (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), -1, R)
3736
3737#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) \
3738 (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), U, R)
3739
3740#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) \
3741 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3(A, B, C, U, R)
3742
3743#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) \
3744 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, -(C), U, R)
3745
3746#define _mm512_fmsubadd_round_ps(A, B, C, R) \
3747 (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), -1, R)
3748
3749#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) \
3750 (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), U, R)
3751
3752#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) \
3753 (__m512)__builtin_ia32_vfmsubaddps512_mask3(A, B, C, U, R)
3754
3755#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) \
3756 (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, -(C), U, R)
3757
3758#define _mm512_fnmadd_round_pd(A, B, C, R) \
3759 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(A), B, C, -1, R)
3760
3761#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) \
3762 (__m512d)__builtin_ia32_vfnmaddpd512_mask(-(A), B, C, U, R)
3763
3764#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) \
3765 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(A), B, C, U, R)
3766
3767#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) \
3768 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(A), B, C, U, R)
3769
3770#define _mm512_fnmadd_round_ps(A, B, C, R) \
3771 (__m512)__builtin_ia32_vfmaddps512_mask(-(A), B, C, -1, R)
3772
3773#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) \
3774 (__m512)__builtin_ia32_vfnmaddps512_mask(-(A), B, C, U, R)
3775
3776#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) \
3777 (__m512)__builtin_ia32_vfmaddps512_mask3(-(A), B, C, U, R)
3778
3779#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) \
3780 (__m512)__builtin_ia32_vfmaddps512_maskz(-(A), B, C, U, R)
3781
3782#define _mm512_fnmsub_round_pd(A, B, C, R) \
3783 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(A), B, -(C), -1, R)
3784
3785#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) \
3786 (__m512d)__builtin_ia32_vfnmsubpd512_mask(A, B, C, U, R)
3787
3788#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) \
3789 (__m512d)__builtin_ia32_vfnmsubpd512_mask3(A, B, C, U, R)
3790
3791#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) \
3792 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(A), B, -(C), U, R)
3793
3794#define _mm512_fnmsub_round_ps(A, B, C, R) \
3795 (__m512)__builtin_ia32_vfmaddps512_mask(-(A), B, -(C), -1, R)
3796
3797#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) \
3798 (__m512)__builtin_ia32_vfnmsubps512_mask(A, B, C, U, R)
3799
3800#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) \
3801 (__m512)__builtin_ia32_vfnmsubps512_mask3(A, B, C, U, R)
3802
3803#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) \
3804 (__m512)__builtin_ia32_vfmaddps512_maskz(-(A), B, -(C), U, R)
3805#endif
3806
3807extern __inline __m512i
3808__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3809_mm512_abs_epi64 (__m512i __A)
3810{
3811 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
3812 (__v8di)
4271e5cb 3813 _mm512_undefined_epi32 (),
756c5857
AI
3814 (__mmask8) -1);
3815}
3816
3817extern __inline __m512i
3818__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3819_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
3820{
3821 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
3822 (__v8di) __W,
3823 (__mmask8) __U);
3824}
3825
3826extern __inline __m512i
3827__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3828_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
3829{
3830 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
3831 (__v8di)
3832 _mm512_setzero_si512 (),
3833 (__mmask8) __U);
3834}
3835
3836extern __inline __m512i
3837__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3838_mm512_abs_epi32 (__m512i __A)
3839{
3840 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
3841 (__v16si)
4271e5cb 3842 _mm512_undefined_epi32 (),
756c5857
AI
3843 (__mmask16) -1);
3844}
3845
3846extern __inline __m512i
3847__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3848_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
3849{
3850 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
3851 (__v16si) __W,
3852 (__mmask16) __U);
3853}
3854
3855extern __inline __m512i
3856__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3857_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
3858{
3859 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
3860 (__v16si)
3861 _mm512_setzero_si512 (),
3862 (__mmask16) __U);
3863}
3864
3865extern __inline __m512
3866__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3867_mm512_broadcastss_ps (__m128 __A)
3868{
0b192937
UD
3869 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
3870 (__v16sf)
3871 _mm512_undefined_ps (),
756c5857
AI
3872 (__mmask16) -1);
3873}
3874
3875extern __inline __m512
3876__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3877_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
3878{
3879 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
3880 (__v16sf) __O, __M);
3881}
3882
3883extern __inline __m512
3884__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3885_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
3886{
3887 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
3888 (__v16sf)
3889 _mm512_setzero_ps (),
3890 __M);
3891}
3892
3893extern __inline __m512d
3894__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3895_mm512_broadcastsd_pd (__m128d __A)
3896{
0b192937
UD
3897 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
3898 (__v8df)
3899 _mm512_undefined_pd (),
756c5857
AI
3900 (__mmask8) -1);
3901}
3902
3903extern __inline __m512d
3904__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3905_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
3906{
3907 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
3908 (__v8df) __O, __M);
3909}
3910
3911extern __inline __m512d
3912__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3913_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
3914{
3915 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
3916 (__v8df)
3917 _mm512_setzero_pd (),
3918 __M);
3919}
3920
3921extern __inline __m512i
3922__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3923_mm512_broadcastd_epi32 (__m128i __A)
3924{
0b192937
UD
3925 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
3926 (__v16si)
4271e5cb 3927 _mm512_undefined_epi32 (),
756c5857
AI
3928 (__mmask16) -1);
3929}
3930
3931extern __inline __m512i
3932__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3933_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
3934{
3935 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
3936 (__v16si) __O, __M);
3937}
3938
3939extern __inline __m512i
3940__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3941_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
3942{
3943 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
3944 (__v16si)
3945 _mm512_setzero_si512 (),
3946 __M);
3947}
3948
3949extern __inline __m512i
3950__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3951_mm512_set1_epi32 (int __A)
3952{
0b192937
UD
3953 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
3954 (__v16si)
4271e5cb 3955 _mm512_undefined_epi32 (),
756c5857
AI
3956 (__mmask16)(-1));
3957}
3958
3959extern __inline __m512i
3960__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3961_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
3962{
3963 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
3964 __M);
3965}
3966
3967extern __inline __m512i
3968__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3969_mm512_maskz_set1_epi32 (__mmask16 __M, int __A)
3970{
3971 return (__m512i)
3972 __builtin_ia32_pbroadcastd512_gpr_mask (__A,
3973 (__v16si) _mm512_setzero_si512 (),
3974 __M);
3975}
3976
3977extern __inline __m512i
3978__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3979_mm512_broadcastq_epi64 (__m128i __A)
3980{
0b192937
UD
3981 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
3982 (__v8di)
4271e5cb 3983 _mm512_undefined_epi32 (),
756c5857
AI
3984 (__mmask8) -1);
3985}
3986
3987extern __inline __m512i
3988__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3989_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
3990{
3991 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
3992 (__v8di) __O, __M);
3993}
3994
3995extern __inline __m512i
3996__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3997_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
3998{
3999 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
4000 (__v8di)
4001 _mm512_setzero_si512 (),
4002 __M);
4003}
4004
4005extern __inline __m512i
4006__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4007_mm512_set1_epi64 (long long __A)
4008{
0b192937
UD
4009 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
4010 (__v8di)
4271e5cb 4011 _mm512_undefined_epi32 (),
756c5857 4012 (__mmask8)(-1));
756c5857
AI
4013}
4014
4015extern __inline __m512i
4016__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4017_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
4018{
756c5857
AI
4019 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
4020 __M);
756c5857
AI
4021}
4022
4023extern __inline __m512i
4024__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4025_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
4026{
756c5857
AI
4027 return (__m512i)
4028 __builtin_ia32_pbroadcastq512_gpr_mask (__A,
4029 (__v8di) _mm512_setzero_si512 (),
4030 __M);
756c5857
AI
4031}
4032
4033extern __inline __m512
4034__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4035_mm512_broadcast_f32x4 (__m128 __A)
4036{
0b192937
UD
4037 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
4038 (__v16sf)
4039 _mm512_undefined_ps (),
756c5857
AI
4040 (__mmask16) -1);
4041}
4042
4043extern __inline __m512
4044__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4045_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
4046{
4047 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
4048 (__v16sf) __O,
4049 __M);
4050}
4051
4052extern __inline __m512
4053__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4054_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
4055{
4056 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
4057 (__v16sf)
4058 _mm512_setzero_ps (),
4059 __M);
4060}
4061
4062extern __inline __m512i
4063__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4064_mm512_broadcast_i32x4 (__m128i __A)
4065{
756c5857 4066 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
0b192937 4067 (__v16si)
4271e5cb 4068 _mm512_undefined_epi32 (),
756c5857
AI
4069 (__mmask16) -1);
4070}
4071
4072extern __inline __m512i
4073__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4074_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
4075{
4076 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
4077 (__v16si) __O,
4078 __M);
4079}
4080
4081extern __inline __m512i
4082__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4083_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
4084{
4085 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
4086 (__v16si)
4087 _mm512_setzero_si512 (),
4088 __M);
4089}
4090
4091extern __inline __m512d
4092__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4093_mm512_broadcast_f64x4 (__m256d __A)
4094{
756c5857 4095 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
0b192937
UD
4096 (__v8df)
4097 _mm512_undefined_pd (),
756c5857
AI
4098 (__mmask8) -1);
4099}
4100
4101extern __inline __m512d
4102__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4103_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
4104{
4105 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
4106 (__v8df) __O,
4107 __M);
4108}
4109
4110extern __inline __m512d
4111__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4112_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
4113{
4114 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
4115 (__v8df)
4116 _mm512_setzero_pd (),
4117 __M);
4118}
4119
4120extern __inline __m512i
4121__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4122_mm512_broadcast_i64x4 (__m256i __A)
4123{
756c5857 4124 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
0b192937 4125 (__v8di)
4271e5cb 4126 _mm512_undefined_epi32 (),
756c5857
AI
4127 (__mmask8) -1);
4128}
4129
4130extern __inline __m512i
4131__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4132_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
4133{
4134 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
4135 (__v8di) __O,
4136 __M);
4137}
4138
4139extern __inline __m512i
4140__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4141_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
4142{
4143 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
4144 (__v8di)
4145 _mm512_setzero_si512 (),
4146 __M);
4147}
4148
4149typedef enum
4150{
4151 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
4152 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
4153 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
4154 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
4155 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
4156 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
4157 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
4158 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
4159 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
4160 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
4161 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
4162 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
4163 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
4164 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
4165 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
4166 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
4167 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
4168 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
4169 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
4170 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
4171 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
4172 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
4173 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
4174 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
4175 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
4176 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
4177 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
4178 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
4179 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
4180 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
4181 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
4182 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
4183 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
4184 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
4185 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
4186 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
4187 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
4188 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
4189 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
4190 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
4191 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
4192 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
4193 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
4194 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
4195 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
4196 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
4197 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
4198 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
4199 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
4200 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
4201 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
4202 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
4203 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
4204 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
4205 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
4206 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
4207 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
4208 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
4209 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
4210 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
4211 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
4212 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
4213 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
4214 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
4215 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
4216 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
4217 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
4218 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
4219 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
4220 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
4221 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
4222 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
4223 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
4224 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
4225 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
4226 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
4227 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
4228 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
4229 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
4230 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
4231 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
4232 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
4233 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
4234 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
4235 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
4236 _MM_PERM_DDDD = 0xFF
4237} _MM_PERM_ENUM;
4238
4239#ifdef __OPTIMIZE__
4240extern __inline __m512i
4241__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4242_mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask)
4243{
4244 return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
4245 __mask,
4246 (__v16si)
4271e5cb 4247 _mm512_undefined_epi32 (),
756c5857
AI
4248 (__mmask16) -1);
4249}
4250
4251extern __inline __m512i
4252__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4253_mm512_mask_shuffle_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
4254 _MM_PERM_ENUM __mask)
4255{
4256 return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
4257 __mask,
4258 (__v16si) __W,
4259 (__mmask16) __U);
4260}
4261
4262extern __inline __m512i
4263__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4264_mm512_maskz_shuffle_epi32 (__mmask16 __U, __m512i __A, _MM_PERM_ENUM __mask)
4265{
4266 return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
4267 __mask,
4268 (__v16si)
4269 _mm512_setzero_si512 (),
4270 (__mmask16) __U);
4271}
4272
4273extern __inline __m512i
4274__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4275_mm512_shuffle_i64x2 (__m512i __A, __m512i __B, const int __imm)
4276{
4277 return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
4278 (__v8di) __B, __imm,
4279 (__v8di)
4271e5cb 4280 _mm512_undefined_epi32 (),
756c5857
AI
4281 (__mmask8) -1);
4282}
4283
4284extern __inline __m512i
4285__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4286_mm512_mask_shuffle_i64x2 (__m512i __W, __mmask8 __U, __m512i __A,
4287 __m512i __B, const int __imm)
4288{
4289 return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
4290 (__v8di) __B, __imm,
4291 (__v8di) __W,
4292 (__mmask8) __U);
4293}
4294
4295extern __inline __m512i
4296__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4297_mm512_maskz_shuffle_i64x2 (__mmask8 __U, __m512i __A, __m512i __B,
4298 const int __imm)
4299{
4300 return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
4301 (__v8di) __B, __imm,
4302 (__v8di)
4303 _mm512_setzero_si512 (),
4304 (__mmask8) __U);
4305}
4306
4307extern __inline __m512i
4308__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4309_mm512_shuffle_i32x4 (__m512i __A, __m512i __B, const int __imm)
4310{
4311 return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
4312 (__v16si) __B,
4313 __imm,
4314 (__v16si)
4271e5cb 4315 _mm512_undefined_epi32 (),
756c5857
AI
4316 (__mmask16) -1);
4317}
4318
4319extern __inline __m512i
4320__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4321_mm512_mask_shuffle_i32x4 (__m512i __W, __mmask16 __U, __m512i __A,
4322 __m512i __B, const int __imm)
4323{
4324 return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
4325 (__v16si) __B,
4326 __imm,
4327 (__v16si) __W,
4328 (__mmask16) __U);
4329}
4330
4331extern __inline __m512i
4332__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4333_mm512_maskz_shuffle_i32x4 (__mmask16 __U, __m512i __A, __m512i __B,
4334 const int __imm)
4335{
4336 return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A,
4337 (__v16si) __B,
4338 __imm,
4339 (__v16si)
4340 _mm512_setzero_si512 (),
4341 (__mmask16) __U);
4342}
4343
4344extern __inline __m512d
4345__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4346_mm512_shuffle_f64x2 (__m512d __A, __m512d __B, const int __imm)
4347{
4348 return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
4349 (__v8df) __B, __imm,
4350 (__v8df)
0b192937 4351 _mm512_undefined_pd (),
756c5857
AI
4352 (__mmask8) -1);
4353}
4354
4355extern __inline __m512d
4356__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4357_mm512_mask_shuffle_f64x2 (__m512d __W, __mmask8 __U, __m512d __A,
4358 __m512d __B, const int __imm)
4359{
4360 return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
4361 (__v8df) __B, __imm,
4362 (__v8df) __W,
4363 (__mmask8) __U);
4364}
4365
4366extern __inline __m512d
4367__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4368_mm512_maskz_shuffle_f64x2 (__mmask8 __U, __m512d __A, __m512d __B,
4369 const int __imm)
4370{
4371 return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A,
4372 (__v8df) __B, __imm,
4373 (__v8df)
4374 _mm512_setzero_pd (),
4375 (__mmask8) __U);
4376}
4377
4378extern __inline __m512
4379__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4380_mm512_shuffle_f32x4 (__m512 __A, __m512 __B, const int __imm)
4381{
4382 return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
4383 (__v16sf) __B, __imm,
4384 (__v16sf)
0b192937 4385 _mm512_undefined_ps (),
756c5857
AI
4386 (__mmask16) -1);
4387}
4388
4389extern __inline __m512
4390__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4391_mm512_mask_shuffle_f32x4 (__m512 __W, __mmask16 __U, __m512 __A,
4392 __m512 __B, const int __imm)
4393{
4394 return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
4395 (__v16sf) __B, __imm,
4396 (__v16sf) __W,
4397 (__mmask16) __U);
4398}
4399
4400extern __inline __m512
4401__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4402_mm512_maskz_shuffle_f32x4 (__mmask16 __U, __m512 __A, __m512 __B,
4403 const int __imm)
4404{
4405 return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A,
4406 (__v16sf) __B, __imm,
4407 (__v16sf)
4408 _mm512_setzero_ps (),
4409 (__mmask16) __U);
4410}
4411
4412#else
4413#define _mm512_shuffle_epi32(X, C) \
4414 ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
4271e5cb 4415 (__v16si)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
4416 (__mmask16)-1))
4417
4418#define _mm512_mask_shuffle_epi32(W, U, X, C) \
4419 ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
4420 (__v16si)(__m512i)(W),\
4421 (__mmask16)(U)))
4422
4423#define _mm512_maskz_shuffle_epi32(U, X, C) \
4424 ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
4425 (__v16si)(__m512i)_mm512_setzero_si512 (),\
4426 (__mmask16)(U)))
4427
4428#define _mm512_shuffle_i64x2(X, Y, C) \
4429 ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \
4430 (__v8di)(__m512i)(Y), (int)(C),\
4271e5cb 4431 (__v8di)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
4432 (__mmask8)-1))
4433
4434#define _mm512_mask_shuffle_i64x2(W, U, X, Y, C) \
4435 ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \
4436 (__v8di)(__m512i)(Y), (int)(C),\
4437 (__v8di)(__m512i)(W),\
4438 (__mmask8)(U)))
4439
4440#define _mm512_maskz_shuffle_i64x2(U, X, Y, C) \
4441 ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \
4442 (__v8di)(__m512i)(Y), (int)(C),\
4443 (__v8di)(__m512i)_mm512_setzero_si512 (),\
4444 (__mmask8)(U)))
4445
4446#define _mm512_shuffle_i32x4(X, Y, C) \
4447 ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \
4448 (__v16si)(__m512i)(Y), (int)(C),\
4271e5cb 4449 (__v16si)(__m512i)_mm512_undefined_epi32 (),\
756c5857
AI
4450 (__mmask16)-1))
4451
4452#define _mm512_mask_shuffle_i32x4(W, U, X, Y, C) \
4453 ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \
4454 (__v16si)(__m512i)(Y), (int)(C),\
4455 (__v16si)(__m512i)(W),\
4456 (__mmask16)(U)))
4457
4458#define _mm512_maskz_shuffle_i32x4(U, X, Y, C) \
4459 ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \
4460 (__v16si)(__m512i)(Y), (int)(C),\
4461 (__v16si)(__m512i)_mm512_setzero_si512 (),\
4462 (__mmask16)(U)))
4463
4464#define _mm512_shuffle_f64x2(X, Y, C) \
4465 ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \
4466 (__v8df)(__m512d)(Y), (int)(C),\
0b192937 4467 (__v8df)(__m512d)_mm512_undefined_pd(),\
756c5857
AI
4468 (__mmask8)-1))
4469
4470#define _mm512_mask_shuffle_f64x2(W, U, X, Y, C) \
4471 ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \
4472 (__v8df)(__m512d)(Y), (int)(C),\
4473 (__v8df)(__m512d)(W),\
4474 (__mmask8)(U)))
4475
4476#define _mm512_maskz_shuffle_f64x2(U, X, Y, C) \
4477 ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \
4478 (__v8df)(__m512d)(Y), (int)(C),\
4479 (__v8df)(__m512d)_mm512_setzero_pd(),\
4480 (__mmask8)(U)))
4481
4482#define _mm512_shuffle_f32x4(X, Y, C) \
4483 ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \
4484 (__v16sf)(__m512)(Y), (int)(C),\
0b192937 4485 (__v16sf)(__m512)_mm512_undefined_ps(),\
756c5857
AI
4486 (__mmask16)-1))
4487
4488#define _mm512_mask_shuffle_f32x4(W, U, X, Y, C) \
4489 ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \
4490 (__v16sf)(__m512)(Y), (int)(C),\
4491 (__v16sf)(__m512)(W),\
4492 (__mmask16)(U)))
4493
4494#define _mm512_maskz_shuffle_f32x4(U, X, Y, C) \
4495 ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \
4496 (__v16sf)(__m512)(Y), (int)(C),\
4497 (__v16sf)(__m512)_mm512_setzero_ps(),\
4498 (__mmask16)(U)))
4499#endif
4500
4501extern __inline __m512i
4502__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4503_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4504{
4505 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4506 (__v16si) __B,
4507 (__v16si)
4271e5cb 4508 _mm512_undefined_epi32 (),
756c5857
AI
4509 (__mmask16) -1);
4510}
4511
4512extern __inline __m512i
4513__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4514_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4515{
4516 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4517 (__v16si) __B,
4518 (__v16si) __W,
4519 (__mmask16) __U);
4520}
4521
4522extern __inline __m512i
4523__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4524_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4525{
4526 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4527 (__v16si) __B,
4528 (__v16si)
4529 _mm512_setzero_si512 (),
4530 (__mmask16) __U);
4531}
4532
4533extern __inline __m512i
4534__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4535_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4536{
4537 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4538 (__v16si) __B,
4539 (__v16si)
4271e5cb 4540 _mm512_undefined_epi32 (),
756c5857
AI
4541 (__mmask16) -1);
4542}
4543
4544extern __inline __m512i
4545__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4546_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4547{
4548 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4549 (__v16si) __B,
4550 (__v16si) __W,
4551 (__mmask16) __U);
4552}
4553
4554extern __inline __m512i
4555__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4556_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4557{
4558 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4559 (__v16si) __B,
4560 (__v16si)
4561 _mm512_setzero_si512 (),
4562 (__mmask16) __U);
4563}
4564
4565extern __inline __m512i
4566__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4567_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4568{
4569 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4570 (__v8di) __B,
4571 (__v8di)
4271e5cb 4572 _mm512_undefined_epi32 (),
756c5857
AI
4573 (__mmask8) -1);
4574}
4575
4576extern __inline __m512i
4577__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4578_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4579{
4580 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4581 (__v8di) __B,
4582 (__v8di) __W,
4583 (__mmask8) __U);
4584}
4585
4586extern __inline __m512i
4587__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4588_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4589{
4590 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4591 (__v8di) __B,
4592 (__v8di)
4593 _mm512_setzero_si512 (),
4594 (__mmask8) __U);
4595}
4596
4597extern __inline __m512i
4598__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4599_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4600{
4601 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4602 (__v8di) __B,
4603 (__v8di)
4271e5cb 4604 _mm512_undefined_epi32 (),
756c5857
AI
4605 (__mmask8) -1);
4606}
4607
4608extern __inline __m512i
4609__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4610_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4611{
4612 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4613 (__v8di) __B,
4614 (__v8di) __W,
4615 (__mmask8) __U);
4616}
4617
4618extern __inline __m512i
4619__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4620_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4621{
4622 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4623 (__v8di) __B,
4624 (__v8di)
4625 _mm512_setzero_si512 (),
4626 (__mmask8) __U);
4627}
4628
4629#ifdef __OPTIMIZE__
4630extern __inline __m256i
4631__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4632_mm512_cvtt_roundpd_epi32 (__m512d __A, const int __R)
4633{
4634 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
4635 (__v8si)
0b192937 4636 _mm256_undefined_si256 (),
756c5857
AI
4637 (__mmask8) -1, __R);
4638}
4639
4640extern __inline __m256i
4641__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4642_mm512_mask_cvtt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A,
4643 const int __R)
4644{
4645 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
4646 (__v8si) __W,
4647 (__mmask8) __U, __R);
4648}
4649
4650extern __inline __m256i
4651__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4652_mm512_maskz_cvtt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R)
4653{
4654 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
4655 (__v8si)
4656 _mm256_setzero_si256 (),
4657 (__mmask8) __U, __R);
4658}
4659
4660extern __inline __m256i
4661__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4662_mm512_cvtt_roundpd_epu32 (__m512d __A, const int __R)
4663{
4664 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
4665 (__v8si)
0b192937 4666 _mm256_undefined_si256 (),
756c5857
AI
4667 (__mmask8) -1, __R);
4668}
4669
4670extern __inline __m256i
4671__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4672_mm512_mask_cvtt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A,
4673 const int __R)
4674{
4675 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
4676 (__v8si) __W,
4677 (__mmask8) __U, __R);
4678}
4679
4680extern __inline __m256i
4681__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4682_mm512_maskz_cvtt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R)
4683{
4684 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
4685 (__v8si)
4686 _mm256_setzero_si256 (),
4687 (__mmask8) __U, __R);
4688}
4689#else
4690#define _mm512_cvtt_roundpd_epi32(A, B) \
0b192937 4691 ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
756c5857
AI
4692
4693#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, B) \
4694 ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)(W), U, B))
4695
4696#define _mm512_maskz_cvtt_roundpd_epi32(U, A, B) \
4697 ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
4698
4699#define _mm512_cvtt_roundpd_epu32(A, B) \
0b192937 4700 ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
756c5857
AI
4701
4702#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, B) \
4703 ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)(W), U, B))
4704
4705#define _mm512_maskz_cvtt_roundpd_epu32(U, A, B) \
4706 ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
4707#endif
4708
4709#ifdef __OPTIMIZE__
4710extern __inline __m256i
4711__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4712_mm512_cvt_roundpd_epi32 (__m512d __A, const int __R)
4713{
4714 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4715 (__v8si)
0b192937 4716 _mm256_undefined_si256 (),
756c5857
AI
4717 (__mmask8) -1, __R);
4718}
4719
4720extern __inline __m256i
4721__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4722_mm512_mask_cvt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A,
4723 const int __R)
4724{
4725 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4726 (__v8si) __W,
4727 (__mmask8) __U, __R);
4728}
4729
4730extern __inline __m256i
4731__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4732_mm512_maskz_cvt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R)
4733{
4734 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4735 (__v8si)
4736 _mm256_setzero_si256 (),
4737 (__mmask8) __U, __R);
4738}
4739
4740extern __inline __m256i
4741__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4742_mm512_cvt_roundpd_epu32 (__m512d __A, const int __R)
4743{
4744 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4745 (__v8si)
0b192937 4746 _mm256_undefined_si256 (),
756c5857
AI
4747 (__mmask8) -1, __R);
4748}
4749
4750extern __inline __m256i
4751__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4752_mm512_mask_cvt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A,
4753 const int __R)
4754{
4755 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4756 (__v8si) __W,
4757 (__mmask8) __U, __R);
4758}
4759
4760extern __inline __m256i
4761__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4762_mm512_maskz_cvt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R)
4763{
4764 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4765 (__v8si)
4766 _mm256_setzero_si256 (),
4767 (__mmask8) __U, __R);
4768}
4769#else
4770#define _mm512_cvt_roundpd_epi32(A, B) \
0b192937 4771 ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
756c5857
AI
4772
4773#define _mm512_mask_cvt_roundpd_epi32(W, U, A, B) \
4774 ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)(W), U, B))
4775
4776#define _mm512_maskz_cvt_roundpd_epi32(U, A, B) \
4777 ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
4778
4779#define _mm512_cvt_roundpd_epu32(A, B) \
0b192937 4780 ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B))
756c5857
AI
4781
4782#define _mm512_mask_cvt_roundpd_epu32(W, U, A, B) \
4783 ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)(W), U, B))
4784
4785#define _mm512_maskz_cvt_roundpd_epu32(U, A, B) \
4786 ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B))
4787#endif
4788
4789#ifdef __OPTIMIZE__
4790extern __inline __m512i
4791__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4792_mm512_cvtt_roundps_epi32 (__m512 __A, const int __R)
4793{
4794 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
4795 (__v16si)
4271e5cb 4796 _mm512_undefined_epi32 (),
756c5857
AI
4797 (__mmask16) -1, __R);
4798}
4799
4800extern __inline __m512i
4801__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4802_mm512_mask_cvtt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A,
4803 const int __R)
4804{
4805 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
4806 (__v16si) __W,
4807 (__mmask16) __U, __R);
4808}
4809
4810extern __inline __m512i
4811__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4812_mm512_maskz_cvtt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R)
4813{
4814 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
4815 (__v16si)
4816 _mm512_setzero_si512 (),
4817 (__mmask16) __U, __R);
4818}
4819
4820extern __inline __m512i
4821__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4822_mm512_cvtt_roundps_epu32 (__m512 __A, const int __R)
4823{
4824 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
4825 (__v16si)
4271e5cb 4826 _mm512_undefined_epi32 (),
756c5857
AI
4827 (__mmask16) -1, __R);
4828}
4829
4830extern __inline __m512i
4831__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4832_mm512_mask_cvtt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A,
4833 const int __R)
4834{
4835 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
4836 (__v16si) __W,
4837 (__mmask16) __U, __R);
4838}
4839
4840extern __inline __m512i
4841__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4842_mm512_maskz_cvtt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R)
4843{
4844 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
4845 (__v16si)
4846 _mm512_setzero_si512 (),
4847 (__mmask16) __U, __R);
4848}
4849#else
4850#define _mm512_cvtt_roundps_epi32(A, B) \
4271e5cb 4851 ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
756c5857
AI
4852
4853#define _mm512_mask_cvtt_roundps_epi32(W, U, A, B) \
4854 ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B))
4855
4856#define _mm512_maskz_cvtt_roundps_epi32(U, A, B) \
4857 ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
4858
4859#define _mm512_cvtt_roundps_epu32(A, B) \
4271e5cb 4860 ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
756c5857
AI
4861
4862#define _mm512_mask_cvtt_roundps_epu32(W, U, A, B) \
4863 ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B))
4864
4865#define _mm512_maskz_cvtt_roundps_epu32(U, A, B) \
4866 ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
4867#endif
4868
4869#ifdef __OPTIMIZE__
4870extern __inline __m512i
4871__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4872_mm512_cvt_roundps_epi32 (__m512 __A, const int __R)
4873{
4874 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4875 (__v16si)
4271e5cb 4876 _mm512_undefined_epi32 (),
756c5857
AI
4877 (__mmask16) -1, __R);
4878}
4879
4880extern __inline __m512i
4881__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4882_mm512_mask_cvt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A,
4883 const int __R)
4884{
4885 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4886 (__v16si) __W,
4887 (__mmask16) __U, __R);
4888}
4889
4890extern __inline __m512i
4891__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4892_mm512_maskz_cvt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R)
4893{
4894 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4895 (__v16si)
4896 _mm512_setzero_si512 (),
4897 (__mmask16) __U, __R);
4898}
4899
4900extern __inline __m512i
4901__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4902_mm512_cvt_roundps_epu32 (__m512 __A, const int __R)
4903{
4904 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4905 (__v16si)
4271e5cb 4906 _mm512_undefined_epi32 (),
756c5857
AI
4907 (__mmask16) -1, __R);
4908}
4909
4910extern __inline __m512i
4911__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4912_mm512_mask_cvt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A,
4913 const int __R)
4914{
4915 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4916 (__v16si) __W,
4917 (__mmask16) __U, __R);
4918}
4919
4920extern __inline __m512i
4921__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4922_mm512_maskz_cvt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R)
4923{
4924 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4925 (__v16si)
4926 _mm512_setzero_si512 (),
4927 (__mmask16) __U, __R);
4928}
4929#else
4930#define _mm512_cvt_roundps_epi32(A, B) \
4271e5cb 4931 ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
756c5857
AI
4932
4933#define _mm512_mask_cvt_roundps_epi32(W, U, A, B) \
4934 ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B))
4935
4936#define _mm512_maskz_cvt_roundps_epi32(U, A, B) \
4937 ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
4938
4939#define _mm512_cvt_roundps_epu32(A, B) \
4271e5cb 4940 ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
756c5857
AI
4941
4942#define _mm512_mask_cvt_roundps_epu32(W, U, A, B) \
4943 ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B))
4944
4945#define _mm512_maskz_cvt_roundps_epu32(U, A, B) \
4946 ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
4947#endif
4948
4949extern __inline __m128d
4950__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4951_mm_cvtu32_sd (__m128d __A, unsigned __B)
4952{
4953 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
4954}
4955
4956#ifdef __x86_64__
4957#ifdef __OPTIMIZE__
4958extern __inline __m128d
4959__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4960_mm_cvt_roundu64_sd (__m128d __A, unsigned long long __B, const int __R)
4961{
4962 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B, __R);
4963}
4964
4965extern __inline __m128d
4966__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4967_mm_cvt_roundi64_sd (__m128d __A, long long __B, const int __R)
4968{
4969 return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R);
4970}
4971
4972extern __inline __m128d
4973__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4974_mm_cvt_roundsi64_sd (__m128d __A, long long __B, const int __R)
4975{
4976 return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R);
4977}
4978#else
4979#define _mm_cvt_roundu64_sd(A, B, C) \
4980 (__m128d)__builtin_ia32_cvtusi2sd64(A, B, C)
4981
4982#define _mm_cvt_roundi64_sd(A, B, C) \
4983 (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C)
4984
4985#define _mm_cvt_roundsi64_sd(A, B, C) \
4986 (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C)
4987#endif
4988
4989#endif
4990
4991#ifdef __OPTIMIZE__
4992extern __inline __m128
4993__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4994_mm_cvt_roundu32_ss (__m128 __A, unsigned __B, const int __R)
4995{
4996 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B, __R);
4997}
4998
4999extern __inline __m128
5000__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5001_mm_cvt_roundsi32_ss (__m128 __A, int __B, const int __R)
5002{
5003 return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R);
5004}
5005
5006extern __inline __m128
5007__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5008_mm_cvt_roundi32_ss (__m128 __A, int __B, const int __R)
5009{
5010 return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R);
5011}
5012#else
5013#define _mm_cvt_roundu32_ss(A, B, C) \
5014 (__m128)__builtin_ia32_cvtusi2ss32(A, B, C)
5015
5016#define _mm_cvt_roundi32_ss(A, B, C) \
5017 (__m128)__builtin_ia32_cvtsi2ss32(A, B, C)
5018
5019#define _mm_cvt_roundsi32_ss(A, B, C) \
5020 (__m128)__builtin_ia32_cvtsi2ss32(A, B, C)
5021#endif
5022
5023#ifdef __x86_64__
5024#ifdef __OPTIMIZE__
5025extern __inline __m128
5026__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5027_mm_cvt_roundu64_ss (__m128 __A, unsigned long long __B, const int __R)
5028{
5029 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B, __R);
5030}
5031
5032extern __inline __m128
5033__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5034_mm_cvt_roundsi64_ss (__m128 __A, long long __B, const int __R)
5035{
5036 return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R);
5037}
5038
5039extern __inline __m128
5040__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5041_mm_cvt_roundi64_ss (__m128 __A, long long __B, const int __R)
5042{
5043 return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R);
5044}
5045#else
5046#define _mm_cvt_roundu64_ss(A, B, C) \
5047 (__m128)__builtin_ia32_cvtusi2ss64(A, B, C)
5048
5049#define _mm_cvt_roundi64_ss(A, B, C) \
5050 (__m128)__builtin_ia32_cvtsi2ss64(A, B, C)
5051
5052#define _mm_cvt_roundsi64_ss(A, B, C) \
5053 (__m128)__builtin_ia32_cvtsi2ss64(A, B, C)
5054#endif
5055
5056#endif
5057
5058extern __inline __m128i
5059__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5060_mm512_cvtepi32_epi8 (__m512i __A)
5061{
0b192937
UD
5062 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
5063 (__v16qi)
5064 _mm_undefined_si128 (),
756c5857
AI
5065 (__mmask16) -1);
5066}
5067
d256b866
IT
5068extern __inline void
5069__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5070_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5071{
5072 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5073}
5074
756c5857
AI
5075extern __inline __m128i
5076__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5077_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5078{
5079 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
5080 (__v16qi) __O, __M);
5081}
5082
5083extern __inline __m128i
5084__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5085_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
5086{
5087 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
5088 (__v16qi)
5089 _mm_setzero_si128 (),
5090 __M);
5091}
5092
5093extern __inline __m128i
5094__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5095_mm512_cvtsepi32_epi8 (__m512i __A)
5096{
0b192937
UD
5097 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5098 (__v16qi)
5099 _mm_undefined_si128 (),
756c5857
AI
5100 (__mmask16) -1);
5101}
5102
d256b866
IT
5103extern __inline void
5104__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5105_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5106{
5107 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5108}
5109
756c5857
AI
5110extern __inline __m128i
5111__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5112_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5113{
5114 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5115 (__v16qi) __O, __M);
5116}
5117
5118extern __inline __m128i
5119__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5120_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
5121{
5122 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5123 (__v16qi)
5124 _mm_setzero_si128 (),
5125 __M);
5126}
5127
5128extern __inline __m128i
5129__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5130_mm512_cvtusepi32_epi8 (__m512i __A)
5131{
0b192937
UD
5132 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5133 (__v16qi)
5134 _mm_undefined_si128 (),
756c5857
AI
5135 (__mmask16) -1);
5136}
5137
d256b866
IT
5138extern __inline void
5139__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5140_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5141{
5142 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5143}
5144
756c5857
AI
5145extern __inline __m128i
5146__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5147_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5148{
5149 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5150 (__v16qi) __O,
5151 __M);
5152}
5153
5154extern __inline __m128i
5155__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5156_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
5157{
5158 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5159 (__v16qi)
5160 _mm_setzero_si128 (),
5161 __M);
5162}
5163
5164extern __inline __m256i
5165__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5166_mm512_cvtepi32_epi16 (__m512i __A)
5167{
0b192937
UD
5168 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
5169 (__v16hi)
5170 _mm256_undefined_si256 (),
756c5857
AI
5171 (__mmask16) -1);
5172}
5173
d256b866
IT
5174extern __inline void
5175__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5176_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
5177{
5178 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
5179}
5180
756c5857
AI
5181extern __inline __m256i
5182__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5183_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5184{
5185 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
5186 (__v16hi) __O, __M);
5187}
5188
5189extern __inline __m256i
5190__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5191_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
5192{
5193 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
5194 (__v16hi)
5195 _mm256_setzero_si256 (),
5196 __M);
5197}
5198
5199extern __inline __m256i
5200__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5201_mm512_cvtsepi32_epi16 (__m512i __A)
5202{
0b192937
UD
5203 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5204 (__v16hi)
5205 _mm256_undefined_si256 (),
756c5857
AI
5206 (__mmask16) -1);
5207}
5208
d256b866
IT
5209extern __inline void
5210__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5211_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
5212{
5213 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
5214}
5215
756c5857
AI
5216extern __inline __m256i
5217__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5218_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5219{
5220 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5221 (__v16hi) __O, __M);
5222}
5223
5224extern __inline __m256i
5225__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5226_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
5227{
5228 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5229 (__v16hi)
5230 _mm256_setzero_si256 (),
5231 __M);
5232}
5233
5234extern __inline __m256i
5235__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5236_mm512_cvtusepi32_epi16 (__m512i __A)
5237{
0b192937
UD
5238 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
5239 (__v16hi)
5240 _mm256_undefined_si256 (),
756c5857
AI
5241 (__mmask16) -1);
5242}
5243
d256b866
IT
5244extern __inline void
5245__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5246_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
5247{
5248 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
5249}
5250
756c5857
AI
5251extern __inline __m256i
5252__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5253_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5254{
5255 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
5256 (__v16hi) __O,
5257 __M);
5258}
5259
5260extern __inline __m256i
5261__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5262_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
5263{
5264 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
5265 (__v16hi)
5266 _mm256_setzero_si256 (),
5267 __M);
5268}
5269
5270extern __inline __m256i
5271__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5272_mm512_cvtepi64_epi32 (__m512i __A)
5273{
0b192937
UD
5274 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
5275 (__v8si)
5276 _mm256_undefined_si256 (),
756c5857
AI
5277 (__mmask8) -1);
5278}
5279
d256b866
IT
5280extern __inline void
5281__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5282_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
5283{
5284 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
5285}
5286
756c5857
AI
5287extern __inline __m256i
5288__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5289_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5290{
5291 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
5292 (__v8si) __O, __M);
5293}
5294
5295extern __inline __m256i
5296__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5297_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
5298{
5299 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
5300 (__v8si)
5301 _mm256_setzero_si256 (),
5302 __M);
5303}
5304
5305extern __inline __m256i
5306__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5307_mm512_cvtsepi64_epi32 (__m512i __A)
5308{
0b192937
UD
5309 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5310 (__v8si)
5311 _mm256_undefined_si256 (),
756c5857
AI
5312 (__mmask8) -1);
5313}
5314
d256b866
IT
5315extern __inline void
5316__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5317_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
5318{
5319 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
5320}
5321
756c5857
AI
5322extern __inline __m256i
5323__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5324_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5325{
5326 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5327 (__v8si) __O, __M);
5328}
5329
5330extern __inline __m256i
5331__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5332_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
5333{
5334 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5335 (__v8si)
5336 _mm256_setzero_si256 (),
5337 __M);
5338}
5339
5340extern __inline __m256i
5341__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5342_mm512_cvtusepi64_epi32 (__m512i __A)
5343{
0b192937
UD
5344 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
5345 (__v8si)
5346 _mm256_undefined_si256 (),
756c5857
AI
5347 (__mmask8) -1);
5348}
5349
6fb82517 5350extern __inline void
d256b866
IT
5351__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5352_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
5353{
5354 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
5355}
5356
756c5857
AI
5357extern __inline __m256i
5358__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5359_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5360{
5361 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
5362 (__v8si) __O, __M);
5363}
5364
5365extern __inline __m256i
5366__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5367_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
5368{
5369 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
5370 (__v8si)
5371 _mm256_setzero_si256 (),
5372 __M);
5373}
5374
5375extern __inline __m128i
5376__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5377_mm512_cvtepi64_epi16 (__m512i __A)
5378{
0b192937
UD
5379 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
5380 (__v8hi)
5381 _mm_undefined_si128 (),
756c5857
AI
5382 (__mmask8) -1);
5383}
5384
d256b866
IT
5385extern __inline void
5386__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5387_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
5388{
5389 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
5390}
5391
756c5857
AI
5392extern __inline __m128i
5393__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5394_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5395{
5396 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
5397 (__v8hi) __O, __M);
5398}
5399
5400extern __inline __m128i
5401__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5402_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
5403{
5404 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
5405 (__v8hi)
5406 _mm_setzero_si128 (),
5407 __M);
5408}
5409
5410extern __inline __m128i
5411__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5412_mm512_cvtsepi64_epi16 (__m512i __A)
5413{
0b192937
UD
5414 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5415 (__v8hi)
5416 _mm_undefined_si128 (),
756c5857
AI
5417 (__mmask8) -1);
5418}
5419
d256b866
IT
5420extern __inline void
5421__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5422_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
5423{
5424 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
5425}
5426
756c5857
AI
5427extern __inline __m128i
5428__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5429_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5430{
5431 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5432 (__v8hi) __O, __M);
5433}
5434
5435extern __inline __m128i
5436__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5437_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
5438{
5439 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5440 (__v8hi)
5441 _mm_setzero_si128 (),
5442 __M);
5443}
5444
5445extern __inline __m128i
5446__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5447_mm512_cvtusepi64_epi16 (__m512i __A)
5448{
0b192937
UD
5449 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
5450 (__v8hi)
5451 _mm_undefined_si128 (),
756c5857
AI
5452 (__mmask8) -1);
5453}
5454
d256b866
IT
5455extern __inline void
5456__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5457_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
5458{
5459 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
5460}
5461
756c5857
AI
5462extern __inline __m128i
5463__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5464_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5465{
5466 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
5467 (__v8hi) __O, __M);
5468}
5469
5470extern __inline __m128i
5471__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5472_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
5473{
5474 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
5475 (__v8hi)
5476 _mm_setzero_si128 (),
5477 __M);
5478}
5479
5480extern __inline __m128i
5481__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5482_mm512_cvtepi64_epi8 (__m512i __A)
5483{
0b192937
UD
5484 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
5485 (__v16qi)
5486 _mm_undefined_si128 (),
756c5857
AI
5487 (__mmask8) -1);
5488}
5489
d256b866
IT
5490extern __inline void
5491__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5492_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5493{
5494 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
5495}
5496
756c5857
AI
5497extern __inline __m128i
5498__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5499_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5500{
5501 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
5502 (__v16qi) __O, __M);
5503}
5504
5505extern __inline __m128i
5506__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5507_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
5508{
5509 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
5510 (__v16qi)
5511 _mm_setzero_si128 (),
5512 __M);
5513}
5514
5515extern __inline __m128i
5516__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5517_mm512_cvtsepi64_epi8 (__m512i __A)
5518{
0b192937
UD
5519 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5520 (__v16qi)
5521 _mm_undefined_si128 (),
756c5857
AI
5522 (__mmask8) -1);
5523}
5524
d256b866
IT
5525extern __inline void
5526__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5527_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5528{
5529 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
5530}
5531
756c5857
AI
5532extern __inline __m128i
5533__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5534_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5535{
5536 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5537 (__v16qi) __O, __M);
5538}
5539
5540extern __inline __m128i
5541__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5542_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
5543{
5544 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5545 (__v16qi)
5546 _mm_setzero_si128 (),
5547 __M);
5548}
5549
5550extern __inline __m128i
5551__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5552_mm512_cvtusepi64_epi8 (__m512i __A)
5553{
0b192937
UD
5554 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
5555 (__v16qi)
5556 _mm_undefined_si128 (),
756c5857
AI
5557 (__mmask8) -1);
5558}
5559
d256b866
IT
5560extern __inline void
5561__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5562_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5563{
5564 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
5565}
5566
756c5857
AI
5567extern __inline __m128i
5568__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5569_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5570{
5571 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
5572 (__v16qi) __O,
5573 __M);
5574}
5575
5576extern __inline __m128i
5577__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5578_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
5579{
5580 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
5581 (__v16qi)
5582 _mm_setzero_si128 (),
5583 __M);
5584}
5585
5586extern __inline __m512d
5587__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5588_mm512_cvtepi32_pd (__m256i __A)
5589{
5590 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
5591 (__v8df)
0b192937 5592 _mm512_undefined_pd (),
756c5857
AI
5593 (__mmask8) -1);
5594}
5595
5596extern __inline __m512d
5597__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5598_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
5599{
5600 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
5601 (__v8df) __W,
5602 (__mmask8) __U);
5603}
5604
5605extern __inline __m512d
5606__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5607_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
5608{
5609 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
5610 (__v8df)
5611 _mm512_setzero_pd (),
5612 (__mmask8) __U);
5613}
5614
5615extern __inline __m512d
5616__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5617_mm512_cvtepu32_pd (__m256i __A)
5618{
5619 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
5620 (__v8df)
0b192937 5621 _mm512_undefined_pd (),
756c5857
AI
5622 (__mmask8) -1);
5623}
5624
5625extern __inline __m512d
5626__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5627_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
5628{
5629 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
5630 (__v8df) __W,
5631 (__mmask8) __U);
5632}
5633
5634extern __inline __m512d
5635__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5636_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
5637{
5638 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
5639 (__v8df)
5640 _mm512_setzero_pd (),
5641 (__mmask8) __U);
5642}
5643
5644#ifdef __OPTIMIZE__
5645extern __inline __m512
5646__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5647_mm512_cvt_roundepi32_ps (__m512i __A, const int __R)
5648{
5649 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
5650 (__v16sf)
0b192937 5651 _mm512_undefined_ps (),
756c5857
AI
5652 (__mmask16) -1, __R);
5653}
5654
5655extern __inline __m512
5656__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5657_mm512_mask_cvt_roundepi32_ps (__m512 __W, __mmask16 __U, __m512i __A,
5658 const int __R)
5659{
5660 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
5661 (__v16sf) __W,
5662 (__mmask16) __U, __R);
5663}
5664
5665extern __inline __m512
5666__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5667_mm512_maskz_cvt_roundepi32_ps (__mmask16 __U, __m512i __A, const int __R)
5668{
5669 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
5670 (__v16sf)
5671 _mm512_setzero_ps (),
5672 (__mmask16) __U, __R);
5673}
5674
5675extern __inline __m512
5676__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5677_mm512_cvt_roundepu32_ps (__m512i __A, const int __R)
5678{
5679 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
5680 (__v16sf)
0b192937 5681 _mm512_undefined_ps (),
756c5857
AI
5682 (__mmask16) -1, __R);
5683}
5684
5685extern __inline __m512
5686__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5687_mm512_mask_cvt_roundepu32_ps (__m512 __W, __mmask16 __U, __m512i __A,
5688 const int __R)
5689{
5690 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
5691 (__v16sf) __W,
5692 (__mmask16) __U, __R);
5693}
5694
5695extern __inline __m512
5696__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5697_mm512_maskz_cvt_roundepu32_ps (__mmask16 __U, __m512i __A, const int __R)
5698{
5699 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
5700 (__v16sf)
5701 _mm512_setzero_ps (),
5702 (__mmask16) __U, __R);
5703}
5704
5705#else
5706#define _mm512_cvt_roundepi32_ps(A, B) \
0b192937 5707 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
756c5857
AI
5708
5709#define _mm512_mask_cvt_roundepi32_ps(W, U, A, B) \
5710 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), W, U, B)
5711
5712#define _mm512_maskz_cvt_roundepi32_ps(U, A, B) \
5713 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B)
5714
5715#define _mm512_cvt_roundepu32_ps(A, B) \
0b192937 5716 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
756c5857
AI
5717
5718#define _mm512_mask_cvt_roundepu32_ps(W, U, A, B) \
5719 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), W, U, B)
5720
5721#define _mm512_maskz_cvt_roundepu32_ps(U, A, B) \
5722 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B)
5723#endif
5724
5725#ifdef __OPTIMIZE__
5726extern __inline __m256d
5727__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5728_mm512_extractf64x4_pd (__m512d __A, const int __imm)
5729{
5730 return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
5731 __imm,
5732 (__v4df)
0b192937 5733 _mm256_undefined_pd (),
756c5857
AI
5734 (__mmask8) -1);
5735}
5736
5737extern __inline __m256d
5738__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5739_mm512_mask_extractf64x4_pd (__m256d __W, __mmask8 __U, __m512d __A,
5740 const int __imm)
5741{
5742 return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
5743 __imm,
5744 (__v4df) __W,
5745 (__mmask8) __U);
5746}
5747
5748extern __inline __m256d
5749__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5750_mm512_maskz_extractf64x4_pd (__mmask8 __U, __m512d __A, const int __imm)
5751{
5752 return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,
5753 __imm,
5754 (__v4df)
5755 _mm256_setzero_pd (),
5756 (__mmask8) __U);
5757}
5758
5759extern __inline __m128
5760__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5761_mm512_extractf32x4_ps (__m512 __A, const int __imm)
5762{
5763 return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
5764 __imm,
5765 (__v4sf)
0b192937 5766 _mm_undefined_ps (),
756c5857
AI
5767 (__mmask8) -1);
5768}
5769
5770extern __inline __m128
5771__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5772_mm512_mask_extractf32x4_ps (__m128 __W, __mmask8 __U, __m512 __A,
5773 const int __imm)
5774{
5775 return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
5776 __imm,
5777 (__v4sf) __W,
5778 (__mmask8) __U);
5779}
5780
5781extern __inline __m128
5782__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5783_mm512_maskz_extractf32x4_ps (__mmask8 __U, __m512 __A, const int __imm)
5784{
5785 return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,
5786 __imm,
5787 (__v4sf)
5788 _mm_setzero_ps (),
5789 (__mmask8) __U);
5790}
5791
5792extern __inline __m256i
5793__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5794_mm512_extracti64x4_epi64 (__m512i __A, const int __imm)
5795{
5796 return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
5797 __imm,
5798 (__v4di)
0b192937 5799 _mm256_undefined_si256 (),
756c5857
AI
5800 (__mmask8) -1);
5801}
5802
5803extern __inline __m256i
5804__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5805_mm512_mask_extracti64x4_epi64 (__m256i __W, __mmask8 __U, __m512i __A,
5806 const int __imm)
5807{
5808 return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
5809 __imm,
5810 (__v4di) __W,
5811 (__mmask8) __U);
5812}
5813
5814extern __inline __m256i
5815__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5816_mm512_maskz_extracti64x4_epi64 (__mmask8 __U, __m512i __A, const int __imm)
5817{
5818 return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A,
5819 __imm,
5820 (__v4di)
5821 _mm256_setzero_si256 (),
5822 (__mmask8) __U);
5823}
5824
5825extern __inline __m128i
5826__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5827_mm512_extracti32x4_epi32 (__m512i __A, const int __imm)
5828{
5829 return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
5830 __imm,
5831 (__v4si)
0b192937 5832 _mm_undefined_si128 (),
756c5857
AI
5833 (__mmask8) -1);
5834}
5835
5836extern __inline __m128i
5837__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5838_mm512_mask_extracti32x4_epi32 (__m128i __W, __mmask8 __U, __m512i __A,
5839 const int __imm)
5840{
5841 return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
5842 __imm,
5843 (__v4si) __W,
5844 (__mmask8) __U);
5845}
5846
5847extern __inline __m128i
5848__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5849_mm512_maskz_extracti32x4_epi32 (__mmask8 __U, __m512i __A, const int __imm)
5850{
5851 return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A,
5852 __imm,
5853 (__v4si)
5854 _mm_setzero_si128 (),
5855 (__mmask8) __U);
5856}
5857#else
5858
5859#define _mm512_extractf64x4_pd(X, C) \
5860 ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \
5861 (int) (C),\
0b192937 5862 (__v4df)(__m256d)_mm256_undefined_pd(),\
756c5857
AI
5863 (__mmask8)-1))
5864
5865#define _mm512_mask_extractf64x4_pd(W, U, X, C) \
5866 ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \
5867 (int) (C),\
5868 (__v4df)(__m256d)(W),\
5869 (__mmask8)(U)))
5870
5871#define _mm512_maskz_extractf64x4_pd(U, X, C) \
5872 ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \
5873 (int) (C),\
5874 (__v4df)(__m256d)_mm256_setzero_pd(),\
5875 (__mmask8)(U)))
5876
5877#define _mm512_extractf32x4_ps(X, C) \
5878 ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \
5879 (int) (C),\
0b192937 5880 (__v4sf)(__m128)_mm_undefined_ps(),\
756c5857
AI
5881 (__mmask8)-1))
5882
5883#define _mm512_mask_extractf32x4_ps(W, U, X, C) \
5884 ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \
5885 (int) (C),\
5886 (__v4sf)(__m128)(W),\
5887 (__mmask8)(U)))
5888
5889#define _mm512_maskz_extractf32x4_ps(U, X, C) \
5890 ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \
5891 (int) (C),\
5892 (__v4sf)(__m128)_mm_setzero_ps(),\
5893 (__mmask8)(U)))
5894
5895#define _mm512_extracti64x4_epi64(X, C) \
5896 ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \
5897 (int) (C),\
0b192937 5898 (__v4di)(__m256i)_mm256_undefined_si256 (),\
756c5857
AI
5899 (__mmask8)-1))
5900
5901#define _mm512_mask_extracti64x4_epi64(W, U, X, C) \
5902 ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \
5903 (int) (C),\
5904 (__v4di)(__m256i)(W),\
5905 (__mmask8)(U)))
5906
5907#define _mm512_maskz_extracti64x4_epi64(U, X, C) \
5908 ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \
5909 (int) (C),\
5910 (__v4di)(__m256i)_mm256_setzero_si256 (),\
5911 (__mmask8)(U)))
5912
5913#define _mm512_extracti32x4_epi32(X, C) \
5914 ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \
5915 (int) (C),\
0b192937 5916 (__v4si)(__m128i)_mm_undefined_si128 (),\
756c5857
AI
5917 (__mmask8)-1))
5918
5919#define _mm512_mask_extracti32x4_epi32(W, U, X, C) \
5920 ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \
5921 (int) (C),\
5922 (__v4si)(__m128i)(W),\
5923 (__mmask8)(U)))
5924
5925#define _mm512_maskz_extracti32x4_epi32(U, X, C) \
5926 ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \
5927 (int) (C),\
5928 (__v4si)(__m128i)_mm_setzero_si128 (),\
5929 (__mmask8)(U)))
5930#endif
5931
5932#ifdef __OPTIMIZE__
5933extern __inline __m512i
5934__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5935_mm512_inserti32x4 (__m512i __A, __m128i __B, const int __imm)
5936{
5937 return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __A,
5938 (__v4si) __B,
5939 __imm,
5940 (__v16si) __A, -1);
5941}
5942
5943extern __inline __m512
5944__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5945_mm512_insertf32x4 (__m512 __A, __m128 __B, const int __imm)
5946{
5947 return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __A,
5948 (__v4sf) __B,
5949 __imm,
5950 (__v16sf) __A, -1);
5951}
5952
5953extern __inline __m512i
5954__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5955_mm512_inserti64x4 (__m512i __A, __m256i __B, const int __imm)
5956{
5957 return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
5958 (__v4di) __B,
5959 __imm,
5960 (__v8di)
4271e5cb 5961 _mm512_undefined_epi32 (),
756c5857
AI
5962 (__mmask8) -1);
5963}
5964
5965extern __inline __m512i
5966__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5967_mm512_mask_inserti64x4 (__m512i __W, __mmask8 __U, __m512i __A,
5968 __m256i __B, const int __imm)
5969{
5970 return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
5971 (__v4di) __B,
5972 __imm,
5973 (__v8di) __W,
5974 (__mmask8) __U);
5975}
5976
5977extern __inline __m512i
5978__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5979_mm512_maskz_inserti64x4 (__mmask8 __U, __m512i __A, __m256i __B,
5980 const int __imm)
5981{
5982 return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A,
5983 (__v4di) __B,
5984 __imm,
5985 (__v8di)
5986 _mm512_setzero_si512 (),
5987 (__mmask8) __U);
5988}
5989
5990extern __inline __m512d
5991__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
5992_mm512_insertf64x4 (__m512d __A, __m256d __B, const int __imm)
5993{
5994 return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
5995 (__v4df) __B,
5996 __imm,
5997 (__v8df)
0b192937 5998 _mm512_undefined_pd (),
756c5857
AI
5999 (__mmask8) -1);
6000}
6001
6002extern __inline __m512d
6003__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6004_mm512_mask_insertf64x4 (__m512d __W, __mmask8 __U, __m512d __A,
6005 __m256d __B, const int __imm)
6006{
6007 return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
6008 (__v4df) __B,
6009 __imm,
6010 (__v8df) __W,
6011 (__mmask8) __U);
6012}
6013
6014extern __inline __m512d
6015__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6016_mm512_maskz_insertf64x4 (__mmask8 __U, __m512d __A, __m256d __B,
6017 const int __imm)
6018{
6019 return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A,
6020 (__v4df) __B,
6021 __imm,
6022 (__v8df)
6023 _mm512_setzero_pd (),
6024 (__mmask8) __U);
6025}
6026#else
6027#define _mm512_insertf32x4(X, Y, C) \
6028 ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \
6029 (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (X), (__mmask16)(-1)))
6030
6031#define _mm512_inserti32x4(X, Y, C) \
6032 ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \
6033 (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (X), (__mmask16)(-1)))
6034
6035#define _mm512_insertf64x4(X, Y, C) \
6036 ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \
6037 (__v4df)(__m256d) (Y), (int) (C), \
0b192937 6038 (__v8df)(__m512d)_mm512_undefined_pd(), \
756c5857
AI
6039 (__mmask8)-1))
6040
6041#define _mm512_mask_insertf64x4(W, U, X, Y, C) \
6042 ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \
6043 (__v4df)(__m256d) (Y), (int) (C), \
6044 (__v8df)(__m512d)(W), \
6045 (__mmask8)(U)))
6046
6047#define _mm512_maskz_insertf64x4(U, X, Y, C) \
6048 ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \
6049 (__v4df)(__m256d) (Y), (int) (C), \
6050 (__v8df)(__m512d)_mm512_setzero_pd(), \
6051 (__mmask8)(U)))
6052
6053#define _mm512_inserti64x4(X, Y, C) \
6054 ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \
6055 (__v4di)(__m256i) (Y), (int) (C), \
4271e5cb 6056 (__v8di)(__m512i)_mm512_undefined_epi32 (), \
756c5857
AI
6057 (__mmask8)-1))
6058
6059#define _mm512_mask_inserti64x4(W, U, X, Y, C) \
6060 ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \
6061 (__v4di)(__m256i) (Y), (int) (C),\
6062 (__v8di)(__m512i)(W),\
6063 (__mmask8)(U)))
6064
6065#define _mm512_maskz_inserti64x4(U, X, Y, C) \
6066 ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \
6067 (__v4di)(__m256i) (Y), (int) (C), \
6068 (__v8di)(__m512i)_mm512_setzero_si512 (), \
6069 (__mmask8)(U)))
6070#endif
6071
6072extern __inline __m512d
6073__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6074_mm512_loadu_pd (void const *__P)
6075{
c6b0037d 6076 return *(__m512d_u *)__P;
756c5857
AI
6077}
6078
6079extern __inline __m512d
6080__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6081_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
6082{
fc9cf6da 6083 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
756c5857
AI
6084 (__v8df) __W,
6085 (__mmask8) __U);
6086}
6087
6088extern __inline __m512d
6089__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6090_mm512_maskz_loadu_pd (__mmask8 __U, void const *__P)
6091{
fc9cf6da 6092 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
756c5857
AI
6093 (__v8df)
6094 _mm512_setzero_pd (),
6095 (__mmask8) __U);
6096}
6097
6098extern __inline void
6099__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6100_mm512_storeu_pd (void *__P, __m512d __A)
6101{
c6b0037d 6102 *(__m512d_u *)__P = __A;
756c5857
AI
6103}
6104
6105extern __inline void
6106__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6107_mm512_mask_storeu_pd (void *__P, __mmask8 __U, __m512d __A)
6108{
fc9cf6da 6109 __builtin_ia32_storeupd512_mask ((double *) __P, (__v8df) __A,
756c5857
AI
6110 (__mmask8) __U);
6111}
6112
6113extern __inline __m512
6114__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6115_mm512_loadu_ps (void const *__P)
6116{
c6b0037d 6117 return *(__m512_u *)__P;
756c5857
AI
6118}
6119
6120extern __inline __m512
6121__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6122_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
6123{
fc9cf6da 6124 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
756c5857
AI
6125 (__v16sf) __W,
6126 (__mmask16) __U);
6127}
6128
6129extern __inline __m512
6130__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6131_mm512_maskz_loadu_ps (__mmask16 __U, void const *__P)
6132{
fc9cf6da 6133 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
756c5857
AI
6134 (__v16sf)
6135 _mm512_setzero_ps (),
6136 (__mmask16) __U);
6137}
6138
6139extern __inline void
6140__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6141_mm512_storeu_ps (void *__P, __m512 __A)
6142{
c6b0037d 6143 *(__m512_u *)__P = __A;
756c5857
AI
6144}
6145
6146extern __inline void
6147__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6148_mm512_mask_storeu_ps (void *__P, __mmask16 __U, __m512 __A)
6149{
fc9cf6da 6150 __builtin_ia32_storeups512_mask ((float *) __P, (__v16sf) __A,
756c5857
AI
6151 (__mmask16) __U);
6152}
6153
6154extern __inline __m512i
6155__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6156_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
6157{
fc9cf6da 6158 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
756c5857
AI
6159 (__v8di) __W,
6160 (__mmask8) __U);
6161}
6162
6163extern __inline __m512i
6164__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6165_mm512_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
6166{
fc9cf6da 6167 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
756c5857
AI
6168 (__v8di)
6169 _mm512_setzero_si512 (),
6170 (__mmask8) __U);
6171}
6172
6173extern __inline void
6174__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6175_mm512_mask_storeu_epi64 (void *__P, __mmask8 __U, __m512i __A)
6176{
fc9cf6da 6177 __builtin_ia32_storedqudi512_mask ((long long *) __P, (__v8di) __A,
756c5857
AI
6178 (__mmask8) __U);
6179}
6180
6181extern __inline __m512i
6182__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
cf73ee60 6183_mm512_loadu_si512 (void const *__P)
756c5857 6184{
c6b0037d 6185 return *(__m512i_u *)__P;
756c5857
AI
6186}
6187
6188extern __inline __m512i
6189__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6190_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
6191{
fc9cf6da 6192 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
756c5857
AI
6193 (__v16si) __W,
6194 (__mmask16) __U);
6195}
6196
6197extern __inline __m512i
6198__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6199_mm512_maskz_loadu_epi32 (__mmask16 __U, void const *__P)
6200{
fc9cf6da 6201 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
756c5857
AI
6202 (__v16si)
6203 _mm512_setzero_si512 (),
6204 (__mmask16) __U);
6205}
6206
6207extern __inline void
6208__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
cf73ee60 6209_mm512_storeu_si512 (void *__P, __m512i __A)
756c5857 6210{
c6b0037d 6211 *(__m512i_u *)__P = __A;
756c5857
AI
6212}
6213
6214extern __inline void
6215__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6216_mm512_mask_storeu_epi32 (void *__P, __mmask16 __U, __m512i __A)
6217{
fc9cf6da 6218 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
756c5857
AI
6219 (__mmask16) __U);
6220}
6221
6222extern __inline __m512d
6223__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6224_mm512_permutevar_pd (__m512d __A, __m512i __C)
6225{
6226 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6227 (__v8di) __C,
6228 (__v8df)
0b192937 6229 _mm512_undefined_pd (),
756c5857
AI
6230 (__mmask8) -1);
6231}
6232
6233extern __inline __m512d
6234__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6235_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6236{
6237 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6238 (__v8di) __C,
6239 (__v8df) __W,
6240 (__mmask8) __U);
6241}
6242
6243extern __inline __m512d
6244__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6245_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6246{
6247 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6248 (__v8di) __C,
6249 (__v8df)
6250 _mm512_setzero_pd (),
6251 (__mmask8) __U);
6252}
6253
6254extern __inline __m512
6255__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6256_mm512_permutevar_ps (__m512 __A, __m512i __C)
6257{
6258 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6259 (__v16si) __C,
6260 (__v16sf)
0b192937 6261 _mm512_undefined_ps (),
756c5857
AI
6262 (__mmask16) -1);
6263}
6264
6265extern __inline __m512
6266__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6267_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6268{
6269 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6270 (__v16si) __C,
6271 (__v16sf) __W,
6272 (__mmask16) __U);
6273}
6274
6275extern __inline __m512
6276__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6277_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6278{
6279 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6280 (__v16si) __C,
6281 (__v16sf)
6282 _mm512_setzero_ps (),
6283 (__mmask16) __U);
6284}
6285
6286extern __inline __m512i
6287__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6288_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B)
6289{
6290 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
6291 /* idx */ ,
6292 (__v8di) __A,
6293 (__v8di) __B,
6294 (__mmask8) -1);
6295}
6296
6297extern __inline __m512i
6298__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6299_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
6300 __m512i __B)
6301{
6302 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
6303 /* idx */ ,
6304 (__v8di) __A,
6305 (__v8di) __B,
6306 (__mmask8) __U);
6307}
6308
6309extern __inline __m512i
6310__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6311_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6312 __mmask8 __U, __m512i __B)
6313{
6314 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6315 (__v8di) __I
6316 /* idx */ ,
6317 (__v8di) __B,
6318 (__mmask8) __U);
6319}
6320
6321extern __inline __m512i
6322__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6323_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
6324 __m512i __I, __m512i __B)
6325{
6326 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
6327 /* idx */ ,
6328 (__v8di) __A,
6329 (__v8di) __B,
6330 (__mmask8) __U);
6331}
6332
6333extern __inline __m512i
6334__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6335_mm512_permutex2var_epi32 (__m512i __A, __m512i __I, __m512i __B)
6336{
6337 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
6338 /* idx */ ,
6339 (__v16si) __A,
6340 (__v16si) __B,
6341 (__mmask16) -1);
6342}
6343
6344extern __inline __m512i
6345__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6346_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
6347 __m512i __I, __m512i __B)
6348{
6349 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
6350 /* idx */ ,
6351 (__v16si) __A,
6352 (__v16si) __B,
6353 (__mmask16) __U);
6354}
6355
6356extern __inline __m512i
6357__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6358_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
6359 __mmask16 __U, __m512i __B)
6360{
6361 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
6362 (__v16si) __I
6363 /* idx */ ,
6364 (__v16si) __B,
6365 (__mmask16) __U);
6366}
6367
6368extern __inline __m512i
6369__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6370_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
6371 __m512i __I, __m512i __B)
6372{
6373 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
6374 /* idx */ ,
6375 (__v16si) __A,
6376 (__v16si) __B,
6377 (__mmask16) __U);
6378}
6379
6380extern __inline __m512d
6381__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6382_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
6383{
6384 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6385 /* idx */ ,
6386 (__v8df) __A,
6387 (__v8df) __B,
6388 (__mmask8) -1);
6389}
6390
6391extern __inline __m512d
6392__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6393_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I,
6394 __m512d __B)
6395{
6396 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6397 /* idx */ ,
6398 (__v8df) __A,
6399 (__v8df) __B,
6400 (__mmask8) __U);
6401}
6402
6403extern __inline __m512d
6404__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6405_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6406 __m512d __B)
6407{
6408 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6409 (__v8di) __I
6410 /* idx */ ,
6411 (__v8df) __B,
6412 (__mmask8) __U);
6413}
6414
6415extern __inline __m512d
6416__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6417_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6418 __m512d __B)
6419{
6420 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
6421 /* idx */ ,
6422 (__v8df) __A,
6423 (__v8df) __B,
6424 (__mmask8) __U);
6425}
6426
6427extern __inline __m512
6428__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6429_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
6430{
6431 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6432 /* idx */ ,
6433 (__v16sf) __A,
6434 (__v16sf) __B,
6435 (__mmask16) -1);
6436}
6437
6438extern __inline __m512
6439__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6440_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6441{
6442 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6443 /* idx */ ,
6444 (__v16sf) __A,
6445 (__v16sf) __B,
6446 (__mmask16) __U);
6447}
6448
6449extern __inline __m512
6450__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6451_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6452 __m512 __B)
6453{
6454 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6455 (__v16si) __I
6456 /* idx */ ,
6457 (__v16sf) __B,
6458 (__mmask16) __U);
6459}
6460
6461extern __inline __m512
6462__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6463_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6464 __m512 __B)
6465{
6466 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
6467 /* idx */ ,
6468 (__v16sf) __A,
6469 (__v16sf) __B,
6470 (__mmask16) __U);
6471}
6472
6473#ifdef __OPTIMIZE__
6474extern __inline __m512d
6475__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6476_mm512_permute_pd (__m512d __X, const int __C)
6477{
6478 return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
6479 (__v8df)
0b192937 6480 _mm512_undefined_pd (),
756c5857
AI
6481 (__mmask8) -1);
6482}
6483
6484extern __inline __m512d
6485__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6486_mm512_mask_permute_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __C)
6487{
6488 return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
6489 (__v8df) __W,
6490 (__mmask8) __U);
6491}
6492
6493extern __inline __m512d
6494__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6495_mm512_maskz_permute_pd (__mmask8 __U, __m512d __X, const int __C)
6496{
6497 return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C,
6498 (__v8df)
6499 _mm512_setzero_pd (),
6500 (__mmask8) __U);
6501}
6502
6503extern __inline __m512
6504__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6505_mm512_permute_ps (__m512 __X, const int __C)
6506{
6507 return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
6508 (__v16sf)
0b192937 6509 _mm512_undefined_ps (),
756c5857
AI
6510 (__mmask16) -1);
6511}
6512
6513extern __inline __m512
6514__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6515_mm512_mask_permute_ps (__m512 __W, __mmask16 __U, __m512 __X, const int __C)
6516{
6517 return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
6518 (__v16sf) __W,
6519 (__mmask16) __U);
6520}
6521
6522extern __inline __m512
6523__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6524_mm512_maskz_permute_ps (__mmask16 __U, __m512 __X, const int __C)
6525{
6526 return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C,
6527 (__v16sf)
6528 _mm512_setzero_ps (),
6529 (__mmask16) __U);
6530}
6531#else
6532#define _mm512_permute_pd(X, C) \
6533 ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \
0b192937 6534 (__v8df)(__m512d)_mm512_undefined_pd(),\
756c5857
AI
6535 (__mmask8)(-1)))
6536
6537#define _mm512_mask_permute_pd(W, U, X, C) \
6538 ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \
6539 (__v8df)(__m512d)(W), \
6540 (__mmask8)(U)))
6541
6542#define _mm512_maskz_permute_pd(U, X, C) \
6543 ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \
6544 (__v8df)(__m512d)_mm512_setzero_pd(), \
6545 (__mmask8)(U)))
6546
6547#define _mm512_permute_ps(X, C) \
6548 ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \
0b192937 6549 (__v16sf)(__m512)_mm512_undefined_ps(),\
756c5857
AI
6550 (__mmask16)(-1)))
6551
6552#define _mm512_mask_permute_ps(W, U, X, C) \
6553 ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \
6554 (__v16sf)(__m512)(W), \
6555 (__mmask16)(U)))
6556
6557#define _mm512_maskz_permute_ps(U, X, C) \
6558 ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \
6559 (__v16sf)(__m512)_mm512_setzero_ps(), \
6560 (__mmask16)(U)))
6561#endif
6562
6563#ifdef __OPTIMIZE__
6564extern __inline __m512i
6565__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6566_mm512_permutex_epi64 (__m512i __X, const int __I)
6567{
6568 return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
6569 (__v8di)
4271e5cb 6570 _mm512_undefined_epi32 (),
756c5857
AI
6571 (__mmask8) (-1));
6572}
6573
6574extern __inline __m512i
6575__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6576_mm512_mask_permutex_epi64 (__m512i __W, __mmask8 __M,
6577 __m512i __X, const int __I)
6578{
6579 return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
6580 (__v8di) __W,
6581 (__mmask8) __M);
6582}
6583
6584extern __inline __m512i
6585__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6586_mm512_maskz_permutex_epi64 (__mmask8 __M, __m512i __X, const int __I)
6587{
6588 return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
6589 (__v8di)
6590 _mm512_setzero_si512 (),
6591 (__mmask8) __M);
6592}
6593
6594extern __inline __m512d
6595__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6596_mm512_permutex_pd (__m512d __X, const int __M)
6597{
6598 return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
6599 (__v8df)
0b192937 6600 _mm512_undefined_pd (),
756c5857
AI
6601 (__mmask8) -1);
6602}
6603
6604extern __inline __m512d
6605__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6606_mm512_mask_permutex_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __M)
6607{
6608 return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
6609 (__v8df) __W,
6610 (__mmask8) __U);
6611}
6612
6613extern __inline __m512d
6614__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6615_mm512_maskz_permutex_pd (__mmask8 __U, __m512d __X, const int __M)
6616{
6617 return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M,
6618 (__v8df)
6619 _mm512_setzero_pd (),
6620 (__mmask8) __U);
6621}
6622#else
6623#define _mm512_permutex_pd(X, M) \
6624 ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \
0b192937
UD
6625 (__v8df)(__m512d)_mm512_undefined_pd(),\
6626 (__mmask8)-1))
756c5857
AI
6627
6628#define _mm512_mask_permutex_pd(W, U, X, M) \
6629 ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \
6630 (__v8df)(__m512d)(W), (__mmask8)(U)))
6631
6632#define _mm512_maskz_permutex_pd(U, X, M) \
6633 ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \
6634 (__v8df)(__m512d)_mm512_setzero_pd(),\
6635 (__mmask8)(U)))
6636
6637#define _mm512_permutex_epi64(X, I) \
6638 ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
6639 (int)(I), \
0b192937 6640 (__v8di)(__m512i) \
4271e5cb 6641 (_mm512_undefined_epi32 ()),\
756c5857
AI
6642 (__mmask8)(-1)))
6643
6644#define _mm512_maskz_permutex_epi64(M, X, I) \
6645 ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
6646 (int)(I), \
6647 (__v8di)(__m512i) \
6648 (_mm512_setzero_si512 ()),\
6649 (__mmask8)(M)))
6650
6651#define _mm512_mask_permutex_epi64(W, M, X, I) \
6652 ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
6653 (int)(I), \
6654 (__v8di)(__m512i)(W), \
6655 (__mmask8)(M)))
6656#endif
6657
6658extern __inline __m512i
6659__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6660_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
6661{
583a9919
KY
6662 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
6663 (__v8di) __X,
756c5857
AI
6664 (__v8di)
6665 _mm512_setzero_si512 (),
6666 __M);
6667}
6668
6669extern __inline __m512i
6670__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6671_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
6672{
583a9919
KY
6673 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
6674 (__v8di) __X,
756c5857 6675 (__v8di)
4271e5cb 6676 _mm512_undefined_epi32 (),
756c5857
AI
6677 (__mmask8) -1);
6678}
6679
6680extern __inline __m512i
6681__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6682_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
6683 __m512i __Y)
6684{
583a9919
KY
6685 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
6686 (__v8di) __X,
756c5857
AI
6687 (__v8di) __W,
6688 __M);
6689}
6690
6691extern __inline __m512i
6692__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6693_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
6694{
583a9919
KY
6695 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
6696 (__v16si) __X,
756c5857
AI
6697 (__v16si)
6698 _mm512_setzero_si512 (),
6699 __M);
6700}
6701
6702extern __inline __m512i
6703__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6704_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
6705{
583a9919
KY
6706 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
6707 (__v16si) __X,
756c5857 6708 (__v16si)
4271e5cb 6709 _mm512_undefined_epi32 (),
756c5857
AI
6710 (__mmask16) -1);
6711}
6712
6713extern __inline __m512i
6714__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6715_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
6716 __m512i __Y)
6717{
583a9919
KY
6718 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
6719 (__v16si) __X,
756c5857
AI
6720 (__v16si) __W,
6721 __M);
6722}
6723
6724extern __inline __m512d
6725__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6726_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
6727{
6728 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
6729 (__v8di) __X,
6730 (__v8df)
0b192937 6731 _mm512_undefined_pd (),
756c5857
AI
6732 (__mmask8) -1);
6733}
6734
6735extern __inline __m512d
6736__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6737_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
6738{
6739 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
6740 (__v8di) __X,
6741 (__v8df) __W,
6742 (__mmask8) __U);
6743}
6744
6745extern __inline __m512d
6746__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6747_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
6748{
6749 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
6750 (__v8di) __X,
6751 (__v8df)
6752 _mm512_setzero_pd (),
6753 (__mmask8) __U);
6754}
6755
6756extern __inline __m512
6757__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6758_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
6759{
6760 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
6761 (__v16si) __X,
6762 (__v16sf)
0b192937 6763 _mm512_undefined_ps (),
756c5857
AI
6764 (__mmask16) -1);
6765}
6766
6767extern __inline __m512
6768__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6769_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
6770{
6771 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
6772 (__v16si) __X,
6773 (__v16sf) __W,
6774 (__mmask16) __U);
6775}
6776
6777extern __inline __m512
6778__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6779_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
6780{
6781 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
6782 (__v16si) __X,
6783 (__v16sf)
6784 _mm512_setzero_ps (),
6785 (__mmask16) __U);
6786}
6787
6788#ifdef __OPTIMIZE__
6789extern __inline __m512
6790__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6791_mm512_shuffle_ps (__m512 __M, __m512 __V, const int __imm)
6792{
6793 return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
6794 (__v16sf) __V, __imm,
6795 (__v16sf)
0b192937 6796 _mm512_undefined_ps (),
756c5857
AI
6797 (__mmask16) -1);
6798}
6799
6800extern __inline __m512
6801__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6802_mm512_mask_shuffle_ps (__m512 __W, __mmask16 __U, __m512 __M,
6803 __m512 __V, const int __imm)
6804{
6805 return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
6806 (__v16sf) __V, __imm,
6807 (__v16sf) __W,
6808 (__mmask16) __U);
6809}
6810
6811extern __inline __m512
6812__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6813_mm512_maskz_shuffle_ps (__mmask16 __U, __m512 __M, __m512 __V, const int __imm)
6814{
6815 return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M,
6816 (__v16sf) __V, __imm,
6817 (__v16sf)
6818 _mm512_setzero_ps (),
6819 (__mmask16) __U);
6820}
6821
6822extern __inline __m512d
6823__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6824_mm512_shuffle_pd (__m512d __M, __m512d __V, const int __imm)
6825{
6826 return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
6827 (__v8df) __V, __imm,
6828 (__v8df)
0b192937 6829 _mm512_undefined_pd (),
756c5857
AI
6830 (__mmask8) -1);
6831}
6832
6833extern __inline __m512d
6834__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6835_mm512_mask_shuffle_pd (__m512d __W, __mmask8 __U, __m512d __M,
6836 __m512d __V, const int __imm)
6837{
6838 return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
6839 (__v8df) __V, __imm,
6840 (__v8df) __W,
6841 (__mmask8) __U);
6842}
6843
6844extern __inline __m512d
6845__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6846_mm512_maskz_shuffle_pd (__mmask8 __U, __m512d __M, __m512d __V,
6847 const int __imm)
6848{
6849 return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M,
6850 (__v8df) __V, __imm,
6851 (__v8df)
6852 _mm512_setzero_pd (),
6853 (__mmask8) __U);
6854}
6855
6856extern __inline __m512d
6857__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6858_mm512_fixupimm_round_pd (__m512d __A, __m512d __B, __m512i __C,
6859 const int __imm, const int __R)
6860{
6861 return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
6862 (__v8df) __B,
6863 (__v8di) __C,
6864 __imm,
6865 (__mmask8) -1, __R);
6866}
6867
6868extern __inline __m512d
6869__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6870_mm512_mask_fixupimm_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
6871 __m512i __C, const int __imm, const int __R)
6872{
6873 return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
6874 (__v8df) __B,
6875 (__v8di) __C,
6876 __imm,
6877 (__mmask8) __U, __R);
6878}
6879
6880extern __inline __m512d
6881__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6882_mm512_maskz_fixupimm_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
6883 __m512i __C, const int __imm, const int __R)
6884{
6885 return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A,
6886 (__v8df) __B,
6887 (__v8di) __C,
6888 __imm,
6889 (__mmask8) __U, __R);
6890}
6891
6892extern __inline __m512
6893__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6894_mm512_fixupimm_round_ps (__m512 __A, __m512 __B, __m512i __C,
6895 const int __imm, const int __R)
6896{
6897 return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
6898 (__v16sf) __B,
6899 (__v16si) __C,
6900 __imm,
6901 (__mmask16) -1, __R);
6902}
6903
6904extern __inline __m512
6905__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6906_mm512_mask_fixupimm_round_ps (__m512 __A, __mmask16 __U, __m512 __B,
6907 __m512i __C, const int __imm, const int __R)
6908{
6909 return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
6910 (__v16sf) __B,
6911 (__v16si) __C,
6912 __imm,
6913 (__mmask16) __U, __R);
6914}
6915
6916extern __inline __m512
6917__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6918_mm512_maskz_fixupimm_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
6919 __m512i __C, const int __imm, const int __R)
6920{
6921 return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A,
6922 (__v16sf) __B,
6923 (__v16si) __C,
6924 __imm,
6925 (__mmask16) __U, __R);
6926}
6927
6928extern __inline __m128d
6929__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6930_mm_fixupimm_round_sd (__m128d __A, __m128d __B, __m128i __C,
6931 const int __imm, const int __R)
6932{
6933 return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
6934 (__v2df) __B,
6935 (__v2di) __C, __imm,
6936 (__mmask8) -1, __R);
6937}
6938
6939extern __inline __m128d
6940__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6941_mm_mask_fixupimm_round_sd (__m128d __A, __mmask8 __U, __m128d __B,
6942 __m128i __C, const int __imm, const int __R)
6943{
6944 return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
6945 (__v2df) __B,
6946 (__v2di) __C, __imm,
6947 (__mmask8) __U, __R);
6948}
6949
6950extern __inline __m128d
6951__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6952_mm_maskz_fixupimm_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
6953 __m128i __C, const int __imm, const int __R)
6954{
6955 return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A,
6956 (__v2df) __B,
6957 (__v2di) __C,
6958 __imm,
6959 (__mmask8) __U, __R);
6960}
6961
6962extern __inline __m128
6963__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6964_mm_fixupimm_round_ss (__m128 __A, __m128 __B, __m128i __C,
6965 const int __imm, const int __R)
6966{
6967 return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
6968 (__v4sf) __B,
6969 (__v4si) __C, __imm,
6970 (__mmask8) -1, __R);
6971}
6972
6973extern __inline __m128
6974__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6975_mm_mask_fixupimm_round_ss (__m128 __A, __mmask8 __U, __m128 __B,
6976 __m128i __C, const int __imm, const int __R)
6977{
6978 return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
6979 (__v4sf) __B,
6980 (__v4si) __C, __imm,
6981 (__mmask8) __U, __R);
6982}
6983
6984extern __inline __m128
6985__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
6986_mm_maskz_fixupimm_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
6987 __m128i __C, const int __imm, const int __R)
6988{
6989 return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A,
6990 (__v4sf) __B,
6991 (__v4si) __C, __imm,
6992 (__mmask8) __U, __R);
6993}
6994
6995#else
6996#define _mm512_shuffle_pd(X, Y, C) \
6997 ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \
6998 (__v8df)(__m512d)(Y), (int)(C),\
0b192937 6999 (__v8df)(__m512d)_mm512_undefined_pd(),\
756c5857
AI
7000 (__mmask8)-1))
7001
7002#define _mm512_mask_shuffle_pd(W, U, X, Y, C) \
7003 ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \
7004 (__v8df)(__m512d)(Y), (int)(C),\
7005 (__v8df)(__m512d)(W),\
7006 (__mmask8)(U)))
7007
7008#define _mm512_maskz_shuffle_pd(U, X, Y, C) \
7009 ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \
7010 (__v8df)(__m512d)(Y), (int)(C),\
7011 (__v8df)(__m512d)_mm512_setzero_pd(),\
7012 (__mmask8)(U)))
7013
7014#define _mm512_shuffle_ps(X, Y, C) \
7015 ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \
7016 (__v16sf)(__m512)(Y), (int)(C),\
0b192937 7017 (__v16sf)(__m512)_mm512_undefined_ps(),\
756c5857
AI
7018 (__mmask16)-1))
7019
7020#define _mm512_mask_shuffle_ps(W, U, X, Y, C) \
7021 ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \
7022 (__v16sf)(__m512)(Y), (int)(C),\
7023 (__v16sf)(__m512)(W),\
7024 (__mmask16)(U)))
7025
7026#define _mm512_maskz_shuffle_ps(U, X, Y, C) \
7027 ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \
7028 (__v16sf)(__m512)(Y), (int)(C),\
7029 (__v16sf)(__m512)_mm512_setzero_ps(),\
7030 (__mmask16)(U)))
7031
7032#define _mm512_fixupimm_round_pd(X, Y, Z, C, R) \
7033 ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
7034 (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
7035 (__mmask8)(-1), (R)))
7036
7037#define _mm512_mask_fixupimm_round_pd(X, U, Y, Z, C, R) \
7038 ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
7039 (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
7040 (__mmask8)(U), (R)))
7041
7042#define _mm512_maskz_fixupimm_round_pd(U, X, Y, Z, C, R) \
7043 ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X), \
7044 (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
7045 (__mmask8)(U), (R)))
7046
7047#define _mm512_fixupimm_round_ps(X, Y, Z, C, R) \
7048 ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
7049 (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
7050 (__mmask16)(-1), (R)))
7051
7052#define _mm512_mask_fixupimm_round_ps(X, U, Y, Z, C, R) \
7053 ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
7054 (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
7055 (__mmask16)(U), (R)))
7056
7057#define _mm512_maskz_fixupimm_round_ps(U, X, Y, Z, C, R) \
7058 ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X), \
7059 (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
7060 (__mmask16)(U), (R)))
7061
7062#define _mm_fixupimm_round_sd(X, Y, Z, C, R) \
7063 ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
7064 (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
7065 (__mmask8)(-1), (R)))
7066
7067#define _mm_mask_fixupimm_round_sd(X, U, Y, Z, C, R) \
7068 ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
7069 (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
7070 (__mmask8)(U), (R)))
7071
7072#define _mm_maskz_fixupimm_round_sd(U, X, Y, Z, C, R) \
7073 ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X), \
7074 (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
7075 (__mmask8)(U), (R)))
7076
7077#define _mm_fixupimm_round_ss(X, Y, Z, C, R) \
7078 ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
7079 (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
7080 (__mmask8)(-1), (R)))
7081
7082#define _mm_mask_fixupimm_round_ss(X, U, Y, Z, C, R) \
7083 ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
7084 (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
7085 (__mmask8)(U), (R)))
7086
7087#define _mm_maskz_fixupimm_round_ss(U, X, Y, Z, C, R) \
7088 ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X), \
7089 (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
7090 (__mmask8)(U), (R)))
7091#endif
7092
7093extern __inline __m512
7094__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7095_mm512_movehdup_ps (__m512 __A)
7096{
7097 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
7098 (__v16sf)
0b192937 7099 _mm512_undefined_ps (),
756c5857
AI
7100 (__mmask16) -1);
7101}
7102
7103extern __inline __m512
7104__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7105_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
7106{
7107 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
7108 (__v16sf) __W,
7109 (__mmask16) __U);
7110}
7111
7112extern __inline __m512
7113__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7114_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
7115{
7116 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
7117 (__v16sf)
7118 _mm512_setzero_ps (),
7119 (__mmask16) __U);
7120}
7121
7122extern __inline __m512
7123__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7124_mm512_moveldup_ps (__m512 __A)
7125{
7126 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
7127 (__v16sf)
0b192937 7128 _mm512_undefined_ps (),
756c5857
AI
7129 (__mmask16) -1);
7130}
7131
7132extern __inline __m512
7133__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7134_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
7135{
7136 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
7137 (__v16sf) __W,
7138 (__mmask16) __U);
7139}
7140
7141extern __inline __m512
7142__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7143_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
7144{
7145 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
7146 (__v16sf)
7147 _mm512_setzero_ps (),
7148 (__mmask16) __U);
7149}
7150
7151extern __inline __m512i
7152__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7153_mm512_or_si512 (__m512i __A, __m512i __B)
7154{
2069d6fc 7155 return (__m512i) ((__v16su) __A | (__v16su) __B);
756c5857
AI
7156}
7157
7158extern __inline __m512i
7159__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7160_mm512_or_epi32 (__m512i __A, __m512i __B)
7161{
2069d6fc 7162 return (__m512i) ((__v16su) __A | (__v16su) __B);
756c5857
AI
7163}
7164
7165extern __inline __m512i
7166__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7167_mm512_mask_or_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7168{
7169 return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A,
7170 (__v16si) __B,
7171 (__v16si) __W,
7172 (__mmask16) __U);
7173}
7174
7175extern __inline __m512i
7176__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7177_mm512_maskz_or_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7178{
7179 return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A,
7180 (__v16si) __B,
7181 (__v16si)
7182 _mm512_setzero_si512 (),
7183 (__mmask16) __U);
7184}
7185
7186extern __inline __m512i
7187__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7188_mm512_or_epi64 (__m512i __A, __m512i __B)
7189{
2069d6fc 7190 return (__m512i) ((__v8du) __A | (__v8du) __B);
756c5857
AI
7191}
7192
7193extern __inline __m512i
7194__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7195_mm512_mask_or_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7196{
7197 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A,
7198 (__v8di) __B,
7199 (__v8di) __W,
7200 (__mmask8) __U);
7201}
7202
7203extern __inline __m512i
7204__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7205_mm512_maskz_or_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7206{
7207 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A,
7208 (__v8di) __B,
7209 (__v8di)
7210 _mm512_setzero_si512 (),
7211 (__mmask8) __U);
7212}
7213
7214extern __inline __m512i
7215__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7216_mm512_xor_si512 (__m512i __A, __m512i __B)
7217{
2069d6fc 7218 return (__m512i) ((__v16su) __A ^ (__v16su) __B);
756c5857
AI
7219}
7220
7221extern __inline __m512i
7222__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7223_mm512_xor_epi32 (__m512i __A, __m512i __B)
7224{
2069d6fc 7225 return (__m512i) ((__v16su) __A ^ (__v16su) __B);
756c5857
AI
7226}
7227
7228extern __inline __m512i
7229__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7230_mm512_mask_xor_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7231{
7232 return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A,
7233 (__v16si) __B,
7234 (__v16si) __W,
7235 (__mmask16) __U);
7236}
7237
7238extern __inline __m512i
7239__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7240_mm512_maskz_xor_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7241{
7242 return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A,
7243 (__v16si) __B,
7244 (__v16si)
7245 _mm512_setzero_si512 (),
7246 (__mmask16) __U);
7247}
7248
7249extern __inline __m512i
7250__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7251_mm512_xor_epi64 (__m512i __A, __m512i __B)
7252{
2069d6fc 7253 return (__m512i) ((__v8du) __A ^ (__v8du) __B);
756c5857
AI
7254}
7255
7256extern __inline __m512i
7257__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7258_mm512_mask_xor_epi64 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7259{
7260 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A,
7261 (__v8di) __B,
7262 (__v8di) __W,
7263 (__mmask8) __U);
7264}
7265
7266extern __inline __m512i
7267__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7268_mm512_maskz_xor_epi64 (__mmask16 __U, __m512i __A, __m512i __B)
7269{
7270 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A,
7271 (__v8di) __B,
7272 (__v8di)
7273 _mm512_setzero_si512 (),
7274 (__mmask8) __U);
7275}
7276
7277#ifdef __OPTIMIZE__
7278extern __inline __m512i
7279__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7280_mm512_rol_epi32 (__m512i __A, const int __B)
7281{
7282 return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
7283 (__v16si)
4271e5cb 7284 _mm512_undefined_epi32 (),
756c5857
AI
7285 (__mmask16) -1);
7286}
7287
7288extern __inline __m512i
7289__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7290_mm512_mask_rol_epi32 (__m512i __W, __mmask16 __U, __m512i __A, const int __B)
7291{
7292 return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
7293 (__v16si) __W,
7294 (__mmask16) __U);
7295}
7296
7297extern __inline __m512i
7298__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7299_mm512_maskz_rol_epi32 (__mmask16 __U, __m512i __A, const int __B)
7300{
7301 return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
7302 (__v16si)
7303 _mm512_setzero_si512 (),
7304 (__mmask16) __U);
7305}
7306
7307extern __inline __m512i
7308__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7309_mm512_ror_epi32 (__m512i __A, int __B)
7310{
7311 return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
7312 (__v16si)
4271e5cb 7313 _mm512_undefined_epi32 (),
756c5857
AI
7314 (__mmask16) -1);
7315}
7316
7317extern __inline __m512i
7318__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7319_mm512_mask_ror_epi32 (__m512i __W, __mmask16 __U, __m512i __A, int __B)
7320{
7321 return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
7322 (__v16si) __W,
7323 (__mmask16) __U);
7324}
7325
7326extern __inline __m512i
7327__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7328_mm512_maskz_ror_epi32 (__mmask16 __U, __m512i __A, int __B)
7329{
7330 return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
7331 (__v16si)
7332 _mm512_setzero_si512 (),
7333 (__mmask16) __U);
7334}
7335
7336extern __inline __m512i
7337__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7338_mm512_rol_epi64 (__m512i __A, const int __B)
7339{
7340 return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
7341 (__v8di)
4271e5cb 7342 _mm512_undefined_epi32 (),
756c5857
AI
7343 (__mmask8) -1);
7344}
7345
7346extern __inline __m512i
7347__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7348_mm512_mask_rol_epi64 (__m512i __W, __mmask8 __U, __m512i __A, const int __B)
7349{
7350 return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
7351 (__v8di) __W,
7352 (__mmask8) __U);
7353}
7354
7355extern __inline __m512i
7356__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7357_mm512_maskz_rol_epi64 (__mmask8 __U, __m512i __A, const int __B)
7358{
7359 return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
7360 (__v8di)
7361 _mm512_setzero_si512 (),
7362 (__mmask8) __U);
7363}
7364
7365extern __inline __m512i
7366__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7367_mm512_ror_epi64 (__m512i __A, int __B)
7368{
7369 return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
7370 (__v8di)
4271e5cb 7371 _mm512_undefined_epi32 (),
756c5857
AI
7372 (__mmask8) -1);
7373}
7374
7375extern __inline __m512i
7376__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7377_mm512_mask_ror_epi64 (__m512i __W, __mmask8 __U, __m512i __A, int __B)
7378{
7379 return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
7380 (__v8di) __W,
7381 (__mmask8) __U);
7382}
7383
7384extern __inline __m512i
7385__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7386_mm512_maskz_ror_epi64 (__mmask8 __U, __m512i __A, int __B)
7387{
7388 return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
7389 (__v8di)
7390 _mm512_setzero_si512 (),
7391 (__mmask8) __U);
7392}
7393
7394#else
7395#define _mm512_rol_epi32(A, B) \
7396 ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \
7397 (int)(B), \
4271e5cb 7398 (__v16si)_mm512_undefined_epi32 (), \
756c5857
AI
7399 (__mmask16)(-1)))
7400#define _mm512_mask_rol_epi32(W, U, A, B) \
7401 ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \
7402 (int)(B), \
7403 (__v16si)(__m512i)(W), \
7404 (__mmask16)(U)))
7405#define _mm512_maskz_rol_epi32(U, A, B) \
7406 ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \
7407 (int)(B), \
7408 (__v16si)_mm512_setzero_si512 (), \
7409 (__mmask16)(U)))
7410#define _mm512_ror_epi32(A, B) \
7411 ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \
7412 (int)(B), \
4271e5cb 7413 (__v16si)_mm512_undefined_epi32 (), \
756c5857
AI
7414 (__mmask16)(-1)))
7415#define _mm512_mask_ror_epi32(W, U, A, B) \
7416 ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \
7417 (int)(B), \
7418 (__v16si)(__m512i)(W), \
7419 (__mmask16)(U)))
7420#define _mm512_maskz_ror_epi32(U, A, B) \
7421 ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \
7422 (int)(B), \
7423 (__v16si)_mm512_setzero_si512 (), \
7424 (__mmask16)(U)))
7425#define _mm512_rol_epi64(A, B) \
7426 ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \
7427 (int)(B), \
4271e5cb 7428 (__v8di)_mm512_undefined_epi32 (), \
756c5857
AI
7429 (__mmask8)(-1)))
7430#define _mm512_mask_rol_epi64(W, U, A, B) \
7431 ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \
7432 (int)(B), \
7433 (__v8di)(__m512i)(W), \
7434 (__mmask8)(U)))
7435#define _mm512_maskz_rol_epi64(U, A, B) \
7436 ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \
7437 (int)(B), \
7438 (__v8di)_mm512_setzero_si512 (), \
7439 (__mmask8)(U)))
7440
7441#define _mm512_ror_epi64(A, B) \
7442 ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \
7443 (int)(B), \
4271e5cb 7444 (__v8di)_mm512_undefined_epi32 (), \
756c5857
AI
7445 (__mmask8)(-1)))
7446#define _mm512_mask_ror_epi64(W, U, A, B) \
7447 ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \
7448 (int)(B), \
7449 (__v8di)(__m512i)(W), \
7450 (__mmask8)(U)))
7451#define _mm512_maskz_ror_epi64(U, A, B) \
7452 ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \
7453 (int)(B), \
7454 (__v8di)_mm512_setzero_si512 (), \
7455 (__mmask8)(U)))
7456#endif
7457
7458extern __inline __m512i
7459__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7460_mm512_and_si512 (__m512i __A, __m512i __B)
7461{
2069d6fc 7462 return (__m512i) ((__v16su) __A & (__v16su) __B);
756c5857
AI
7463}
7464
7465extern __inline __m512i
7466__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7467_mm512_and_epi32 (__m512i __A, __m512i __B)
7468{
2069d6fc 7469 return (__m512i) ((__v16su) __A & (__v16su) __B);
756c5857
AI
7470}
7471
7472extern __inline __m512i
7473__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7474_mm512_mask_and_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7475{
7476 return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A,
7477 (__v16si) __B,
7478 (__v16si) __W,
7479 (__mmask16) __U);
7480}
7481
7482extern __inline __m512i
7483__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7484_mm512_maskz_and_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7485{
7486 return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A,
7487 (__v16si) __B,
7488 (__v16si)
7489 _mm512_setzero_si512 (),
7490 (__mmask16) __U);
7491}
7492
7493extern __inline __m512i
7494__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7495_mm512_and_epi64 (__m512i __A, __m512i __B)
7496{
2069d6fc 7497 return (__m512i) ((__v8du) __A & (__v8du) __B);
756c5857
AI
7498}
7499
7500extern __inline __m512i
7501__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7502_mm512_mask_and_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7503{
7504 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A,
7505 (__v8di) __B,
7506 (__v8di) __W, __U);
7507}
7508
7509extern __inline __m512i
7510__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7511_mm512_maskz_and_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7512{
7513 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A,
7514 (__v8di) __B,
7515 (__v8di)
7516 _mm512_setzero_pd (),
7517 __U);
7518}
7519
7520extern __inline __m512i
7521__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7522_mm512_andnot_si512 (__m512i __A, __m512i __B)
7523{
7524 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7525 (__v16si) __B,
7526 (__v16si)
4271e5cb 7527 _mm512_undefined_epi32 (),
756c5857
AI
7528 (__mmask16) -1);
7529}
7530
7531extern __inline __m512i
7532__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7533_mm512_andnot_epi32 (__m512i __A, __m512i __B)
7534{
7535 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7536 (__v16si) __B,
7537 (__v16si)
4271e5cb 7538 _mm512_undefined_epi32 (),
756c5857
AI
7539 (__mmask16) -1);
7540}
7541
7542extern __inline __m512i
7543__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7544_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
7545{
7546 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7547 (__v16si) __B,
7548 (__v16si) __W,
7549 (__mmask16) __U);
7550}
7551
7552extern __inline __m512i
7553__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7554_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7555{
7556 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
7557 (__v16si) __B,
7558 (__v16si)
7559 _mm512_setzero_si512 (),
7560 (__mmask16) __U);
7561}
7562
7563extern __inline __m512i
7564__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7565_mm512_andnot_epi64 (__m512i __A, __m512i __B)
7566{
7567 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
7568 (__v8di) __B,
7569 (__v8di)
4271e5cb 7570 _mm512_undefined_epi32 (),
756c5857
AI
7571 (__mmask8) -1);
7572}
7573
7574extern __inline __m512i
7575__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7576_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7577{
7578 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
7579 (__v8di) __B,
7580 (__v8di) __W, __U);
7581}
7582
7583extern __inline __m512i
7584__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7585_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7586{
7587 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
7588 (__v8di) __B,
7589 (__v8di)
7590 _mm512_setzero_pd (),
7591 __U);
7592}
7593
7594extern __inline __mmask16
7595__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7596_mm512_test_epi32_mask (__m512i __A, __m512i __B)
7597{
7598 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
7599 (__v16si) __B,
7600 (__mmask16) -1);
7601}
7602
7603extern __inline __mmask16
7604__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7605_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
7606{
7607 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
7608 (__v16si) __B, __U);
7609}
7610
7611extern __inline __mmask8
7612__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7613_mm512_test_epi64_mask (__m512i __A, __m512i __B)
7614{
7615 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
7616 (__v8di) __B,
7617 (__mmask8) -1);
7618}
7619
7620extern __inline __mmask8
7621__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7622_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
7623{
7624 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
7625}
7626
260d3642
IT
7627extern __inline __mmask16
7628__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7629_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
7630{
7631 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
7632 (__v16si) __B,
7633 (__mmask16) -1);
7634}
7635
7636extern __inline __mmask16
7637__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7638_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
7639{
7640 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
7641 (__v16si) __B, __U);
7642}
7643
7644extern __inline __mmask8
7645__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7646_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
7647{
7648 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
7649 (__v8di) __B,
7650 (__mmask8) -1);
7651}
7652
7653extern __inline __mmask8
7654__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7655_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
7656{
7657 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
7658 (__v8di) __B, __U);
7659}
7660
dcb2c527
JJ
7661extern __inline __m512
7662__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7663_mm512_abs_ps (__m512 __A)
7664{
7665 return (__m512) _mm512_and_epi32 ((__m512i) __A,
7666 _mm512_set1_epi32 (0x7fffffff));
7667}
7668
7669extern __inline __m512
7670__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7671_mm512_mask_abs_ps (__m512 __W, __mmask16 __U, __m512 __A)
7672{
7673 return (__m512) _mm512_mask_and_epi32 ((__m512i) __W, __U, (__m512i) __A,
7674 _mm512_set1_epi32 (0x7fffffff));
7675}
7676
7677extern __inline __m512d
7678__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7679_mm512_abs_pd (__m512 __A)
7680{
7681 return (__m512d) _mm512_and_epi64 ((__m512i) __A,
7682 _mm512_set1_epi64 (0x7fffffffffffffffLL));
7683}
7684
7685extern __inline __m512d
7686__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7687_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512 __A)
7688{
7689 return (__m512d)
7690 _mm512_mask_and_epi64 ((__m512i) __W, __U, (__m512i) __A,
7691 _mm512_set1_epi64 (0x7fffffffffffffffLL));
7692}
7693
756c5857
AI
7694extern __inline __m512i
7695__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7696_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
7697{
7698 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
7699 (__v16si) __B,
7700 (__v16si)
4271e5cb 7701 _mm512_undefined_epi32 (),
756c5857
AI
7702 (__mmask16) -1);
7703}
7704
7705extern __inline __m512i
7706__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7707_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
7708 __m512i __B)
7709{
7710 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
7711 (__v16si) __B,
7712 (__v16si) __W,
7713 (__mmask16) __U);
7714}
7715
7716extern __inline __m512i
7717__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7718_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7719{
7720 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
7721 (__v16si) __B,
7722 (__v16si)
7723 _mm512_setzero_si512 (),
7724 (__mmask16) __U);
7725}
7726
7727extern __inline __m512i
7728__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7729_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
7730{
7731 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
7732 (__v8di) __B,
7733 (__v8di)
4271e5cb 7734 _mm512_undefined_epi32 (),
756c5857
AI
7735 (__mmask8) -1);
7736}
7737
7738extern __inline __m512i
7739__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7740_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7741{
7742 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
7743 (__v8di) __B,
7744 (__v8di) __W,
7745 (__mmask8) __U);
7746}
7747
7748extern __inline __m512i
7749__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7750_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7751{
7752 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
7753 (__v8di) __B,
7754 (__v8di)
7755 _mm512_setzero_si512 (),
7756 (__mmask8) __U);
7757}
7758
7759extern __inline __m512i
7760__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7761_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
7762{
7763 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
7764 (__v16si) __B,
7765 (__v16si)
4271e5cb 7766 _mm512_undefined_epi32 (),
756c5857
AI
7767 (__mmask16) -1);
7768}
7769
7770extern __inline __m512i
7771__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7772_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
7773 __m512i __B)
7774{
7775 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
7776 (__v16si) __B,
7777 (__v16si) __W,
7778 (__mmask16) __U);
7779}
7780
7781extern __inline __m512i
7782__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7783_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
7784{
7785 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
7786 (__v16si) __B,
7787 (__v16si)
7788 _mm512_setzero_si512 (),
7789 (__mmask16) __U);
7790}
7791
7792extern __inline __m512i
7793__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7794_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
7795{
7796 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
7797 (__v8di) __B,
7798 (__v8di)
4271e5cb 7799 _mm512_undefined_epi32 (),
756c5857
AI
7800 (__mmask8) -1);
7801}
7802
7803extern __inline __m512i
7804__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7805_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
7806{
7807 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
7808 (__v8di) __B,
7809 (__v8di) __W,
7810 (__mmask8) __U);
7811}
7812
7813extern __inline __m512i
7814__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7815_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
7816{
7817 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
7818 (__v8di) __B,
7819 (__v8di)
7820 _mm512_setzero_si512 (),
7821 (__mmask8) __U);
7822}
7823
7824#ifdef __x86_64__
7825#ifdef __OPTIMIZE__
7826extern __inline unsigned long long
7827__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7828_mm_cvt_roundss_u64 (__m128 __A, const int __R)
7829{
7830 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf) __A, __R);
7831}
7832
7833extern __inline long long
7834__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7835_mm_cvt_roundss_si64 (__m128 __A, const int __R)
7836{
7837 return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R);
7838}
7839
7840extern __inline long long
7841__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7842_mm_cvt_roundss_i64 (__m128 __A, const int __R)
7843{
7844 return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R);
7845}
7846
7847extern __inline unsigned long long
7848__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7849_mm_cvtt_roundss_u64 (__m128 __A, const int __R)
7850{
7851 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf) __A, __R);
7852}
7853
7854extern __inline long long
7855__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7856_mm_cvtt_roundss_i64 (__m128 __A, const int __R)
7857{
7858 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R);
7859}
7860
7861extern __inline long long
7862__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7863_mm_cvtt_roundss_si64 (__m128 __A, const int __R)
7864{
7865 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R);
7866}
7867#else
7868#define _mm_cvt_roundss_u64(A, B) \
7869 ((unsigned long long)__builtin_ia32_vcvtss2usi64(A, B))
7870
7871#define _mm_cvt_roundss_si64(A, B) \
7872 ((long long)__builtin_ia32_vcvtss2si64(A, B))
7873
7874#define _mm_cvt_roundss_i64(A, B) \
7875 ((long long)__builtin_ia32_vcvtss2si64(A, B))
7876
7877#define _mm_cvtt_roundss_u64(A, B) \
7878 ((unsigned long long)__builtin_ia32_vcvttss2usi64(A, B))
7879
7880#define _mm_cvtt_roundss_i64(A, B) \
7881 ((long long)__builtin_ia32_vcvttss2si64(A, B))
7882
7883#define _mm_cvtt_roundss_si64(A, B) \
7884 ((long long)__builtin_ia32_vcvttss2si64(A, B))
7885#endif
7886#endif
7887
7888#ifdef __OPTIMIZE__
7889extern __inline unsigned
7890__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7891_mm_cvt_roundss_u32 (__m128 __A, const int __R)
7892{
7893 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A, __R);
7894}
7895
7896extern __inline int
7897__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7898_mm_cvt_roundss_si32 (__m128 __A, const int __R)
7899{
7900 return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R);
7901}
7902
7903extern __inline int
7904__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7905_mm_cvt_roundss_i32 (__m128 __A, const int __R)
7906{
7907 return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R);
7908}
7909
7910extern __inline unsigned
7911__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7912_mm_cvtt_roundss_u32 (__m128 __A, const int __R)
7913{
7914 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A, __R);
7915}
7916
7917extern __inline int
7918__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7919_mm_cvtt_roundss_i32 (__m128 __A, const int __R)
7920{
7921 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R);
7922}
7923
7924extern __inline int
7925__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7926_mm_cvtt_roundss_si32 (__m128 __A, const int __R)
7927{
7928 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R);
7929}
7930#else
7931#define _mm_cvt_roundss_u32(A, B) \
7932 ((unsigned)__builtin_ia32_vcvtss2usi32(A, B))
7933
7934#define _mm_cvt_roundss_si32(A, B) \
7935 ((int)__builtin_ia32_vcvtss2si32(A, B))
7936
7937#define _mm_cvt_roundss_i32(A, B) \
7938 ((int)__builtin_ia32_vcvtss2si32(A, B))
7939
7940#define _mm_cvtt_roundss_u32(A, B) \
7941 ((unsigned)__builtin_ia32_vcvttss2usi32(A, B))
7942
7943#define _mm_cvtt_roundss_si32(A, B) \
7944 ((int)__builtin_ia32_vcvttss2si32(A, B))
7945
7946#define _mm_cvtt_roundss_i32(A, B) \
7947 ((int)__builtin_ia32_vcvttss2si32(A, B))
7948#endif
7949
7950#ifdef __x86_64__
7951#ifdef __OPTIMIZE__
7952extern __inline unsigned long long
7953__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7954_mm_cvt_roundsd_u64 (__m128d __A, const int __R)
7955{
7956 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df) __A, __R);
7957}
7958
7959extern __inline long long
7960__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7961_mm_cvt_roundsd_si64 (__m128d __A, const int __R)
7962{
7963 return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R);
7964}
7965
7966extern __inline long long
7967__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7968_mm_cvt_roundsd_i64 (__m128d __A, const int __R)
7969{
7970 return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R);
7971}
7972
7973extern __inline unsigned long long
7974__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7975_mm_cvtt_roundsd_u64 (__m128d __A, const int __R)
7976{
7977 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df) __A, __R);
7978}
7979
7980extern __inline long long
7981__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7982_mm_cvtt_roundsd_si64 (__m128d __A, const int __R)
7983{
7984 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R);
7985}
7986
7987extern __inline long long
7988__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
7989_mm_cvtt_roundsd_i64 (__m128d __A, const int __R)
7990{
7991 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R);
7992}
7993#else
7994#define _mm_cvt_roundsd_u64(A, B) \
7995 ((unsigned long long)__builtin_ia32_vcvtsd2usi64(A, B))
7996
7997#define _mm_cvt_roundsd_si64(A, B) \
7998 ((long long)__builtin_ia32_vcvtsd2si64(A, B))
7999
8000#define _mm_cvt_roundsd_i64(A, B) \
8001 ((long long)__builtin_ia32_vcvtsd2si64(A, B))
8002
8003#define _mm_cvtt_roundsd_u64(A, B) \
8004 ((unsigned long long)__builtin_ia32_vcvttsd2usi64(A, B))
8005
8006#define _mm_cvtt_roundsd_si64(A, B) \
8007 ((long long)__builtin_ia32_vcvttsd2si64(A, B))
8008
8009#define _mm_cvtt_roundsd_i64(A, B) \
8010 ((long long)__builtin_ia32_vcvttsd2si64(A, B))
8011#endif
8012#endif
8013
8014#ifdef __OPTIMIZE__
8015extern __inline unsigned
8016__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8017_mm_cvt_roundsd_u32 (__m128d __A, const int __R)
8018{
8019 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A, __R);
8020}
8021
8022extern __inline int
8023__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8024_mm_cvt_roundsd_si32 (__m128d __A, const int __R)
8025{
8026 return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R);
8027}
8028
8029extern __inline int
8030__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8031_mm_cvt_roundsd_i32 (__m128d __A, const int __R)
8032{
8033 return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R);
8034}
8035
8036extern __inline unsigned
8037__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8038_mm_cvtt_roundsd_u32 (__m128d __A, const int __R)
8039{
8040 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A, __R);
8041}
8042
8043extern __inline int
8044__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8045_mm_cvtt_roundsd_i32 (__m128d __A, const int __R)
8046{
8047 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R);
8048}
8049
8050extern __inline int
8051__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8052_mm_cvtt_roundsd_si32 (__m128d __A, const int __R)
8053{
8054 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R);
8055}
8056#else
8057#define _mm_cvt_roundsd_u32(A, B) \
8058 ((unsigned)__builtin_ia32_vcvtsd2usi32(A, B))
8059
8060#define _mm_cvt_roundsd_si32(A, B) \
8061 ((int)__builtin_ia32_vcvtsd2si32(A, B))
8062
8063#define _mm_cvt_roundsd_i32(A, B) \
8064 ((int)__builtin_ia32_vcvtsd2si32(A, B))
8065
8066#define _mm_cvtt_roundsd_u32(A, B) \
8067 ((unsigned)__builtin_ia32_vcvttsd2usi32(A, B))
8068
8069#define _mm_cvtt_roundsd_si32(A, B) \
8070 ((int)__builtin_ia32_vcvttsd2si32(A, B))
8071
8072#define _mm_cvtt_roundsd_i32(A, B) \
8073 ((int)__builtin_ia32_vcvttsd2si32(A, B))
8074#endif
8075
8076extern __inline __m512d
8077__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8078_mm512_movedup_pd (__m512d __A)
8079{
8080 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
8081 (__v8df)
0b192937 8082 _mm512_undefined_pd (),
756c5857
AI
8083 (__mmask8) -1);
8084}
8085
8086extern __inline __m512d
8087__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8088_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
8089{
8090 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
8091 (__v8df) __W,
8092 (__mmask8) __U);
8093}
8094
8095extern __inline __m512d
8096__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8097_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
8098{
8099 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
8100 (__v8df)
8101 _mm512_setzero_pd (),
8102 (__mmask8) __U);
8103}
8104
8105extern __inline __m512d
8106__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8107_mm512_unpacklo_pd (__m512d __A, __m512d __B)
8108{
8109 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
8110 (__v8df) __B,
8111 (__v8df)
0b192937 8112 _mm512_undefined_pd (),
756c5857
AI
8113 (__mmask8) -1);
8114}
8115
8116extern __inline __m512d
8117__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8118_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
8119{
8120 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
8121 (__v8df) __B,
8122 (__v8df) __W,
8123 (__mmask8) __U);
8124}
8125
8126extern __inline __m512d
8127__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8128_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
8129{
8130 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
8131 (__v8df) __B,
8132 (__v8df)
8133 _mm512_setzero_pd (),
8134 (__mmask8) __U);
8135}
8136
8137extern __inline __m512d
8138__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8139_mm512_unpackhi_pd (__m512d __A, __m512d __B)
8140{
8141 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
8142 (__v8df) __B,
8143 (__v8df)
0b192937 8144 _mm512_undefined_pd (),
756c5857
AI
8145 (__mmask8) -1);
8146}
8147
8148extern __inline __m512d
8149__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8150_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
8151{
8152 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
8153 (__v8df) __B,
8154 (__v8df) __W,
8155 (__mmask8) __U);
8156}
8157
8158extern __inline __m512d
8159__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8160_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
8161{
8162 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
8163 (__v8df) __B,
8164 (__v8df)
8165 _mm512_setzero_pd (),
8166 (__mmask8) __U);
8167}
8168
8169extern __inline __m512
8170__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8171_mm512_unpackhi_ps (__m512 __A, __m512 __B)
8172{
8173 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
8174 (__v16sf) __B,
8175 (__v16sf)
0b192937 8176 _mm512_undefined_ps (),
756c5857
AI
8177 (__mmask16) -1);
8178}
8179
8180extern __inline __m512
8181__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8182_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
8183{
8184 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
8185 (__v16sf) __B,
8186 (__v16sf) __W,
8187 (__mmask16) __U);
8188}
8189
8190extern __inline __m512
8191__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8192_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
8193{
8194 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
8195 (__v16sf) __B,
8196 (__v16sf)
8197 _mm512_setzero_ps (),
8198 (__mmask16) __U);
8199}
8200
8201#ifdef __OPTIMIZE__
8202extern __inline __m512d
8203__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8204_mm512_cvt_roundps_pd (__m256 __A, const int __R)
8205{
8206 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8207 (__v8df)
0b192937 8208 _mm512_undefined_pd (),
756c5857
AI
8209 (__mmask8) -1, __R);
8210}
8211
8212extern __inline __m512d
8213__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8214_mm512_mask_cvt_roundps_pd (__m512d __W, __mmask8 __U, __m256 __A,
8215 const int __R)
8216{
8217 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8218 (__v8df) __W,
8219 (__mmask8) __U, __R);
8220}
8221
8222extern __inline __m512d
8223__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8224_mm512_maskz_cvt_roundps_pd (__mmask8 __U, __m256 __A, const int __R)
8225{
8226 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8227 (__v8df)
8228 _mm512_setzero_pd (),
8229 (__mmask8) __U, __R);
8230}
8231
8232extern __inline __m512
8233__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8234_mm512_cvt_roundph_ps (__m256i __A, const int __R)
8235{
8236 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
8237 (__v16sf)
0b192937 8238 _mm512_undefined_ps (),
756c5857
AI
8239 (__mmask16) -1, __R);
8240}
8241
8242extern __inline __m512
8243__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8244_mm512_mask_cvt_roundph_ps (__m512 __W, __mmask16 __U, __m256i __A,
8245 const int __R)
8246{
8247 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
8248 (__v16sf) __W,
8249 (__mmask16) __U, __R);
8250}
8251
8252extern __inline __m512
8253__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8254_mm512_maskz_cvt_roundph_ps (__mmask16 __U, __m256i __A, const int __R)
8255{
8256 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
8257 (__v16sf)
8258 _mm512_setzero_ps (),
8259 (__mmask16) __U, __R);
8260}
8261
8262extern __inline __m256i
8263__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8264_mm512_cvt_roundps_ph (__m512 __A, const int __I)
8265{
8266 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8267 __I,
8268 (__v16hi)
0b192937 8269 _mm256_undefined_si256 (),
756c5857
AI
8270 -1);
8271}
8272
8273extern __inline __m256i
8274__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8275_mm512_cvtps_ph (__m512 __A, const int __I)
8276{
8277 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8278 __I,
8279 (__v16hi)
0b192937 8280 _mm256_undefined_si256 (),
756c5857
AI
8281 -1);
8282}
8283
8284extern __inline __m256i
8285__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8286_mm512_mask_cvt_roundps_ph (__m256i __U, __mmask16 __W, __m512 __A,
8287 const int __I)
8288{
8289 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8290 __I,
8291 (__v16hi) __U,
8292 (__mmask16) __W);
8293}
8294
8295extern __inline __m256i
8296__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8297_mm512_mask_cvtps_ph (__m256i __U, __mmask16 __W, __m512 __A, const int __I)
8298{
8299 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8300 __I,
8301 (__v16hi) __U,
8302 (__mmask16) __W);
8303}
8304
8305extern __inline __m256i
8306__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8307_mm512_maskz_cvt_roundps_ph (__mmask16 __W, __m512 __A, const int __I)
8308{
8309 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8310 __I,
8311 (__v16hi)
8312 _mm256_setzero_si256 (),
8313 (__mmask16) __W);
8314}
8315
8316extern __inline __m256i
8317__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8318_mm512_maskz_cvtps_ph (__mmask16 __W, __m512 __A, const int __I)
8319{
8320 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
8321 __I,
8322 (__v16hi)
8323 _mm256_setzero_si256 (),
8324 (__mmask16) __W);
8325}
8326#else
8327#define _mm512_cvt_roundps_pd(A, B) \
0b192937 8328 (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, B)
756c5857
AI
8329
8330#define _mm512_mask_cvt_roundps_pd(W, U, A, B) \
8331 (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)(W), U, B)
8332
8333#define _mm512_maskz_cvt_roundps_pd(U, A, B) \
8334 (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), U, B)
8335
8336#define _mm512_cvt_roundph_ps(A, B) \
0b192937 8337 (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_undefined_ps(), -1, B)
756c5857
AI
8338
8339#define _mm512_mask_cvt_roundph_ps(W, U, A, B) \
8340 (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)(W), U, B)
8341
8342#define _mm512_maskz_cvt_roundph_ps(U, A, B) \
8343 (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), U, B)
8344
8345#define _mm512_cvt_roundps_ph(A, I) \
8346 ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
0b192937 8347 (__v16hi)_mm256_undefined_si256 (), -1))
756c5857
AI
8348#define _mm512_cvtps_ph(A, I) \
8349 ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
0b192937 8350 (__v16hi)_mm256_undefined_si256 (), -1))
756c5857
AI
8351#define _mm512_mask_cvt_roundps_ph(U, W, A, I) \
8352 ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
8353 (__v16hi)(__m256i)(U), (__mmask16) (W)))
8354#define _mm512_mask_cvtps_ph(U, W, A, I) \
8355 ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
8356 (__v16hi)(__m256i)(U), (__mmask16) (W)))
8357#define _mm512_maskz_cvt_roundps_ph(W, A, I) \
8358 ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
8359 (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W)))
8360#define _mm512_maskz_cvtps_ph(W, A, I) \
8361 ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\
8362 (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W)))
8363#endif
8364
8365#ifdef __OPTIMIZE__
8366extern __inline __m256
8367__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8368_mm512_cvt_roundpd_ps (__m512d __A, const int __R)
8369{
8370 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
8371 (__v8sf)
0b192937 8372 _mm256_undefined_ps (),
756c5857
AI
8373 (__mmask8) -1, __R);
8374}
8375
8376extern __inline __m256
8377__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8378_mm512_mask_cvt_roundpd_ps (__m256 __W, __mmask8 __U, __m512d __A,
8379 const int __R)
8380{
8381 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
8382 (__v8sf) __W,
8383 (__mmask8) __U, __R);
8384}
8385
8386extern __inline __m256
8387__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8388_mm512_maskz_cvt_roundpd_ps (__mmask8 __U, __m512d __A, const int __R)
8389{
8390 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
8391 (__v8sf)
8392 _mm256_setzero_ps (),
8393 (__mmask8) __U, __R);
8394}
8395
075691af
AI
8396extern __inline __m128
8397__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8398_mm_cvt_roundsd_ss (__m128 __A, __m128d __B, const int __R)
8399{
8400 return (__m128) __builtin_ia32_cvtsd2ss_round ((__v4sf) __A,
8401 (__v2df) __B,
8402 __R);
8403}
8404
8405extern __inline __m128d
8406__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8407_mm_cvt_roundss_sd (__m128d __A, __m128 __B, const int __R)
8408{
8409 return (__m128d) __builtin_ia32_cvtss2sd_round ((__v2df) __A,
8410 (__v4sf) __B,
8411 __R);
8412}
756c5857
AI
8413#else
8414#define _mm512_cvt_roundpd_ps(A, B) \
0b192937 8415 (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_undefined_ps(), -1, B)
756c5857
AI
8416
8417#define _mm512_mask_cvt_roundpd_ps(W, U, A, B) \
8418 (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)(W), U, B)
8419
8420#define _mm512_maskz_cvt_roundpd_ps(U, A, B) \
8421 (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), U, B)
075691af
AI
8422
8423#define _mm_cvt_roundsd_ss(A, B, C) \
8424 (__m128)__builtin_ia32_cvtsd2ss_round(A, B, C)
8425
8426#define _mm_cvt_roundss_sd(A, B, C) \
8427 (__m128d)__builtin_ia32_cvtss2sd_round(A, B, C)
756c5857
AI
8428#endif
8429
8430extern __inline void
8431__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8432_mm512_stream_si512 (__m512i * __P, __m512i __A)
8433{
8434 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8435}
8436
8437extern __inline void
8438__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8439_mm512_stream_ps (float *__P, __m512 __A)
8440{
8441 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8442}
8443
8444extern __inline void
8445__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8446_mm512_stream_pd (double *__P, __m512d __A)
8447{
8448 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8449}
8450
c56a42b9
KY
8451extern __inline __m512i
8452__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8453_mm512_stream_load_si512 (void *__P)
8454{
8455 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8456}
8457
9c3c2608
UB
8458/* Constants for mantissa extraction */
8459typedef enum
8460{
8461 _MM_MANT_NORM_1_2, /* interval [1, 2) */
8462 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
8463 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
8464 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
8465} _MM_MANTISSA_NORM_ENUM;
8466
8467typedef enum
8468{
8469 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
8470 _MM_MANT_SIGN_zero, /* sign = 0 */
8471 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
8472} _MM_MANTISSA_SIGN_ENUM;
8473
756c5857 8474#ifdef __OPTIMIZE__
075691af
AI
8475extern __inline __m128
8476__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8477_mm_getexp_round_ss (__m128 __A, __m128 __B, const int __R)
8478{
8479 return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A,
8480 (__v4sf) __B,
8481 __R);
8482}
8483
68d872d7
SP
8484extern __inline __m128
8485__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8486_mm_mask_getexp_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
8487 __m128 __B, const int __R)
8488{
8489 return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
8490 (__v4sf) __B,
8491 (__v4sf) __W,
8492 (__mmask8) __U, __R);
8493}
8494
8495extern __inline __m128
8496__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8497_mm_maskz_getexp_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
8498 const int __R)
8499{
8500 return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
8501 (__v4sf) __B,
8502 (__v4sf)
8503 _mm_setzero_ps (),
8504 (__mmask8) __U, __R);
8505}
8506
075691af
AI
8507extern __inline __m128d
8508__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8509_mm_getexp_round_sd (__m128d __A, __m128d __B, const int __R)
8510{
8511 return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A,
8512 (__v2df) __B,
8513 __R);
8514}
8515
68d872d7
SP
8516extern __inline __m128d
8517__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8518_mm_mask_getexp_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
8519 __m128d __B, const int __R)
8520{
8521 return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
8522 (__v2df) __B,
8523 (__v2df) __W,
8524 (__mmask8) __U, __R);
8525}
8526
8527extern __inline __m128d
8528__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8529_mm_maskz_getexp_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
8530 const int __R)
8531{
8532 return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
8533 (__v2df) __B,
8534 (__v2df)
8535 _mm_setzero_pd (),
8536 (__mmask8) __U, __R);
8537}
8538
756c5857
AI
8539extern __inline __m512
8540__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8541_mm512_getexp_round_ps (__m512 __A, const int __R)
8542{
8543 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8544 (__v16sf)
0b192937 8545 _mm512_undefined_ps (),
756c5857
AI
8546 (__mmask16) -1, __R);
8547}
8548
8549extern __inline __m512
8550__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8551_mm512_mask_getexp_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
8552 const int __R)
8553{
8554 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8555 (__v16sf) __W,
8556 (__mmask16) __U, __R);
8557}
8558
8559extern __inline __m512
8560__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8561_mm512_maskz_getexp_round_ps (__mmask16 __U, __m512 __A, const int __R)
8562{
8563 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8564 (__v16sf)
8565 _mm512_setzero_ps (),
8566 (__mmask16) __U, __R);
8567}
8568
8569extern __inline __m512d
8570__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8571_mm512_getexp_round_pd (__m512d __A, const int __R)
8572{
8573 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8574 (__v8df)
0b192937 8575 _mm512_undefined_pd (),
756c5857
AI
8576 (__mmask8) -1, __R);
8577}
8578
8579extern __inline __m512d
8580__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8581_mm512_mask_getexp_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
8582 const int __R)
8583{
8584 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8585 (__v8df) __W,
8586 (__mmask8) __U, __R);
8587}
8588
8589extern __inline __m512d
8590__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8591_mm512_maskz_getexp_round_pd (__mmask8 __U, __m512d __A, const int __R)
8592{
8593 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8594 (__v8df)
8595 _mm512_setzero_pd (),
8596 (__mmask8) __U, __R);
8597}
8598
756c5857
AI
8599extern __inline __m512d
8600__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8601_mm512_getmant_round_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B,
8602 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
8603{
8604 return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
8605 (__C << 2) | __B,
0b192937 8606 _mm512_undefined_pd (),
756c5857
AI
8607 (__mmask8) -1, __R);
8608}
8609
8610extern __inline __m512d
8611__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8612_mm512_mask_getmant_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
8613 _MM_MANTISSA_NORM_ENUM __B,
8614 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
8615{
8616 return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
8617 (__C << 2) | __B,
8618 (__v8df) __W, __U,
8619 __R);
8620}
8621
8622extern __inline __m512d
8623__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8624_mm512_maskz_getmant_round_pd (__mmask8 __U, __m512d __A,
8625 _MM_MANTISSA_NORM_ENUM __B,
8626 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
8627{
8628 return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
8629 (__C << 2) | __B,
8630 (__v8df)
8631 _mm512_setzero_pd (),
8632 __U, __R);
8633}
8634
8635extern __inline __m512
8636__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8637_mm512_getmant_round_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B,
8638 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
8639{
8640 return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
8641 (__C << 2) | __B,
0b192937 8642 _mm512_undefined_ps (),
756c5857
AI
8643 (__mmask16) -1, __R);
8644}
8645
8646extern __inline __m512
8647__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8648_mm512_mask_getmant_round_ps (__m512 __W, __mmask16 __U, __m512 __A,
8649 _MM_MANTISSA_NORM_ENUM __B,
8650 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
8651{
8652 return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
8653 (__C << 2) | __B,
8654 (__v16sf) __W, __U,
8655 __R);
8656}
8657
8658extern __inline __m512
8659__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8660_mm512_maskz_getmant_round_ps (__mmask16 __U, __m512 __A,
8661 _MM_MANTISSA_NORM_ENUM __B,
8662 _MM_MANTISSA_SIGN_ENUM __C, const int __R)
8663{
8664 return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
8665 (__C << 2) | __B,
8666 (__v16sf)
8667 _mm512_setzero_ps (),
8668 __U, __R);
8669}
8670
075691af
AI
8671extern __inline __m128d
8672__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8673_mm_getmant_round_sd (__m128d __A, __m128d __B,
8674 _MM_MANTISSA_NORM_ENUM __C,
8675 _MM_MANTISSA_SIGN_ENUM __D, const int __R)
8676{
8677 return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A,
8678 (__v2df) __B,
8679 (__D << 2) | __C,
8680 __R);
8681}
8682
68d872d7
SP
8683extern __inline __m128d
8684__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8685_mm_mask_getmant_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
8686 __m128d __B, _MM_MANTISSA_NORM_ENUM __C,
8687 _MM_MANTISSA_SIGN_ENUM __D, const int __R)
8688{
8689 return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
8690 (__v2df) __B,
8691 (__D << 2) | __C,
8692 (__v2df) __W,
8693 __U, __R);
8694}
8695
8696extern __inline __m128d
8697__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8698_mm_maskz_getmant_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
8699 _MM_MANTISSA_NORM_ENUM __C,
8700 _MM_MANTISSA_SIGN_ENUM __D, const int __R)
8701{
8702 return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
8703 (__v2df) __B,
8704 (__D << 2) | __C,
8705 (__v2df)
8706 _mm_setzero_pd(),
8707 __U, __R);
8708}
8709
075691af
AI
8710extern __inline __m128
8711__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8712_mm_getmant_round_ss (__m128 __A, __m128 __B,
8713 _MM_MANTISSA_NORM_ENUM __C,
8714 _MM_MANTISSA_SIGN_ENUM __D, const int __R)
8715{
8716 return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A,
8717 (__v4sf) __B,
8718 (__D << 2) | __C,
8719 __R);
8720}
8721
68d872d7
SP
8722extern __inline __m128
8723__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8724_mm_mask_getmant_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
8725 __m128 __B, _MM_MANTISSA_NORM_ENUM __C,
8726 _MM_MANTISSA_SIGN_ENUM __D, const int __R)
8727{
8728 return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
8729 (__v4sf) __B,
8730 (__D << 2) | __C,
8731 (__v4sf) __W,
8732 __U, __R);
8733}
8734
8735extern __inline __m128
8736__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8737_mm_maskz_getmant_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
8738 _MM_MANTISSA_NORM_ENUM __C,
8739 _MM_MANTISSA_SIGN_ENUM __D, const int __R)
8740{
8741 return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
8742 (__v4sf) __B,
8743 (__D << 2) | __C,
8744 (__v4sf)
8745 _mm_setzero_ps(),
8746 __U, __R);
8747}
8748
756c5857
AI
8749#else
8750#define _mm512_getmant_round_pd(X, B, C, R) \
8751 ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
8752 (int)(((C)<<2) | (B)), \
0b192937 8753 (__v8df)(__m512d)_mm512_undefined_pd(), \
756c5857
AI
8754 (__mmask8)-1,\
8755 (R)))
8756
8757#define _mm512_mask_getmant_round_pd(W, U, X, B, C, R) \
8758 ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
8759 (int)(((C)<<2) | (B)), \
8760 (__v8df)(__m512d)(W), \
8761 (__mmask8)(U),\
8762 (R)))
8763
8764#define _mm512_maskz_getmant_round_pd(U, X, B, C, R) \
8765 ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
8766 (int)(((C)<<2) | (B)), \
8767 (__v8df)(__m512d)_mm512_setzero_pd(), \
8768 (__mmask8)(U),\
8769 (R)))
8770#define _mm512_getmant_round_ps(X, B, C, R) \
8771 ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
8772 (int)(((C)<<2) | (B)), \
0b192937 8773 (__v16sf)(__m512)_mm512_undefined_ps(), \
756c5857
AI
8774 (__mmask16)-1,\
8775 (R)))
8776
8777#define _mm512_mask_getmant_round_ps(W, U, X, B, C, R) \
8778 ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
8779 (int)(((C)<<2) | (B)), \
8780 (__v16sf)(__m512)(W), \
8781 (__mmask16)(U),\
8782 (R)))
8783
8784#define _mm512_maskz_getmant_round_ps(U, X, B, C, R) \
8785 ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
8786 (int)(((C)<<2) | (B)), \
8787 (__v16sf)(__m512)_mm512_setzero_ps(), \
8788 (__mmask16)(U),\
8789 (R)))
075691af
AI
8790#define _mm_getmant_round_sd(X, Y, C, D, R) \
8791 ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X), \
8792 (__v2df)(__m128d)(Y), \
8793 (int)(((D)<<2) | (C)), \
8794 (R)))
8795
68d872d7
SP
8796#define _mm_mask_getmant_round_sd(W, U, X, Y, C, D, R) \
8797 ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
8798 (__v2df)(__m128d)(Y), \
8799 (int)(((D)<<2) | (C)), \
8800 (__v2df)(__m128d)(W), \
8801 (__mmask8)(U),\
8802 (R)))
8803
8804#define _mm_maskz_getmant_round_sd(U, X, Y, C, D, R) \
8805 ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
8806 (__v2df)(__m128d)(Y), \
8807 (int)(((D)<<2) | (C)), \
8808 (__v2df)(__m128d)_mm_setzero_pd(), \
8809 (__mmask8)(U),\
8810 (R)))
8811
075691af
AI
8812#define _mm_getmant_round_ss(X, Y, C, D, R) \
8813 ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X), \
8814 (__v4sf)(__m128)(Y), \
8815 (int)(((D)<<2) | (C)), \
8816 (R)))
8817
68d872d7
SP
8818#define _mm_mask_getmant_round_ss(W, U, X, Y, C, D, R) \
8819 ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
8820 (__v4sf)(__m128)(Y), \
8821 (int)(((D)<<2) | (C)), \
8822 (__v4sf)(__m128)(W), \
8823 (__mmask8)(U),\
8824 (R)))
8825
8826#define _mm_maskz_getmant_round_ss(U, X, Y, C, D, R) \
8827 ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
8828 (__v4sf)(__m128)(Y), \
8829 (int)(((D)<<2) | (C)), \
8830 (__v4sf)(__m128)_mm_setzero_ps(), \
8831 (__mmask8)(U),\
8832 (R)))
8833
075691af
AI
8834#define _mm_getexp_round_ss(A, B, R) \
8835 ((__m128)__builtin_ia32_getexpss128_round((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), R))
8836
68d872d7
SP
8837#define _mm_mask_getexp_round_ss(W, U, A, B, C) \
8838 (__m128)__builtin_ia32_getexpss_mask_round(A, B, W, U, C)
8839
8840#define _mm_maskz_getexp_round_ss(U, A, B, C) \
8841 (__m128)__builtin_ia32_getexpss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
8842
075691af
AI
8843#define _mm_getexp_round_sd(A, B, R) \
8844 ((__m128d)__builtin_ia32_getexpsd128_round((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), R))
8845
68d872d7
SP
8846#define _mm_mask_getexp_round_sd(W, U, A, B, C) \
8847 (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, W, U, C)
8848
8849#define _mm_maskz_getexp_round_sd(U, A, B, C) \
8850 (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
8851
8852
756c5857
AI
8853#define _mm512_getexp_round_ps(A, R) \
8854 ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
0b192937 8855 (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, R))
756c5857
AI
8856
8857#define _mm512_mask_getexp_round_ps(W, U, A, R) \
8858 ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8859 (__v16sf)(__m512)(W), (__mmask16)(U), R))
8860
8861#define _mm512_maskz_getexp_round_ps(U, A, R) \
8862 ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8863 (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), R))
8864
8865#define _mm512_getexp_round_pd(A, R) \
8866 ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
0b192937 8867 (__v8df)_mm512_undefined_pd(), (__mmask8)-1, R))
756c5857
AI
8868
8869#define _mm512_mask_getexp_round_pd(W, U, A, R) \
8870 ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8871 (__v8df)(__m512d)(W), (__mmask8)(U), R))
8872
8873#define _mm512_maskz_getexp_round_pd(U, A, R) \
8874 ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8875 (__v8df)_mm512_setzero_pd(), (__mmask8)(U), R))
8876#endif
8877
8878#ifdef __OPTIMIZE__
8879extern __inline __m512
8880__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8881_mm512_roundscale_round_ps (__m512 __A, const int __imm, const int __R)
8882{
8883 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
0b192937
UD
8884 (__v16sf)
8885 _mm512_undefined_ps (),
8886 -1, __R);
756c5857
AI
8887}
8888
8889extern __inline __m512
8890__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8891_mm512_mask_roundscale_round_ps (__m512 __A, __mmask16 __B, __m512 __C,
8892 const int __imm, const int __R)
8893{
8894 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,
8895 (__v16sf) __A,
8896 (__mmask16) __B, __R);
8897}
8898
8899extern __inline __m512
8900__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8901_mm512_maskz_roundscale_round_ps (__mmask16 __A, __m512 __B,
8902 const int __imm, const int __R)
8903{
8904 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B,
8905 __imm,
8906 (__v16sf)
8907 _mm512_setzero_ps (),
8908 (__mmask16) __A, __R);
8909}
8910
8911extern __inline __m512d
8912__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8913_mm512_roundscale_round_pd (__m512d __A, const int __imm, const int __R)
8914{
8915 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
0b192937
UD
8916 (__v8df)
8917 _mm512_undefined_pd (),
8918 -1, __R);
756c5857
AI
8919}
8920
8921extern __inline __m512d
8922__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8923_mm512_mask_roundscale_round_pd (__m512d __A, __mmask8 __B,
8924 __m512d __C, const int __imm, const int __R)
8925{
8926 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,
8927 (__v8df) __A,
8928 (__mmask8) __B, __R);
8929}
8930
8931extern __inline __m512d
8932__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8933_mm512_maskz_roundscale_round_pd (__mmask8 __A, __m512d __B,
8934 const int __imm, const int __R)
8935{
8936 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B,
8937 __imm,
8938 (__v8df)
8939 _mm512_setzero_pd (),
8940 (__mmask8) __A, __R);
8941}
075691af
AI
8942
8943extern __inline __m128
8944__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8945_mm_roundscale_round_ss (__m128 __A, __m128 __B, const int __imm, const int __R)
8946{
8947 return (__m128) __builtin_ia32_rndscaless_round ((__v4sf) __A,
8948 (__v4sf) __B, __imm, __R);
8949}
8950
8951extern __inline __m128d
8952__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8953_mm_roundscale_round_sd (__m128d __A, __m128d __B, const int __imm,
8954 const int __R)
8955{
8956 return (__m128d) __builtin_ia32_rndscalesd_round ((__v2df) __A,
8957 (__v2df) __B, __imm, __R);
8958}
8959
756c5857
AI
8960#else
8961#define _mm512_roundscale_round_ps(A, B, R) \
8962 ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\
0b192937 8963 (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), R))
756c5857
AI
8964#define _mm512_mask_roundscale_round_ps(A, B, C, D, R) \
8965 ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \
8966 (int)(D), \
8967 (__v16sf)(__m512)(A), \
8968 (__mmask16)(B), R))
8969#define _mm512_maskz_roundscale_round_ps(A, B, C, R) \
8970 ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \
8971 (int)(C), \
8972 (__v16sf)_mm512_setzero_ps(),\
8973 (__mmask16)(A), R))
8974#define _mm512_roundscale_round_pd(A, B, R) \
8975 ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\
0b192937 8976 (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), R))
756c5857
AI
8977#define _mm512_mask_roundscale_round_pd(A, B, C, D, R) \
8978 ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \
8979 (int)(D), \
8980 (__v8df)(__m512d)(A), \
8981 (__mmask8)(B), R))
8982#define _mm512_maskz_roundscale_round_pd(A, B, C, R) \
8983 ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \
8984 (int)(C), \
8985 (__v8df)_mm512_setzero_pd(),\
8986 (__mmask8)(A), R))
075691af
AI
8987#define _mm_roundscale_round_ss(A, B, C, R) \
8988 ((__m128) __builtin_ia32_rndscaless_round ((__v4sf)(__m128)(A), \
8989 (__v4sf)(__m128)(B), (int)(C), R))
8990#define _mm_roundscale_round_sd(A, B, C, R) \
8991 ((__m128d) __builtin_ia32_rndscalesd_round ((__v2df)(__m128d)(A), \
8992 (__v2df)(__m128d)(B), (int)(C), R))
756c5857
AI
8993#endif
8994
8995extern __inline __m512
8996__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
8997_mm512_floor_ps (__m512 __A)
8998{
8999 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9000 _MM_FROUND_FLOOR,
9001 (__v16sf) __A, -1,
9002 _MM_FROUND_CUR_DIRECTION);
9003}
9004
9005extern __inline __m512d
9006__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9007_mm512_floor_pd (__m512d __A)
9008{
9009 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9010 _MM_FROUND_FLOOR,
9011 (__v8df) __A, -1,
9012 _MM_FROUND_CUR_DIRECTION);
9013}
9014
9015extern __inline __m512
9016__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9017_mm512_ceil_ps (__m512 __A)
9018{
9019 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9020 _MM_FROUND_CEIL,
9021 (__v16sf) __A, -1,
9022 _MM_FROUND_CUR_DIRECTION);
9023}
9024
9025extern __inline __m512d
9026__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9027_mm512_ceil_pd (__m512d __A)
9028{
9029 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9030 _MM_FROUND_CEIL,
9031 (__v8df) __A, -1,
9032 _MM_FROUND_CUR_DIRECTION);
9033}
9034
9035extern __inline __m512
9036__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9037_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
9038{
9039 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9040 _MM_FROUND_FLOOR,
9041 (__v16sf) __W, __U,
9042 _MM_FROUND_CUR_DIRECTION);
9043}
9044
9045extern __inline __m512d
9046__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9047_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
9048{
9049 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9050 _MM_FROUND_FLOOR,
9051 (__v8df) __W, __U,
9052 _MM_FROUND_CUR_DIRECTION);
9053}
9054
9055extern __inline __m512
9056__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9057_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
9058{
9059 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
9060 _MM_FROUND_CEIL,
9061 (__v16sf) __W, __U,
9062 _MM_FROUND_CUR_DIRECTION);
9063}
9064
9065extern __inline __m512d
9066__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9067_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
9068{
9069 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
9070 _MM_FROUND_CEIL,
9071 (__v8df) __W, __U,
9072 _MM_FROUND_CUR_DIRECTION);
9073}
9074
756c5857 9075#ifdef __OPTIMIZE__
756c5857
AI
9076extern __inline __m512i
9077__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9078_mm512_alignr_epi32 (__m512i __A, __m512i __B, const int __imm)
9079{
9080 return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
9081 (__v16si) __B, __imm,
9082 (__v16si)
4271e5cb 9083 _mm512_undefined_epi32 (),
756c5857
AI
9084 (__mmask16) -1);
9085}
9086
9087extern __inline __m512i
9088__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9089_mm512_mask_alignr_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
9090 __m512i __B, const int __imm)
9091{
9092 return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
9093 (__v16si) __B, __imm,
9094 (__v16si) __W,
9095 (__mmask16) __U);
9096}
9097
9098extern __inline __m512i
9099__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9100_mm512_maskz_alignr_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
9101 const int __imm)
9102{
9103 return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
9104 (__v16si) __B, __imm,
9105 (__v16si)
9106 _mm512_setzero_si512 (),
9107 (__mmask16) __U);
9108}
9109
9110extern __inline __m512i
9111__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9112_mm512_alignr_epi64 (__m512i __A, __m512i __B, const int __imm)
9113{
9114 return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
9115 (__v8di) __B, __imm,
9116 (__v8di)
4271e5cb 9117 _mm512_undefined_epi32 (),
756c5857
AI
9118 (__mmask8) -1);
9119}
9120
9121extern __inline __m512i
9122__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9123_mm512_mask_alignr_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
9124 __m512i __B, const int __imm)
9125{
9126 return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
9127 (__v8di) __B, __imm,
9128 (__v8di) __W,
9129 (__mmask8) __U);
9130}
9131
9132extern __inline __m512i
9133__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9134_mm512_maskz_alignr_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
9135 const int __imm)
9136{
9137 return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
9138 (__v8di) __B, __imm,
9139 (__v8di)
9140 _mm512_setzero_si512 (),
9141 (__mmask8) __U);
9142}
9143#else
756c5857
AI
9144#define _mm512_alignr_epi32(X, Y, C) \
9145 ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \
4271e5cb 9146 (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_undefined_epi32 (),\
756c5857
AI
9147 (__mmask16)-1))
9148
9149#define _mm512_mask_alignr_epi32(W, U, X, Y, C) \
9150 ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \
9151 (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)(W), \
9152 (__mmask16)(U)))
9153
9154#define _mm512_maskz_alignr_epi32(U, X, Y, C) \
9155 ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \
0b192937 9156 (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_setzero_si512 (),\
756c5857
AI
9157 (__mmask16)(U)))
9158
9159#define _mm512_alignr_epi64(X, Y, C) \
9160 ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \
4271e5cb 9161 (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_undefined_epi32 (), \
0b192937 9162 (__mmask8)-1))
756c5857
AI
9163
9164#define _mm512_mask_alignr_epi64(W, U, X, Y, C) \
9165 ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \
9166 (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)(W), (__mmask8)(U)))
9167
9168#define _mm512_maskz_alignr_epi64(U, X, Y, C) \
9169 ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \
0b192937 9170 (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_setzero_si512 (),\
756c5857
AI
9171 (__mmask8)(U)))
9172#endif
9173
9174extern __inline __mmask16
9175__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9176_mm512_cmpeq_epi32_mask (__m512i __A, __m512i __B)
9177{
9178 return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A,
9179 (__v16si) __B,
9180 (__mmask16) -1);
9181}
9182
9183extern __inline __mmask16
9184__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9185_mm512_mask_cmpeq_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
9186{
9187 return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A,
9188 (__v16si) __B, __U);
9189}
9190
9191extern __inline __mmask8
9192__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9193_mm512_mask_cmpeq_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
9194{
9195 return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A,
9196 (__v8di) __B, __U);
9197}
9198
9199extern __inline __mmask8
9200__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9201_mm512_cmpeq_epi64_mask (__m512i __A, __m512i __B)
9202{
9203 return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A,
9204 (__v8di) __B,
9205 (__mmask8) -1);
9206}
9207
9208extern __inline __mmask16
9209__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9210_mm512_cmpgt_epi32_mask (__m512i __A, __m512i __B)
9211{
9212 return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A,
9213 (__v16si) __B,
9214 (__mmask16) -1);
9215}
9216
9217extern __inline __mmask16
9218__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9219_mm512_mask_cmpgt_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
9220{
9221 return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A,
9222 (__v16si) __B, __U);
9223}
9224
9225extern __inline __mmask8
9226__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9227_mm512_mask_cmpgt_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
9228{
9229 return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A,
9230 (__v8di) __B, __U);
9231}
9232
9233extern __inline __mmask8
9234__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9235_mm512_cmpgt_epi64_mask (__m512i __A, __m512i __B)
9236{
9237 return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A,
9238 (__v8di) __B,
9239 (__mmask8) -1);
9240}
9241
d256b866
IT
9242extern __inline __mmask16
9243__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9244_mm512_cmpge_epi32_mask (__m512i __X, __m512i __Y)
9245{
9246 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9247 (__v16si) __Y, 5,
9248 (__mmask16) -1);
9249}
9250
275be1da
IT
9251extern __inline __mmask16
9252__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9253_mm512_mask_cmpge_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9254{
9255 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9256 (__v16si) __Y, 5,
9257 (__mmask16) __M);
9258}
9259
9260extern __inline __mmask16
9261__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9262_mm512_mask_cmpge_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9263{
9264 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9265 (__v16si) __Y, 5,
9266 (__mmask16) __M);
9267}
9268
d256b866
IT
9269extern __inline __mmask16
9270__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9271_mm512_cmpge_epu32_mask (__m512i __X, __m512i __Y)
9272{
9273 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9274 (__v16si) __Y, 5,
9275 (__mmask16) -1);
9276}
9277
275be1da
IT
9278extern __inline __mmask8
9279__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9280_mm512_mask_cmpge_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9281{
9282 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9283 (__v8di) __Y, 5,
9284 (__mmask8) __M);
9285}
9286
d256b866
IT
9287extern __inline __mmask8
9288__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9289_mm512_cmpge_epi64_mask (__m512i __X, __m512i __Y)
9290{
9291 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9292 (__v8di) __Y, 5,
9293 (__mmask8) -1);
9294}
9295
275be1da
IT
9296extern __inline __mmask8
9297__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9298_mm512_mask_cmpge_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9299{
9300 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9301 (__v8di) __Y, 5,
9302 (__mmask8) __M);
9303}
9304
d256b866
IT
9305extern __inline __mmask8
9306__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9307_mm512_cmpge_epu64_mask (__m512i __X, __m512i __Y)
9308{
9309 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9310 (__v8di) __Y, 5,
9311 (__mmask8) -1);
9312}
9313
275be1da
IT
9314extern __inline __mmask16
9315__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9316_mm512_mask_cmple_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9317{
9318 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9319 (__v16si) __Y, 2,
9320 (__mmask16) __M);
9321}
9322
d256b866
IT
9323extern __inline __mmask16
9324__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9325_mm512_cmple_epi32_mask (__m512i __X, __m512i __Y)
9326{
9327 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9328 (__v16si) __Y, 2,
9329 (__mmask16) -1);
9330}
9331
275be1da
IT
9332extern __inline __mmask16
9333__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9334_mm512_mask_cmple_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9335{
9336 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9337 (__v16si) __Y, 2,
9338 (__mmask16) __M);
9339}
9340
d256b866
IT
9341extern __inline __mmask16
9342__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9343_mm512_cmple_epu32_mask (__m512i __X, __m512i __Y)
9344{
9345 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9346 (__v16si) __Y, 2,
9347 (__mmask16) -1);
9348}
9349
275be1da
IT
9350extern __inline __mmask8
9351__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9352_mm512_mask_cmple_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9353{
9354 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9355 (__v8di) __Y, 2,
9356 (__mmask8) __M);
9357}
9358
d256b866
IT
9359extern __inline __mmask8
9360__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9361_mm512_cmple_epi64_mask (__m512i __X, __m512i __Y)
9362{
9363 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9364 (__v8di) __Y, 2,
9365 (__mmask8) -1);
9366}
9367
275be1da
IT
9368extern __inline __mmask8
9369__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9370_mm512_mask_cmple_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9371{
9372 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9373 (__v8di) __Y, 2,
9374 (__mmask8) __M);
9375}
9376
d256b866
IT
9377extern __inline __mmask8
9378__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9379_mm512_cmple_epu64_mask (__m512i __X, __m512i __Y)
9380{
9381 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9382 (__v8di) __Y, 2,
9383 (__mmask8) -1);
9384}
9385
275be1da
IT
9386extern __inline __mmask16
9387__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9388_mm512_mask_cmplt_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9389{
9390 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9391 (__v16si) __Y, 1,
9392 (__mmask16) __M);
9393}
9394
d256b866
IT
9395extern __inline __mmask16
9396__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9397_mm512_cmplt_epi32_mask (__m512i __X, __m512i __Y)
9398{
9399 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9400 (__v16si) __Y, 1,
9401 (__mmask16) -1);
9402}
9403
275be1da
IT
9404extern __inline __mmask16
9405__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9406_mm512_mask_cmplt_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9407{
9408 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9409 (__v16si) __Y, 1,
9410 (__mmask16) __M);
9411}
9412
d256b866
IT
9413extern __inline __mmask16
9414__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9415_mm512_cmplt_epu32_mask (__m512i __X, __m512i __Y)
9416{
9417 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9418 (__v16si) __Y, 1,
9419 (__mmask16) -1);
9420}
9421
275be1da
IT
9422extern __inline __mmask8
9423__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9424_mm512_mask_cmplt_epi64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9425{
9426 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9427 (__v8di) __Y, 1,
9428 (__mmask8) __M);
9429}
9430
d256b866
IT
9431extern __inline __mmask8
9432__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9433_mm512_cmplt_epi64_mask (__m512i __X, __m512i __Y)
9434{
9435 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9436 (__v8di) __Y, 1,
9437 (__mmask8) -1);
9438}
9439
275be1da
IT
9440extern __inline __mmask8
9441__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9442_mm512_mask_cmplt_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9443{
9444 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9445 (__v8di) __Y, 1,
9446 (__mmask8) __M);
9447}
9448
d256b866
IT
9449extern __inline __mmask8
9450__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9451_mm512_cmplt_epu64_mask (__m512i __X, __m512i __Y)
9452{
9453 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9454 (__v8di) __Y, 1,
9455 (__mmask8) -1);
9456}
9457
9458extern __inline __mmask16
9459__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9460_mm512_cmpneq_epi32_mask (__m512i __X, __m512i __Y)
9461{
9462 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9463 (__v16si) __Y, 4,
9464 (__mmask16) -1);
9465}
9466
275be1da
IT
9467extern __inline __mmask16
9468__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9469_mm512_mask_cmpneq_epi32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9470{
9471 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9472 (__v16si) __Y, 4,
9473 (__mmask16) __M);
9474}
9475
9476extern __inline __mmask16
9477__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9478_mm512_mask_cmpneq_epu32_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9479{
9480 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9481 (__v16si) __Y, 4,
9482 (__mmask16) __M);
9483}
9484
d256b866
IT
9485extern __inline __mmask16
9486__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9487_mm512_cmpneq_epu32_mask (__m512i __X, __m512i __Y)
9488{
9489 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9490 (__v16si) __Y, 4,
9491 (__mmask16) -1);
9492}
9493
275be1da
IT
9494extern __inline __mmask8
9495__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9496_mm512_mask_cmpneq_epi64_mask (__mmask16 __M, __m512i __X, __m512i __Y)
9497{
9498 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9499 (__v8di) __Y, 4,
9500 (__mmask8) __M);
9501}
9502
d256b866
IT
9503extern __inline __mmask8
9504__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9505_mm512_cmpneq_epi64_mask (__m512i __X, __m512i __Y)
9506{
9507 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9508 (__v8di) __Y, 4,
9509 (__mmask8) -1);
9510}
9511
275be1da
IT
9512extern __inline __mmask8
9513__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9514_mm512_mask_cmpneq_epu64_mask (__mmask8 __M, __m512i __X, __m512i __Y)
9515{
9516 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9517 (__v8di) __Y, 4,
9518 (__mmask8) __M);
9519}
9520
d256b866
IT
9521extern __inline __mmask8
9522__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9523_mm512_cmpneq_epu64_mask (__m512i __X, __m512i __Y)
9524{
9525 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9526 (__v8di) __Y, 4,
9527 (__mmask8) -1);
9528}
9529
756c5857
AI
9530#define _MM_CMPINT_EQ 0x0
9531#define _MM_CMPINT_LT 0x1
9532#define _MM_CMPINT_LE 0x2
9533#define _MM_CMPINT_UNUSED 0x3
9534#define _MM_CMPINT_NE 0x4
9535#define _MM_CMPINT_NLT 0x5
9536#define _MM_CMPINT_GE 0x5
9537#define _MM_CMPINT_NLE 0x6
9538#define _MM_CMPINT_GT 0x6
9539
9540#ifdef __OPTIMIZE__
d8ea3e7c
AS
9541extern __inline __mmask16
9542__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9543_kshiftli_mask16 (__mmask16 __A, unsigned int __B)
9544{
9545 return (__mmask16) __builtin_ia32_kshiftlihi ((__mmask16) __A,
9546 (__mmask8) __B);
9547}
9548
9549extern __inline __mmask16
9550__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9551_kshiftri_mask16 (__mmask16 __A, unsigned int __B)
9552{
9553 return (__mmask16) __builtin_ia32_kshiftrihi ((__mmask16) __A,
9554 (__mmask8) __B);
9555}
9556
756c5857
AI
9557extern __inline __mmask8
9558__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9559_mm512_cmp_epi64_mask (__m512i __X, __m512i __Y, const int __P)
9560{
9561 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9562 (__v8di) __Y, __P,
9563 (__mmask8) -1);
9564}
9565
9566extern __inline __mmask16
9567__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9568_mm512_cmp_epi32_mask (__m512i __X, __m512i __Y, const int __P)
9569{
9570 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9571 (__v16si) __Y, __P,
9572 (__mmask16) -1);
9573}
9574
9575extern __inline __mmask8
9576__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9577_mm512_cmp_epu64_mask (__m512i __X, __m512i __Y, const int __P)
9578{
9579 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9580 (__v8di) __Y, __P,
9581 (__mmask8) -1);
9582}
9583
9584extern __inline __mmask16
9585__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9586_mm512_cmp_epu32_mask (__m512i __X, __m512i __Y, const int __P)
9587{
9588 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9589 (__v16si) __Y, __P,
9590 (__mmask16) -1);
9591}
9592
9593extern __inline __mmask8
9594__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9595_mm512_cmp_round_pd_mask (__m512d __X, __m512d __Y, const int __P,
9596 const int __R)
9597{
9598 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
9599 (__v8df) __Y, __P,
9600 (__mmask8) -1, __R);
9601}
9602
9603extern __inline __mmask16
9604__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9605_mm512_cmp_round_ps_mask (__m512 __X, __m512 __Y, const int __P, const int __R)
9606{
9607 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
9608 (__v16sf) __Y, __P,
9609 (__mmask16) -1, __R);
9610}
9611
9612extern __inline __mmask8
9613__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9614_mm512_mask_cmp_epi64_mask (__mmask8 __U, __m512i __X, __m512i __Y,
9615 const int __P)
9616{
9617 return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X,
9618 (__v8di) __Y, __P,
9619 (__mmask8) __U);
9620}
9621
9622extern __inline __mmask16
9623__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9624_mm512_mask_cmp_epi32_mask (__mmask16 __U, __m512i __X, __m512i __Y,
9625 const int __P)
9626{
9627 return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X,
9628 (__v16si) __Y, __P,
9629 (__mmask16) __U);
9630}
9631
9632extern __inline __mmask8
9633__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9634_mm512_mask_cmp_epu64_mask (__mmask8 __U, __m512i __X, __m512i __Y,
9635 const int __P)
9636{
9637 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X,
9638 (__v8di) __Y, __P,
9639 (__mmask8) __U);
9640}
9641
9642extern __inline __mmask16
9643__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9644_mm512_mask_cmp_epu32_mask (__mmask16 __U, __m512i __X, __m512i __Y,
9645 const int __P)
9646{
9647 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X,
9648 (__v16si) __Y, __P,
9649 (__mmask16) __U);
9650}
9651
9652extern __inline __mmask8
9653__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9654_mm512_mask_cmp_round_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y,
9655 const int __P, const int __R)
9656{
9657 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
9658 (__v8df) __Y, __P,
9659 (__mmask8) __U, __R);
9660}
9661
9662extern __inline __mmask16
9663__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9664_mm512_mask_cmp_round_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y,
9665 const int __P, const int __R)
9666{
9667 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
9668 (__v16sf) __Y, __P,
9669 (__mmask16) __U, __R);
9670}
9671
9672extern __inline __mmask8
9673__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9674_mm_cmp_round_sd_mask (__m128d __X, __m128d __Y, const int __P, const int __R)
9675{
9676 return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
9677 (__v2df) __Y, __P,
9678 (__mmask8) -1, __R);
9679}
9680
9681extern __inline __mmask8
9682__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9683_mm_mask_cmp_round_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y,
9684 const int __P, const int __R)
9685{
9686 return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
9687 (__v2df) __Y, __P,
9688 (__mmask8) __M, __R);
9689}
9690
9691extern __inline __mmask8
9692__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9693_mm_cmp_round_ss_mask (__m128 __X, __m128 __Y, const int __P, const int __R)
9694{
9695 return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
9696 (__v4sf) __Y, __P,
9697 (__mmask8) -1, __R);
9698}
9699
9700extern __inline __mmask8
9701__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9702_mm_mask_cmp_round_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y,
9703 const int __P, const int __R)
9704{
9705 return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
9706 (__v4sf) __Y, __P,
9707 (__mmask8) __M, __R);
9708}
9709
9710#else
d8ea3e7c
AS
9711#define _kshiftli_mask16(X, Y) \
9712 ((__mmask16) __builtin_ia32_kshiftlihi ((__mmask16)(X), (__mmask8)(Y)))
9713
9714#define _kshiftri_mask16(X, Y) \
9715 ((__mmask16) __builtin_ia32_kshiftrihi ((__mmask16)(X), (__mmask8)(Y)))
9716
756c5857
AI
9717#define _mm512_cmp_epi64_mask(X, Y, P) \
9718 ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \
9719 (__v8di)(__m512i)(Y), (int)(P),\
9720 (__mmask8)-1))
9721
9722#define _mm512_cmp_epi32_mask(X, Y, P) \
383321ec
UB
9723 ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \
9724 (__v16si)(__m512i)(Y), (int)(P), \
9725 (__mmask16)-1))
756c5857
AI
9726
9727#define _mm512_cmp_epu64_mask(X, Y, P) \
9728 ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \
9729 (__v8di)(__m512i)(Y), (int)(P),\
9730 (__mmask8)-1))
9731
9732#define _mm512_cmp_epu32_mask(X, Y, P) \
383321ec
UB
9733 ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \
9734 (__v16si)(__m512i)(Y), (int)(P), \
9735 (__mmask16)-1))
756c5857 9736
383321ec 9737#define _mm512_cmp_round_pd_mask(X, Y, P, R) \
756c5857
AI
9738 ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
9739 (__v8df)(__m512d)(Y), (int)(P),\
9740 (__mmask8)-1, R))
9741
383321ec 9742#define _mm512_cmp_round_ps_mask(X, Y, P, R) \
756c5857
AI
9743 ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
9744 (__v16sf)(__m512)(Y), (int)(P),\
9745 (__mmask16)-1, R))
9746
383321ec 9747#define _mm512_mask_cmp_epi64_mask(M, X, Y, P) \
756c5857
AI
9748 ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \
9749 (__v8di)(__m512i)(Y), (int)(P),\
9750 (__mmask8)M))
9751
383321ec
UB
9752#define _mm512_mask_cmp_epi32_mask(M, X, Y, P) \
9753 ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \
9754 (__v16si)(__m512i)(Y), (int)(P), \
9755 (__mmask16)M))
756c5857 9756
383321ec 9757#define _mm512_mask_cmp_epu64_mask(M, X, Y, P) \
756c5857
AI
9758 ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \
9759 (__v8di)(__m512i)(Y), (int)(P),\
9760 (__mmask8)M))
9761
383321ec
UB
9762#define _mm512_mask_cmp_epu32_mask(M, X, Y, P) \
9763 ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \
9764 (__v16si)(__m512i)(Y), (int)(P), \
9765 (__mmask16)M))
756c5857 9766
383321ec 9767#define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R) \
756c5857
AI
9768 ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
9769 (__v8df)(__m512d)(Y), (int)(P),\
9770 (__mmask8)M, R))
9771
383321ec 9772#define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R) \
756c5857
AI
9773 ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
9774 (__v16sf)(__m512)(Y), (int)(P),\
9775 (__mmask16)M, R))
9776
383321ec 9777#define _mm_cmp_round_sd_mask(X, Y, P, R) \
756c5857
AI
9778 ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
9779 (__v2df)(__m128d)(Y), (int)(P),\
9780 (__mmask8)-1, R))
9781
383321ec 9782#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) \
756c5857
AI
9783 ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
9784 (__v2df)(__m128d)(Y), (int)(P),\
9785 (M), R))
9786
383321ec 9787#define _mm_cmp_round_ss_mask(X, Y, P, R) \
756c5857
AI
9788 ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
9789 (__v4sf)(__m128)(Y), (int)(P), \
9790 (__mmask8)-1, R))
9791
383321ec 9792#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) \
756c5857
AI
9793 ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
9794 (__v4sf)(__m128)(Y), (int)(P), \
9795 (M), R))
9796#endif
9797
9798#ifdef __OPTIMIZE__
9799extern __inline __m512
9800__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9801_mm512_i32gather_ps (__m512i __index, void const *__addr, int __scale)
756c5857 9802{
b5fd0b71
JJ
9803 __m512 __v1_old = _mm512_undefined_ps ();
9804 __mmask16 __mask = 0xFFFF;
756c5857 9805
b5fd0b71 9806 return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
756c5857
AI
9807 __addr,
9808 (__v16si) __index,
b5fd0b71 9809 __mask, __scale);
756c5857
AI
9810}
9811
9812extern __inline __m512
9813__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b5fd0b71 9814_mm512_mask_i32gather_ps (__m512 __v1_old, __mmask16 __mask,
0e171d54 9815 __m512i __index, void const *__addr, int __scale)
756c5857 9816{
b5fd0b71 9817 return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
756c5857
AI
9818 __addr,
9819 (__v16si) __index,
9820 __mask, __scale);
9821}
9822
9823extern __inline __m512d
9824__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9825_mm512_i32gather_pd (__m256i __index, void const *__addr, int __scale)
756c5857 9826{
b5fd0b71
JJ
9827 __m512d __v1_old = _mm512_undefined_pd ();
9828 __mmask8 __mask = 0xFF;
756c5857 9829
b5fd0b71 9830 return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
756c5857 9831 __addr,
b5fd0b71 9832 (__v8si) __index, __mask,
756c5857
AI
9833 __scale);
9834}
9835
9836extern __inline __m512d
9837__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9838_mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask,
0e171d54 9839 __m256i __index, void const *__addr, int __scale)
756c5857
AI
9840{
9841 return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
9842 __addr,
9843 (__v8si) __index,
9844 __mask, __scale);
9845}
9846
9847extern __inline __m256
9848__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9849_mm512_i64gather_ps (__m512i __index, void const *__addr, int __scale)
756c5857 9850{
b5fd0b71
JJ
9851 __m256 __v1_old = _mm256_undefined_ps ();
9852 __mmask8 __mask = 0xFF;
756c5857 9853
b5fd0b71 9854 return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
756c5857 9855 __addr,
b5fd0b71 9856 (__v8di) __index, __mask,
756c5857
AI
9857 __scale);
9858}
9859
9860extern __inline __m256
9861__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9862_mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask,
0e171d54 9863 __m512i __index, void const *__addr, int __scale)
756c5857
AI
9864{
9865 return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
9866 __addr,
9867 (__v8di) __index,
9868 __mask, __scale);
9869}
9870
9871extern __inline __m512d
9872__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9873_mm512_i64gather_pd (__m512i __index, void const *__addr, int __scale)
756c5857 9874{
b5fd0b71
JJ
9875 __m512d __v1_old = _mm512_undefined_pd ();
9876 __mmask8 __mask = 0xFF;
756c5857 9877
b5fd0b71 9878 return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
756c5857 9879 __addr,
b5fd0b71 9880 (__v8di) __index, __mask,
756c5857
AI
9881 __scale);
9882}
9883
9884extern __inline __m512d
9885__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9886_mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask,
0e171d54 9887 __m512i __index, void const *__addr, int __scale)
756c5857
AI
9888{
9889 return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
9890 __addr,
9891 (__v8di) __index,
9892 __mask, __scale);
9893}
9894
9895extern __inline __m512i
9896__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9897_mm512_i32gather_epi32 (__m512i __index, void const *__addr, int __scale)
756c5857 9898{
b5fd0b71
JJ
9899 __m512i __v1_old = _mm512_undefined_epi32 ();
9900 __mmask16 __mask = 0xFFFF;
756c5857 9901
b5fd0b71 9902 return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
756c5857
AI
9903 __addr,
9904 (__v16si) __index,
b5fd0b71 9905 __mask, __scale);
756c5857
AI
9906}
9907
9908extern __inline __m512i
9909__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9910_mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask,
0e171d54 9911 __m512i __index, void const *__addr, int __scale)
756c5857
AI
9912{
9913 return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
9914 __addr,
9915 (__v16si) __index,
9916 __mask, __scale);
9917}
9918
9919extern __inline __m512i
9920__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9921_mm512_i32gather_epi64 (__m256i __index, void const *__addr, int __scale)
756c5857 9922{
b5fd0b71
JJ
9923 __m512i __v1_old = _mm512_undefined_epi32 ();
9924 __mmask8 __mask = 0xFF;
756c5857 9925
b5fd0b71 9926 return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
756c5857 9927 __addr,
b5fd0b71 9928 (__v8si) __index, __mask,
756c5857
AI
9929 __scale);
9930}
9931
9932extern __inline __m512i
9933__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9934_mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask,
0e171d54 9935 __m256i __index, void const *__addr,
756c5857
AI
9936 int __scale)
9937{
9938 return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
9939 __addr,
9940 (__v8si) __index,
9941 __mask, __scale);
9942}
9943
9944extern __inline __m256i
9945__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9946_mm512_i64gather_epi32 (__m512i __index, void const *__addr, int __scale)
756c5857 9947{
b5fd0b71
JJ
9948 __m256i __v1_old = _mm256_undefined_si256 ();
9949 __mmask8 __mask = 0xFF;
756c5857 9950
b5fd0b71 9951 return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
756c5857
AI
9952 __addr,
9953 (__v8di) __index,
b5fd0b71 9954 __mask, __scale);
756c5857
AI
9955}
9956
9957extern __inline __m256i
9958__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9959_mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask,
0e171d54 9960 __m512i __index, void const *__addr, int __scale)
756c5857
AI
9961{
9962 return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
9963 __addr,
9964 (__v8di) __index,
9965 __mask, __scale);
9966}
9967
9968extern __inline __m512i
9969__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9970_mm512_i64gather_epi64 (__m512i __index, void const *__addr, int __scale)
756c5857 9971{
b5fd0b71
JJ
9972 __m512i __v1_old = _mm512_undefined_epi32 ();
9973 __mmask8 __mask = 0xFF;
756c5857 9974
b5fd0b71 9975 return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
756c5857 9976 __addr,
b5fd0b71 9977 (__v8di) __index, __mask,
756c5857
AI
9978 __scale);
9979}
9980
9981extern __inline __m512i
9982__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
9983_mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask,
0e171d54 9984 __m512i __index, void const *__addr,
756c5857
AI
9985 int __scale)
9986{
9987 return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
9988 __addr,
9989 (__v8di) __index,
9990 __mask, __scale);
9991}
9992
9993extern __inline void
9994__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 9995_mm512_i32scatter_ps (void *__addr, __m512i __index, __m512 __v1, int __scale)
756c5857
AI
9996{
9997 __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
9998 (__v16si) __index, (__v16sf) __v1, __scale);
9999}
10000
10001extern __inline void
10002__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10003_mm512_mask_i32scatter_ps (void *__addr, __mmask16 __mask,
756c5857
AI
10004 __m512i __index, __m512 __v1, int __scale)
10005{
10006 __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,
10007 (__v16sf) __v1, __scale);
10008}
10009
10010extern __inline void
10011__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10012_mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1,
756c5857
AI
10013 int __scale)
10014{
10015 __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
10016 (__v8si) __index, (__v8df) __v1, __scale);
10017}
10018
10019extern __inline void
10020__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10021_mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
756c5857
AI
10022 __m256i __index, __m512d __v1, int __scale)
10023{
10024 __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
10025 (__v8df) __v1, __scale);
10026}
10027
10028extern __inline void
10029__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10030_mm512_i64scatter_ps (void *__addr, __m512i __index, __m256 __v1, int __scale)
756c5857
AI
10031{
10032 __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
10033 (__v8di) __index, (__v8sf) __v1, __scale);
10034}
10035
10036extern __inline void
10037__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10038_mm512_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
756c5857
AI
10039 __m512i __index, __m256 __v1, int __scale)
10040{
10041 __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index,
10042 (__v8sf) __v1, __scale);
10043}
10044
10045extern __inline void
10046__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10047_mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1,
756c5857
AI
10048 int __scale)
10049{
10050 __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
10051 (__v8di) __index, (__v8df) __v1, __scale);
10052}
10053
10054extern __inline void
10055__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10056_mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
756c5857
AI
10057 __m512i __index, __m512d __v1, int __scale)
10058{
10059 __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
10060 (__v8df) __v1, __scale);
10061}
10062
10063extern __inline void
10064__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10065_mm512_i32scatter_epi32 (void *__addr, __m512i __index,
756c5857
AI
10066 __m512i __v1, int __scale)
10067{
10068 __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF,
10069 (__v16si) __index, (__v16si) __v1, __scale);
10070}
10071
10072extern __inline void
10073__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10074_mm512_mask_i32scatter_epi32 (void *__addr, __mmask16 __mask,
756c5857
AI
10075 __m512i __index, __m512i __v1, int __scale)
10076{
10077 __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
10078 (__v16si) __v1, __scale);
10079}
10080
10081extern __inline void
10082__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10083_mm512_i32scatter_epi64 (void *__addr, __m256i __index,
756c5857
AI
10084 __m512i __v1, int __scale)
10085{
10086 __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF,
10087 (__v8si) __index, (__v8di) __v1, __scale);
10088}
10089
10090extern __inline void
10091__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10092_mm512_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
756c5857
AI
10093 __m256i __index, __m512i __v1, int __scale)
10094{
10095 __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,
10096 (__v8di) __v1, __scale);
10097}
10098
10099extern __inline void
10100__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10101_mm512_i64scatter_epi32 (void *__addr, __m512i __index,
756c5857
AI
10102 __m256i __v1, int __scale)
10103{
10104 __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF,
10105 (__v8di) __index, (__v8si) __v1, __scale);
10106}
10107
10108extern __inline void
10109__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10110_mm512_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
756c5857
AI
10111 __m512i __index, __m256i __v1, int __scale)
10112{
10113 __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,
10114 (__v8si) __v1, __scale);
10115}
10116
10117extern __inline void
10118__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10119_mm512_i64scatter_epi64 (void *__addr, __m512i __index,
756c5857
AI
10120 __m512i __v1, int __scale)
10121{
10122 __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF,
10123 (__v8di) __index, (__v8di) __v1, __scale);
10124}
10125
10126extern __inline void
10127__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
0e171d54 10128_mm512_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
756c5857
AI
10129 __m512i __index, __m512i __v1, int __scale)
10130{
10131 __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index,
10132 (__v8di) __v1, __scale);
10133}
10134#else
10135#define _mm512_i32gather_ps(INDEX, ADDR, SCALE) \
0b192937 10136 (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\
0e171d54 10137 (void const *)ADDR, \
756c5857
AI
10138 (__v16si)(__m512i)INDEX, \
10139 (__mmask16)0xFFFF, (int)SCALE)
10140
10141#define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
10142 (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD, \
0e171d54 10143 (void const *)ADDR, \
756c5857
AI
10144 (__v16si)(__m512i)INDEX, \
10145 (__mmask16)MASK, (int)SCALE)
10146
10147#define _mm512_i32gather_pd(INDEX, ADDR, SCALE) \
0b192937 10148 (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(), \
0e171d54 10149 (void const *)ADDR, \
756c5857
AI
10150 (__v8si)(__m256i)INDEX, \
10151 (__mmask8)0xFF, (int)SCALE)
10152
10153#define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
10154 (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD, \
0e171d54 10155 (void const *)ADDR, \
756c5857
AI
10156 (__v8si)(__m256i)INDEX, \
10157 (__mmask8)MASK, (int)SCALE)
10158
10159#define _mm512_i64gather_ps(INDEX, ADDR, SCALE) \
0b192937 10160 (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(), \
0e171d54 10161 (void const *)ADDR, \
756c5857
AI
10162 (__v8di)(__m512i)INDEX, \
10163 (__mmask8)0xFF, (int)SCALE)
10164
10165#define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
10166 (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD, \
0e171d54 10167 (void const *)ADDR, \
756c5857
AI
10168 (__v8di)(__m512i)INDEX, \
10169 (__mmask8)MASK, (int)SCALE)
10170
10171#define _mm512_i64gather_pd(INDEX, ADDR, SCALE) \
0b192937 10172 (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(), \
0e171d54 10173 (void const *)ADDR, \
756c5857
AI
10174 (__v8di)(__m512i)INDEX, \
10175 (__mmask8)0xFF, (int)SCALE)
10176
10177#define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
10178 (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD, \
0e171d54 10179 (void const *)ADDR, \
756c5857
AI
10180 (__v8di)(__m512i)INDEX, \
10181 (__mmask8)MASK, (int)SCALE)
10182
10183#define _mm512_i32gather_epi32(INDEX, ADDR, SCALE) \
4271e5cb 10184 (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_epi32 (), \
0e171d54 10185 (void const *)ADDR, \
756c5857
AI
10186 (__v16si)(__m512i)INDEX, \
10187 (__mmask16)0xFFFF, (int)SCALE)
10188
10189#define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
10190 (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD, \
0e171d54 10191 (void const *)ADDR, \
756c5857
AI
10192 (__v16si)(__m512i)INDEX, \
10193 (__mmask16)MASK, (int)SCALE)
10194
10195#define _mm512_i32gather_epi64(INDEX, ADDR, SCALE) \
4271e5cb 10196 (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_epi32 (), \
0e171d54 10197 (void const *)ADDR, \
756c5857
AI
10198 (__v8si)(__m256i)INDEX, \
10199 (__mmask8)0xFF, (int)SCALE)
10200
10201#define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
10202 (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD, \
0e171d54 10203 (void const *)ADDR, \
756c5857
AI
10204 (__v8si)(__m256i)INDEX, \
10205 (__mmask8)MASK, (int)SCALE)
10206
10207#define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \
0b192937 10208 (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \
0e171d54 10209 (void const *)ADDR, \
756c5857
AI
10210 (__v8di)(__m512i)INDEX, \
10211 (__mmask8)0xFF, (int)SCALE)
10212
10213#define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
10214 (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD, \
0e171d54 10215 (void const *)ADDR, \
756c5857
AI
10216 (__v8di)(__m512i)INDEX, \
10217 (__mmask8)MASK, (int)SCALE)
10218
10219#define _mm512_i64gather_epi64(INDEX, ADDR, SCALE) \
4271e5cb 10220 (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_epi32 (), \
0e171d54 10221 (void const *)ADDR, \
756c5857
AI
10222 (__v8di)(__m512i)INDEX, \
10223 (__mmask8)0xFF, (int)SCALE)
10224
10225#define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
10226 (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD, \
0e171d54 10227 (void const *)ADDR, \
756c5857
AI
10228 (__v8di)(__m512i)INDEX, \
10229 (__mmask8)MASK, (int)SCALE)
10230
10231#define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE) \
0e171d54 10232 __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)0xFFFF, \
756c5857
AI
10233 (__v16si)(__m512i)INDEX, \
10234 (__v16sf)(__m512)V1, (int)SCALE)
10235
10236#define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10237 __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)MASK, \
756c5857
AI
10238 (__v16si)(__m512i)INDEX, \
10239 (__v16sf)(__m512)V1, (int)SCALE)
10240
10241#define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE) \
0e171d54 10242 __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)0xFF, \
756c5857
AI
10243 (__v8si)(__m256i)INDEX, \
10244 (__v8df)(__m512d)V1, (int)SCALE)
10245
10246#define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10247 __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)MASK, \
756c5857
AI
10248 (__v8si)(__m256i)INDEX, \
10249 (__v8df)(__m512d)V1, (int)SCALE)
10250
10251#define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE) \
0e171d54 10252 __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask8)0xFF, \
756c5857
AI
10253 (__v8di)(__m512i)INDEX, \
10254 (__v8sf)(__m256)V1, (int)SCALE)
10255
10256#define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10257 __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask16)MASK, \
756c5857
AI
10258 (__v8di)(__m512i)INDEX, \
10259 (__v8sf)(__m256)V1, (int)SCALE)
10260
10261#define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE) \
0e171d54 10262 __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)0xFF, \
756c5857
AI
10263 (__v8di)(__m512i)INDEX, \
10264 (__v8df)(__m512d)V1, (int)SCALE)
10265
10266#define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10267 __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)MASK, \
756c5857
AI
10268 (__v8di)(__m512i)INDEX, \
10269 (__v8df)(__m512d)V1, (int)SCALE)
10270
10271#define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \
0e171d54 10272 __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)0xFFFF, \
756c5857
AI
10273 (__v16si)(__m512i)INDEX, \
10274 (__v16si)(__m512i)V1, (int)SCALE)
10275
10276#define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10277 __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)MASK, \
756c5857
AI
10278 (__v16si)(__m512i)INDEX, \
10279 (__v16si)(__m512i)V1, (int)SCALE)
10280
10281#define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \
0e171d54 10282 __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)0xFF, \
756c5857
AI
10283 (__v8si)(__m256i)INDEX, \
10284 (__v8di)(__m512i)V1, (int)SCALE)
10285
10286#define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10287 __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)MASK, \
756c5857
AI
10288 (__v8si)(__m256i)INDEX, \
10289 (__v8di)(__m512i)V1, (int)SCALE)
10290
10291#define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \
0e171d54 10292 __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)0xFF, \
756c5857
AI
10293 (__v8di)(__m512i)INDEX, \
10294 (__v8si)(__m256i)V1, (int)SCALE)
10295
10296#define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10297 __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)MASK, \
756c5857
AI
10298 (__v8di)(__m512i)INDEX, \
10299 (__v8si)(__m256i)V1, (int)SCALE)
10300
10301#define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \
0e171d54 10302 __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)0xFF, \
756c5857
AI
10303 (__v8di)(__m512i)INDEX, \
10304 (__v8di)(__m512i)V1, (int)SCALE)
10305
10306#define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
0e171d54 10307 __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)MASK, \
756c5857
AI
10308 (__v8di)(__m512i)INDEX, \
10309 (__v8di)(__m512i)V1, (int)SCALE)
10310#endif
10311
10312extern __inline __m512d
10313__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10314_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
10315{
10316 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
10317 (__v8df) __W,
10318 (__mmask8) __U);
10319}
10320
10321extern __inline __m512d
10322__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10323_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
10324{
10325 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
10326 (__v8df)
10327 _mm512_setzero_pd (),
10328 (__mmask8) __U);
10329}
10330
10331extern __inline void
10332__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10333_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
10334{
10335 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
10336 (__mmask8) __U);
10337}
10338
10339extern __inline __m512
10340__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10341_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
10342{
10343 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
10344 (__v16sf) __W,
10345 (__mmask16) __U);
10346}
10347
10348extern __inline __m512
10349__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10350_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
10351{
10352 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
10353 (__v16sf)
10354 _mm512_setzero_ps (),
10355 (__mmask16) __U);
10356}
10357
10358extern __inline void
10359__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10360_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
10361{
10362 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
10363 (__mmask16) __U);
10364}
10365
10366extern __inline __m512i
10367__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10368_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10369{
10370 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
10371 (__v8di) __W,
10372 (__mmask8) __U);
10373}
10374
10375extern __inline __m512i
10376__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10377_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
10378{
10379 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
10380 (__v8di)
10381 _mm512_setzero_si512 (),
10382 (__mmask8) __U);
10383}
10384
10385extern __inline void
10386__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10387_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
10388{
10389 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
10390 (__mmask8) __U);
10391}
10392
10393extern __inline __m512i
10394__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10395_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10396{
10397 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
10398 (__v16si) __W,
10399 (__mmask16) __U);
10400}
10401
10402extern __inline __m512i
10403__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10404_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
10405{
10406 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
10407 (__v16si)
10408 _mm512_setzero_si512 (),
10409 (__mmask16) __U);
10410}
10411
10412extern __inline void
10413__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10414_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
10415{
10416 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
10417 (__mmask16) __U);
10418}
10419
10420extern __inline __m512d
10421__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10422_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
10423{
10424 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
10425 (__v8df) __W,
10426 (__mmask8) __U);
10427}
10428
10429extern __inline __m512d
10430__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10431_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
10432{
10433 return (__m512d) __builtin_ia32_expanddf512_maskz ((__v8df) __A,
10434 (__v8df)
10435 _mm512_setzero_pd (),
10436 (__mmask8) __U);
10437}
10438
10439extern __inline __m512d
10440__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10441_mm512_mask_expandloadu_pd (__m512d __W, __mmask8 __U, void const *__P)
10442{
10443 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *) __P,
10444 (__v8df) __W,
10445 (__mmask8) __U);
10446}
10447
10448extern __inline __m512d
10449__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10450_mm512_maskz_expandloadu_pd (__mmask8 __U, void const *__P)
10451{
10452 return (__m512d) __builtin_ia32_expandloaddf512_maskz ((const __v8df *) __P,
10453 (__v8df)
10454 _mm512_setzero_pd (),
10455 (__mmask8) __U);
10456}
10457
10458extern __inline __m512
10459__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10460_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
10461{
10462 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
10463 (__v16sf) __W,
10464 (__mmask16) __U);
10465}
10466
10467extern __inline __m512
10468__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10469_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
10470{
10471 return (__m512) __builtin_ia32_expandsf512_maskz ((__v16sf) __A,
10472 (__v16sf)
10473 _mm512_setzero_ps (),
10474 (__mmask16) __U);
10475}
10476
10477extern __inline __m512
10478__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10479_mm512_mask_expandloadu_ps (__m512 __W, __mmask16 __U, void const *__P)
10480{
10481 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *) __P,
10482 (__v16sf) __W,
10483 (__mmask16) __U);
10484}
10485
10486extern __inline __m512
10487__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10488_mm512_maskz_expandloadu_ps (__mmask16 __U, void const *__P)
10489{
10490 return (__m512) __builtin_ia32_expandloadsf512_maskz ((const __v16sf *) __P,
10491 (__v16sf)
10492 _mm512_setzero_ps (),
10493 (__mmask16) __U);
10494}
10495
10496extern __inline __m512i
10497__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10498_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10499{
10500 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
10501 (__v8di) __W,
10502 (__mmask8) __U);
10503}
10504
10505extern __inline __m512i
10506__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10507_mm512_maskz_expand_epi64 (__mmask8 __U, __m512i __A)
10508{
10509 return (__m512i) __builtin_ia32_expanddi512_maskz ((__v8di) __A,
10510 (__v8di)
10511 _mm512_setzero_si512 (),
10512 (__mmask8) __U);
10513}
10514
10515extern __inline __m512i
10516__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10517_mm512_mask_expandloadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
10518{
10519 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *) __P,
10520 (__v8di) __W,
10521 (__mmask8) __U);
10522}
10523
10524extern __inline __m512i
10525__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10526_mm512_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P)
10527{
10528 return (__m512i)
10529 __builtin_ia32_expandloaddi512_maskz ((const __v8di *) __P,
10530 (__v8di)
10531 _mm512_setzero_si512 (),
10532 (__mmask8) __U);
10533}
10534
10535extern __inline __m512i
10536__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10537_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10538{
10539 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
10540 (__v16si) __W,
10541 (__mmask16) __U);
10542}
10543
10544extern __inline __m512i
10545__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10546_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
10547{
10548 return (__m512i) __builtin_ia32_expandsi512_maskz ((__v16si) __A,
10549 (__v16si)
10550 _mm512_setzero_si512 (),
10551 (__mmask16) __U);
10552}
10553
10554extern __inline __m512i
10555__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10556_mm512_mask_expandloadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
10557{
10558 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *) __P,
10559 (__v16si) __W,
10560 (__mmask16) __U);
10561}
10562
10563extern __inline __m512i
10564__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10565_mm512_maskz_expandloadu_epi32 (__mmask16 __U, void const *__P)
10566{
10567 return (__m512i) __builtin_ia32_expandloadsi512_maskz ((const __v16si *) __P,
10568 (__v16si)
10569 _mm512_setzero_si512
10570 (), (__mmask16) __U);
10571}
10572
10573/* Mask arithmetic operations */
6901ea62
AS
10574#define _kand_mask16 _mm512_kand
10575#define _kandn_mask16 _mm512_kandn
10576#define _knot_mask16 _mm512_knot
10577#define _kor_mask16 _mm512_kor
10578#define _kxnor_mask16 _mm512_kxnor
10579#define _kxor_mask16 _mm512_kxor
10580
dea06111
AS
10581extern __inline unsigned char
10582__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10583_kortest_mask16_u8 (__mmask16 __A, __mmask16 __B, unsigned char *__CF)
10584{
10585 *__CF = (unsigned char) __builtin_ia32_kortestchi (__A, __B);
10586 return (unsigned char) __builtin_ia32_kortestzhi (__A, __B);
10587}
10588
10589extern __inline unsigned char
10590__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10591_kortestz_mask16_u8 (__mmask16 __A, __mmask16 __B)
10592{
10593 return (unsigned char) __builtin_ia32_kortestzhi ((__mmask16) __A,
10594 (__mmask16) __B);
10595}
10596
10597extern __inline unsigned char
10598__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10599_kortestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
10600{
10601 return (unsigned char) __builtin_ia32_kortestchi ((__mmask16) __A,
10602 (__mmask16) __B);
10603}
10604
7cdb6e4c
AS
10605extern __inline unsigned int
10606__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10607_cvtmask16_u32 (__mmask16 __A)
10608{
10609 return (unsigned int) __builtin_ia32_kmovw ((__mmask16 ) __A);
10610}
10611
10612extern __inline __mmask16
10613__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10614_cvtu32_mask16 (unsigned int __A)
10615{
10616 return (__mmask16) __builtin_ia32_kmovw ((__mmask16 ) __A);
10617}
10618
10619extern __inline __mmask16
10620__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10621_load_mask16 (__mmask16 *__A)
10622{
10623 return (__mmask16) __builtin_ia32_kmovw (*(__mmask16 *) __A);
10624}
10625
10626extern __inline void
10627__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10628_store_mask16 (__mmask16 *__A, __mmask16 __B)
10629{
10630 *(__mmask16 *) __A = __builtin_ia32_kmovw (__B);
10631}
10632
756c5857
AI
10633extern __inline __mmask16
10634__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10635_mm512_kand (__mmask16 __A, __mmask16 __B)
10636{
10637 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
10638}
10639
10640extern __inline __mmask16
10641__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10642_mm512_kandn (__mmask16 __A, __mmask16 __B)
10643{
6901ea62
AS
10644 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A,
10645 (__mmask16) __B);
756c5857
AI
10646}
10647
10648extern __inline __mmask16
10649__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10650_mm512_kor (__mmask16 __A, __mmask16 __B)
10651{
10652 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
10653}
10654
10655extern __inline int
10656__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10657_mm512_kortestz (__mmask16 __A, __mmask16 __B)
10658{
10659 return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
10660 (__mmask16) __B);
10661}
10662
10663extern __inline int
10664__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10665_mm512_kortestc (__mmask16 __A, __mmask16 __B)
10666{
10667 return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
10668 (__mmask16) __B);
10669}
10670
10671extern __inline __mmask16
10672__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10673_mm512_kxnor (__mmask16 __A, __mmask16 __B)
10674{
10675 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
10676}
10677
10678extern __inline __mmask16
10679__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10680_mm512_kxor (__mmask16 __A, __mmask16 __B)
10681{
10682 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
10683}
10684
10685extern __inline __mmask16
10686__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10687_mm512_knot (__mmask16 __A)
10688{
10689 return (__mmask16) __builtin_ia32_knothi ((__mmask16) __A);
10690}
10691
10692extern __inline __mmask16
10693__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10694_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
10695{
10696 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
10697}
10698
6901ea62
AS
10699extern __inline __mmask16
10700__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10701_kunpackb_mask16 (__mmask8 __A, __mmask8 __B)
10702{
10703 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
10704}
10705
756c5857
AI
10706#ifdef __OPTIMIZE__
10707extern __inline __m512i
10708__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10709_mm512_maskz_inserti32x4 (__mmask16 __B, __m512i __C, __m128i __D,
10710 const int __imm)
10711{
10712 return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C,
10713 (__v4si) __D,
10714 __imm,
10715 (__v16si)
10716 _mm512_setzero_si512 (),
10717 __B);
10718}
10719
10720extern __inline __m512
10721__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10722_mm512_maskz_insertf32x4 (__mmask16 __B, __m512 __C, __m128 __D,
10723 const int __imm)
10724{
10725 return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C,
10726 (__v4sf) __D,
10727 __imm,
10728 (__v16sf)
10729 _mm512_setzero_ps (), __B);
10730}
10731
10732extern __inline __m512i
10733__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10734_mm512_mask_inserti32x4 (__m512i __A, __mmask16 __B, __m512i __C,
10735 __m128i __D, const int __imm)
10736{
10737 return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C,
10738 (__v4si) __D,
10739 __imm,
10740 (__v16si) __A,
10741 __B);
10742}
10743
10744extern __inline __m512
10745__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10746_mm512_mask_insertf32x4 (__m512 __A, __mmask16 __B, __m512 __C,
10747 __m128 __D, const int __imm)
10748{
10749 return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C,
10750 (__v4sf) __D,
10751 __imm,
10752 (__v16sf) __A, __B);
10753}
10754#else
10755#define _mm512_maskz_insertf32x4(A, X, Y, C) \
10756 ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \
10757 (__v4sf)(__m128) (Y), (int) (C), (__v16sf)_mm512_setzero_ps(), \
10758 (__mmask8)(A)))
10759
10760#define _mm512_maskz_inserti32x4(A, X, Y, C) \
10761 ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \
10762 (__v4si)(__m128i) (Y), (int) (C), (__v16si)_mm512_setzero_si512 (), \
10763 (__mmask8)(A)))
10764
10765#define _mm512_mask_insertf32x4(A, B, X, Y, C) \
10766 ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \
10767 (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (A), \
10768 (__mmask8)(B)))
10769
10770#define _mm512_mask_inserti32x4(A, B, X, Y, C) \
10771 ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \
10772 (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (A), \
10773 (__mmask8)(B)))
10774#endif
10775
10776extern __inline __m512i
10777__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10778_mm512_max_epi64 (__m512i __A, __m512i __B)
10779{
10780 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
10781 (__v8di) __B,
10782 (__v8di)
4271e5cb 10783 _mm512_undefined_epi32 (),
756c5857
AI
10784 (__mmask8) -1);
10785}
10786
10787extern __inline __m512i
10788__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10789_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
10790{
10791 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
10792 (__v8di) __B,
10793 (__v8di)
10794 _mm512_setzero_si512 (),
10795 __M);
10796}
10797
10798extern __inline __m512i
10799__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10800_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10801{
10802 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
10803 (__v8di) __B,
10804 (__v8di) __W, __M);
10805}
10806
10807extern __inline __m512i
10808__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10809_mm512_min_epi64 (__m512i __A, __m512i __B)
10810{
10811 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
10812 (__v8di) __B,
10813 (__v8di)
4271e5cb 10814 _mm512_undefined_epi32 (),
756c5857
AI
10815 (__mmask8) -1);
10816}
10817
10818extern __inline __m512i
10819__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10820_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10821{
10822 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
10823 (__v8di) __B,
10824 (__v8di) __W, __M);
10825}
10826
10827extern __inline __m512i
10828__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10829_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
10830{
10831 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
10832 (__v8di) __B,
10833 (__v8di)
10834 _mm512_setzero_si512 (),
10835 __M);
10836}
10837
10838extern __inline __m512i
10839__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10840_mm512_max_epu64 (__m512i __A, __m512i __B)
10841{
10842 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
10843 (__v8di) __B,
10844 (__v8di)
4271e5cb 10845 _mm512_undefined_epi32 (),
756c5857
AI
10846 (__mmask8) -1);
10847}
10848
10849extern __inline __m512i
10850__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10851_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
10852{
10853 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
10854 (__v8di) __B,
10855 (__v8di)
10856 _mm512_setzero_si512 (),
10857 __M);
10858}
10859
10860extern __inline __m512i
10861__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10862_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10863{
10864 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
10865 (__v8di) __B,
10866 (__v8di) __W, __M);
10867}
10868
10869extern __inline __m512i
10870__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10871_mm512_min_epu64 (__m512i __A, __m512i __B)
10872{
10873 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
10874 (__v8di) __B,
10875 (__v8di)
4271e5cb 10876 _mm512_undefined_epi32 (),
756c5857
AI
10877 (__mmask8) -1);
10878}
10879
10880extern __inline __m512i
10881__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10882_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10883{
10884 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
10885 (__v8di) __B,
10886 (__v8di) __W, __M);
10887}
10888
10889extern __inline __m512i
10890__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10891_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
10892{
10893 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
10894 (__v8di) __B,
10895 (__v8di)
10896 _mm512_setzero_si512 (),
10897 __M);
10898}
10899
10900extern __inline __m512i
10901__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10902_mm512_max_epi32 (__m512i __A, __m512i __B)
10903{
10904 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
10905 (__v16si) __B,
10906 (__v16si)
4271e5cb 10907 _mm512_undefined_epi32 (),
756c5857
AI
10908 (__mmask16) -1);
10909}
10910
10911extern __inline __m512i
10912__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10913_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
10914{
10915 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
10916 (__v16si) __B,
10917 (__v16si)
10918 _mm512_setzero_si512 (),
10919 __M);
10920}
10921
10922extern __inline __m512i
10923__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10924_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
10925{
10926 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
10927 (__v16si) __B,
10928 (__v16si) __W, __M);
10929}
10930
10931extern __inline __m512i
10932__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10933_mm512_min_epi32 (__m512i __A, __m512i __B)
10934{
10935 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
10936 (__v16si) __B,
10937 (__v16si)
4271e5cb 10938 _mm512_undefined_epi32 (),
756c5857
AI
10939 (__mmask16) -1);
10940}
10941
10942extern __inline __m512i
10943__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10944_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
10945{
10946 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
10947 (__v16si) __B,
10948 (__v16si)
10949 _mm512_setzero_si512 (),
10950 __M);
10951}
10952
10953extern __inline __m512i
10954__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10955_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
10956{
10957 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
10958 (__v16si) __B,
10959 (__v16si) __W, __M);
10960}
10961
10962extern __inline __m512i
10963__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10964_mm512_max_epu32 (__m512i __A, __m512i __B)
10965{
10966 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
10967 (__v16si) __B,
10968 (__v16si)
4271e5cb 10969 _mm512_undefined_epi32 (),
756c5857
AI
10970 (__mmask16) -1);
10971}
10972
10973extern __inline __m512i
10974__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10975_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
10976{
10977 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
10978 (__v16si) __B,
10979 (__v16si)
10980 _mm512_setzero_si512 (),
10981 __M);
10982}
10983
10984extern __inline __m512i
10985__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10986_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
10987{
10988 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
10989 (__v16si) __B,
10990 (__v16si) __W, __M);
10991}
10992
10993extern __inline __m512i
10994__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
10995_mm512_min_epu32 (__m512i __A, __m512i __B)
10996{
10997 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
10998 (__v16si) __B,
10999 (__v16si)
4271e5cb 11000 _mm512_undefined_epi32 (),
756c5857
AI
11001 (__mmask16) -1);
11002}
11003
11004extern __inline __m512i
11005__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11006_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
11007{
11008 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
11009 (__v16si) __B,
11010 (__v16si)
11011 _mm512_setzero_si512 (),
11012 __M);
11013}
11014
11015extern __inline __m512i
11016__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11017_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
11018{
11019 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
11020 (__v16si) __B,
11021 (__v16si) __W, __M);
11022}
11023
11024extern __inline __m512
11025__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11026_mm512_unpacklo_ps (__m512 __A, __m512 __B)
11027{
11028 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
11029 (__v16sf) __B,
11030 (__v16sf)
0b192937 11031 _mm512_undefined_ps (),
756c5857
AI
11032 (__mmask16) -1);
11033}
11034
11035extern __inline __m512
11036__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11037_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11038{
11039 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
11040 (__v16sf) __B,
11041 (__v16sf) __W,
11042 (__mmask16) __U);
11043}
11044
11045extern __inline __m512
11046__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11047_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
11048{
11049 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
11050 (__v16sf) __B,
11051 (__v16sf)
11052 _mm512_setzero_ps (),
11053 (__mmask16) __U);
11054}
11055
075691af
AI
11056#ifdef __OPTIMIZE__
11057extern __inline __m128d
11058__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11059_mm_max_round_sd (__m128d __A, __m128d __B, const int __R)
11060{
11061 return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A,
11062 (__v2df) __B,
11063 __R);
11064}
11065
f4ee3a9e
UB
11066extern __inline __m128d
11067__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11068_mm_mask_max_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
11069 __m128d __B, const int __R)
11070{
11071 return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
11072 (__v2df) __B,
11073 (__v2df) __W,
11074 (__mmask8) __U, __R);
11075}
11076
11077extern __inline __m128d
11078__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11079_mm_maskz_max_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
11080 const int __R)
11081{
11082 return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
11083 (__v2df) __B,
11084 (__v2df)
11085 _mm_setzero_pd (),
11086 (__mmask8) __U, __R);
11087}
11088
075691af
AI
11089extern __inline __m128
11090__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11091_mm_max_round_ss (__m128 __A, __m128 __B, const int __R)
11092{
11093 return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A,
11094 (__v4sf) __B,
11095 __R);
11096}
11097
f4ee3a9e
UB
11098extern __inline __m128
11099__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11100_mm_mask_max_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
11101 __m128 __B, const int __R)
11102{
11103 return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
11104 (__v4sf) __B,
11105 (__v4sf) __W,
11106 (__mmask8) __U, __R);
11107}
11108
11109extern __inline __m128
11110__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11111_mm_maskz_max_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
11112 const int __R)
11113{
11114 return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
11115 (__v4sf) __B,
11116 (__v4sf)
11117 _mm_setzero_ps (),
11118 (__mmask8) __U, __R);
11119}
11120
075691af
AI
11121extern __inline __m128d
11122__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11123_mm_min_round_sd (__m128d __A, __m128d __B, const int __R)
11124{
11125 return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A,
11126 (__v2df) __B,
11127 __R);
11128}
11129
f4ee3a9e
UB
11130extern __inline __m128d
11131__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11132_mm_mask_min_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
11133 __m128d __B, const int __R)
11134{
11135 return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
11136 (__v2df) __B,
11137 (__v2df) __W,
11138 (__mmask8) __U, __R);
11139}
11140
11141extern __inline __m128d
11142__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11143_mm_maskz_min_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
11144 const int __R)
11145{
11146 return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
11147 (__v2df) __B,
11148 (__v2df)
11149 _mm_setzero_pd (),
11150 (__mmask8) __U, __R);
11151}
11152
075691af
AI
11153extern __inline __m128
11154__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11155_mm_min_round_ss (__m128 __A, __m128 __B, const int __R)
11156{
11157 return (__m128) __builtin_ia32_minss_round ((__v4sf) __A,
11158 (__v4sf) __B,
11159 __R);
11160}
11161
f4ee3a9e
UB
11162extern __inline __m128
11163__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11164_mm_mask_min_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
11165 __m128 __B, const int __R)
11166{
11167 return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
11168 (__v4sf) __B,
11169 (__v4sf) __W,
11170 (__mmask8) __U, __R);
11171}
11172
11173extern __inline __m128
11174__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11175_mm_maskz_min_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
11176 const int __R)
11177{
11178 return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
11179 (__v4sf) __B,
11180 (__v4sf)
11181 _mm_setzero_ps (),
11182 (__mmask8) __U, __R);
11183}
11184
075691af
AI
11185#else
11186#define _mm_max_round_sd(A, B, C) \
f4ee3a9e
UB
11187 (__m128d)__builtin_ia32_maxsd_round(A, B, C)
11188
11189#define _mm_mask_max_round_sd(W, U, A, B, C) \
11190 (__m128d)__builtin_ia32_maxsd_mask_round(A, B, W, U, C)
11191
11192#define _mm_maskz_max_round_sd(U, A, B, C) \
11193 (__m128d)__builtin_ia32_maxsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
075691af
AI
11194
11195#define _mm_max_round_ss(A, B, C) \
f4ee3a9e
UB
11196 (__m128)__builtin_ia32_maxss_round(A, B, C)
11197
11198#define _mm_mask_max_round_ss(W, U, A, B, C) \
11199 (__m128)__builtin_ia32_maxss_mask_round(A, B, W, U, C)
11200
11201#define _mm_maskz_max_round_ss(U, A, B, C) \
11202 (__m128)__builtin_ia32_maxss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
075691af
AI
11203
11204#define _mm_min_round_sd(A, B, C) \
f4ee3a9e
UB
11205 (__m128d)__builtin_ia32_minsd_round(A, B, C)
11206
11207#define _mm_mask_min_round_sd(W, U, A, B, C) \
11208 (__m128d)__builtin_ia32_minsd_mask_round(A, B, W, U, C)
11209
11210#define _mm_maskz_min_round_sd(U, A, B, C) \
11211 (__m128d)__builtin_ia32_minsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U, C)
075691af
AI
11212
11213#define _mm_min_round_ss(A, B, C) \
f4ee3a9e
UB
11214 (__m128)__builtin_ia32_minss_round(A, B, C)
11215
11216#define _mm_mask_min_round_ss(W, U, A, B, C) \
11217 (__m128)__builtin_ia32_minss_mask_round(A, B, W, U, C)
11218
11219#define _mm_maskz_min_round_ss(U, A, B, C) \
11220 (__m128)__builtin_ia32_minss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U, C)
11221
075691af
AI
11222#endif
11223
756c5857
AI
11224extern __inline __m512d
11225__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11226_mm512_mask_blend_pd (__mmask8 __U, __m512d __A, __m512d __W)
11227{
11228 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
11229 (__v8df) __W,
11230 (__mmask8) __U);
11231}
11232
11233extern __inline __m512
11234__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11235_mm512_mask_blend_ps (__mmask16 __U, __m512 __A, __m512 __W)
11236{
11237 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
11238 (__v16sf) __W,
11239 (__mmask16) __U);
11240}
11241
11242extern __inline __m512i
11243__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11244_mm512_mask_blend_epi64 (__mmask8 __U, __m512i __A, __m512i __W)
11245{
11246 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
11247 (__v8di) __W,
11248 (__mmask8) __U);
11249}
11250
11251extern __inline __m512i
11252__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11253_mm512_mask_blend_epi32 (__mmask16 __U, __m512i __A, __m512i __W)
11254{
11255 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
11256 (__v16si) __W,
11257 (__mmask16) __U);
11258}
11259
075691af
AI
11260#ifdef __OPTIMIZE__
11261extern __inline __m128d
11262__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11263_mm_fmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11264{
11265 return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11266 (__v2df) __A,
11267 (__v2df) __B,
11268 __R);
11269}
11270
11271extern __inline __m128
11272__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11273_mm_fmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11274{
11275 return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11276 (__v4sf) __A,
11277 (__v4sf) __B,
11278 __R);
11279}
11280
11281extern __inline __m128d
11282__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11283_mm_fmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11284{
11285 return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11286 (__v2df) __A,
11287 -(__v2df) __B,
11288 __R);
11289}
11290
11291extern __inline __m128
11292__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11293_mm_fmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11294{
11295 return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11296 (__v4sf) __A,
11297 -(__v4sf) __B,
11298 __R);
11299}
11300
11301extern __inline __m128d
11302__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11303_mm_fnmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11304{
11305 return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11306 -(__v2df) __A,
11307 (__v2df) __B,
11308 __R);
11309}
11310
11311extern __inline __m128
11312__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11313_mm_fnmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11314{
11315 return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11316 -(__v4sf) __A,
11317 (__v4sf) __B,
11318 __R);
11319}
11320
11321extern __inline __m128d
11322__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11323_mm_fnmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R)
11324{
11325 return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W,
11326 -(__v2df) __A,
11327 -(__v2df) __B,
11328 __R);
11329}
11330
11331extern __inline __m128
11332__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11333_mm_fnmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R)
11334{
11335 return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W,
11336 -(__v4sf) __A,
11337 -(__v4sf) __B,
11338 __R);
11339}
11340#else
11341#define _mm_fmadd_round_sd(A, B, C, R) \
11342 (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, C, R)
11343
11344#define _mm_fmadd_round_ss(A, B, C, R) \
11345 (__m128)__builtin_ia32_vfmaddss3_round(A, B, C, R)
11346
11347#define _mm_fmsub_round_sd(A, B, C, R) \
11348 (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, -(C), R)
11349
11350#define _mm_fmsub_round_ss(A, B, C, R) \
11351 (__m128)__builtin_ia32_vfmaddss3_round(A, B, -(C), R)
11352
11353#define _mm_fnmadd_round_sd(A, B, C, R) \
11354 (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), C, R)
11355
11356#define _mm_fnmadd_round_ss(A, B, C, R) \
11357 (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), C, R)
11358
11359#define _mm_fnmsub_round_sd(A, B, C, R) \
11360 (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), -(C), R)
11361
11362#define _mm_fnmsub_round_ss(A, B, C, R) \
11363 (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), -(C), R)
11364#endif
11365
756c5857
AI
11366#ifdef __OPTIMIZE__
11367extern __inline int
11368__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11369_mm_comi_round_ss (__m128 __A, __m128 __B, const int __P, const int __R)
11370{
11371 return __builtin_ia32_vcomiss ((__v4sf) __A, (__v4sf) __B, __P, __R);
11372}
11373
11374extern __inline int
11375__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11376_mm_comi_round_sd (__m128d __A, __m128d __B, const int __P, const int __R)
11377{
11378 return __builtin_ia32_vcomisd ((__v2df) __A, (__v2df) __B, __P, __R);
11379}
11380#else
11381#define _mm_comi_round_ss(A, B, C, D)\
11382__builtin_ia32_vcomiss(A, B, C, D)
11383#define _mm_comi_round_sd(A, B, C, D)\
11384__builtin_ia32_vcomisd(A, B, C, D)
11385#endif
11386
11387extern __inline __m512d
11388__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11389_mm512_sqrt_pd (__m512d __A)
11390{
11391 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
11392 (__v8df)
0b192937 11393 _mm512_undefined_pd (),
756c5857
AI
11394 (__mmask8) -1,
11395 _MM_FROUND_CUR_DIRECTION);
11396}
11397
11398extern __inline __m512d
11399__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11400_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
11401{
11402 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
11403 (__v8df) __W,
11404 (__mmask8) __U,
11405 _MM_FROUND_CUR_DIRECTION);
11406}
11407
11408extern __inline __m512d
11409__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11410_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
11411{
11412 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
11413 (__v8df)
11414 _mm512_setzero_pd (),
11415 (__mmask8) __U,
11416 _MM_FROUND_CUR_DIRECTION);
11417}
11418
11419extern __inline __m512
11420__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11421_mm512_sqrt_ps (__m512 __A)
11422{
11423 return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
11424 (__v16sf)
0b192937 11425 _mm512_undefined_ps (),
756c5857
AI
11426 (__mmask16) -1,
11427 _MM_FROUND_CUR_DIRECTION);
11428}
11429
11430extern __inline __m512
11431__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11432_mm512_mask_sqrt_ps (__m512 __W, __mmask16 __U, __m512 __A)
11433{
11434 return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
11435 (__v16sf) __W,
11436 (__mmask16) __U,
11437 _MM_FROUND_CUR_DIRECTION);
11438}
11439
11440extern __inline __m512
11441__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11442_mm512_maskz_sqrt_ps (__mmask16 __U, __m512 __A)
11443{
11444 return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A,
11445 (__v16sf)
11446 _mm512_setzero_ps (),
11447 (__mmask16) __U,
11448 _MM_FROUND_CUR_DIRECTION);
11449}
11450
11451extern __inline __m512d
11452__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11453_mm512_add_pd (__m512d __A, __m512d __B)
11454{
2069d6fc 11455 return (__m512d) ((__v8df)__A + (__v8df)__B);
756c5857
AI
11456}
11457
11458extern __inline __m512d
11459__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11460_mm512_mask_add_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
11461{
11462 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
11463 (__v8df) __B,
11464 (__v8df) __W,
11465 (__mmask8) __U,
11466 _MM_FROUND_CUR_DIRECTION);
11467}
11468
11469extern __inline __m512d
11470__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11471_mm512_maskz_add_pd (__mmask8 __U, __m512d __A, __m512d __B)
11472{
11473 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
11474 (__v8df) __B,
11475 (__v8df)
11476 _mm512_setzero_pd (),
11477 (__mmask8) __U,
11478 _MM_FROUND_CUR_DIRECTION);
11479}
11480
11481extern __inline __m512
11482__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11483_mm512_add_ps (__m512 __A, __m512 __B)
11484{
2069d6fc 11485 return (__m512) ((__v16sf)__A + (__v16sf)__B);
756c5857
AI
11486}
11487
11488extern __inline __m512
11489__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11490_mm512_mask_add_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11491{
11492 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
11493 (__v16sf) __B,
11494 (__v16sf) __W,
11495 (__mmask16) __U,
11496 _MM_FROUND_CUR_DIRECTION);
11497}
11498
11499extern __inline __m512
11500__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11501_mm512_maskz_add_ps (__mmask16 __U, __m512 __A, __m512 __B)
11502{
11503 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
11504 (__v16sf) __B,
11505 (__v16sf)
11506 _mm512_setzero_ps (),
11507 (__mmask16) __U,
11508 _MM_FROUND_CUR_DIRECTION);
11509}
11510
1853f5c7
SP
11511extern __inline __m128d
11512__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11513_mm_mask_add_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
11514{
11515 return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
11516 (__v2df) __B,
11517 (__v2df) __W,
11518 (__mmask8) __U,
11519 _MM_FROUND_CUR_DIRECTION);
11520}
11521
11522extern __inline __m128d
11523__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11524_mm_maskz_add_sd (__mmask8 __U, __m128d __A, __m128d __B)
11525{
11526 return (__m128d) __builtin_ia32_addsd_mask_round ((__v2df) __A,
11527 (__v2df) __B,
11528 (__v2df)
11529 _mm_setzero_pd (),
11530 (__mmask8) __U,
11531 _MM_FROUND_CUR_DIRECTION);
11532}
11533
11534extern __inline __m128
11535__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11536_mm_mask_add_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
11537{
11538 return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
11539 (__v4sf) __B,
11540 (__v4sf) __W,
11541 (__mmask8) __U,
11542 _MM_FROUND_CUR_DIRECTION);
11543}
11544
11545extern __inline __m128
11546__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11547_mm_maskz_add_ss (__mmask8 __U, __m128 __A, __m128 __B)
11548{
11549 return (__m128) __builtin_ia32_addss_mask_round ((__v4sf) __A,
11550 (__v4sf) __B,
11551 (__v4sf)
11552 _mm_setzero_ps (),
11553 (__mmask8) __U,
11554 _MM_FROUND_CUR_DIRECTION);
11555}
11556
756c5857
AI
11557extern __inline __m512d
11558__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11559_mm512_sub_pd (__m512d __A, __m512d __B)
11560{
2069d6fc 11561 return (__m512d) ((__v8df)__A - (__v8df)__B);
756c5857
AI
11562}
11563
11564extern __inline __m512d
11565__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11566_mm512_mask_sub_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
11567{
11568 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
11569 (__v8df) __B,
11570 (__v8df) __W,
11571 (__mmask8) __U,
11572 _MM_FROUND_CUR_DIRECTION);
11573}
11574
11575extern __inline __m512d
11576__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11577_mm512_maskz_sub_pd (__mmask8 __U, __m512d __A, __m512d __B)
11578{
11579 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
11580 (__v8df) __B,
11581 (__v8df)
11582 _mm512_setzero_pd (),
11583 (__mmask8) __U,
11584 _MM_FROUND_CUR_DIRECTION);
11585}
11586
11587extern __inline __m512
11588__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11589_mm512_sub_ps (__m512 __A, __m512 __B)
11590{
2069d6fc 11591 return (__m512) ((__v16sf)__A - (__v16sf)__B);
756c5857
AI
11592}
11593
11594extern __inline __m512
11595__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11596_mm512_mask_sub_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11597{
11598 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
11599 (__v16sf) __B,
11600 (__v16sf) __W,
11601 (__mmask16) __U,
11602 _MM_FROUND_CUR_DIRECTION);
11603}
11604
11605extern __inline __m512
11606__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11607_mm512_maskz_sub_ps (__mmask16 __U, __m512 __A, __m512 __B)
11608{
11609 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
11610 (__v16sf) __B,
11611 (__v16sf)
11612 _mm512_setzero_ps (),
11613 (__mmask16) __U,
11614 _MM_FROUND_CUR_DIRECTION);
11615}
11616
1853f5c7
SP
11617extern __inline __m128d
11618__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11619_mm_mask_sub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
11620{
11621 return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
11622 (__v2df) __B,
11623 (__v2df) __W,
11624 (__mmask8) __U,
11625 _MM_FROUND_CUR_DIRECTION);
11626}
11627
11628extern __inline __m128d
11629__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11630_mm_maskz_sub_sd (__mmask8 __U, __m128d __A, __m128d __B)
11631{
11632 return (__m128d) __builtin_ia32_subsd_mask_round ((__v2df) __A,
11633 (__v2df) __B,
11634 (__v2df)
11635 _mm_setzero_pd (),
11636 (__mmask8) __U,
11637 _MM_FROUND_CUR_DIRECTION);
11638}
11639
11640extern __inline __m128
11641__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11642_mm_mask_sub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
11643{
11644 return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
11645 (__v4sf) __B,
11646 (__v4sf) __W,
11647 (__mmask8) __U,
11648 _MM_FROUND_CUR_DIRECTION);
11649}
11650
11651extern __inline __m128
11652__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11653_mm_maskz_sub_ss (__mmask8 __U, __m128 __A, __m128 __B)
11654{
11655 return (__m128) __builtin_ia32_subss_mask_round ((__v4sf) __A,
11656 (__v4sf) __B,
11657 (__v4sf)
11658 _mm_setzero_ps (),
11659 (__mmask8) __U,
11660 _MM_FROUND_CUR_DIRECTION);
11661}
11662
756c5857
AI
11663extern __inline __m512d
11664__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11665_mm512_mul_pd (__m512d __A, __m512d __B)
11666{
2069d6fc 11667 return (__m512d) ((__v8df)__A * (__v8df)__B);
756c5857
AI
11668}
11669
11670extern __inline __m512d
11671__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11672_mm512_mask_mul_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
11673{
11674 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
11675 (__v8df) __B,
11676 (__v8df) __W,
11677 (__mmask8) __U,
11678 _MM_FROUND_CUR_DIRECTION);
11679}
11680
11681extern __inline __m512d
11682__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11683_mm512_maskz_mul_pd (__mmask8 __U, __m512d __A, __m512d __B)
11684{
11685 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
11686 (__v8df) __B,
11687 (__v8df)
11688 _mm512_setzero_pd (),
11689 (__mmask8) __U,
11690 _MM_FROUND_CUR_DIRECTION);
11691}
11692
11693extern __inline __m512
11694__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11695_mm512_mul_ps (__m512 __A, __m512 __B)
11696{
2069d6fc 11697 return (__m512) ((__v16sf)__A * (__v16sf)__B);
756c5857
AI
11698}
11699
11700extern __inline __m512
11701__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11702_mm512_mask_mul_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11703{
11704 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
11705 (__v16sf) __B,
11706 (__v16sf) __W,
11707 (__mmask16) __U,
11708 _MM_FROUND_CUR_DIRECTION);
11709}
11710
11711extern __inline __m512
11712__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11713_mm512_maskz_mul_ps (__mmask16 __U, __m512 __A, __m512 __B)
11714{
11715 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
11716 (__v16sf) __B,
11717 (__v16sf)
11718 _mm512_setzero_ps (),
11719 (__mmask16) __U,
11720 _MM_FROUND_CUR_DIRECTION);
11721}
11722
f4ee3a9e
UB
11723extern __inline __m128d
11724__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11725_mm_mask_mul_sd (__m128d __W, __mmask8 __U, __m128d __A,
11726 __m128d __B)
11727{
11728 return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
11729 (__v2df) __B,
11730 (__v2df) __W,
11731 (__mmask8) __U,
11732 _MM_FROUND_CUR_DIRECTION);
11733}
11734
11735extern __inline __m128d
11736__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11737_mm_maskz_mul_sd (__mmask8 __U, __m128d __A, __m128d __B)
11738{
11739 return (__m128d) __builtin_ia32_mulsd_mask_round ((__v2df) __A,
11740 (__v2df) __B,
11741 (__v2df)
11742 _mm_setzero_pd (),
11743 (__mmask8) __U,
11744 _MM_FROUND_CUR_DIRECTION);
11745}
11746
11747extern __inline __m128
11748__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11749_mm_mask_mul_ss (__m128 __W, __mmask8 __U, __m128 __A,
11750 __m128 __B)
11751{
11752 return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
11753 (__v4sf) __B,
11754 (__v4sf) __W,
11755 (__mmask8) __U,
11756 _MM_FROUND_CUR_DIRECTION);
11757}
11758
11759extern __inline __m128
11760__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11761_mm_maskz_mul_ss (__mmask8 __U, __m128 __A, __m128 __B)
11762{
11763 return (__m128) __builtin_ia32_mulss_mask_round ((__v4sf) __A,
11764 (__v4sf) __B,
11765 (__v4sf)
11766 _mm_setzero_ps (),
11767 (__mmask8) __U,
11768 _MM_FROUND_CUR_DIRECTION);
11769}
11770
756c5857
AI
11771extern __inline __m512d
11772__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11773_mm512_div_pd (__m512d __M, __m512d __V)
11774{
2069d6fc 11775 return (__m512d) ((__v8df)__M / (__v8df)__V);
756c5857
AI
11776}
11777
11778extern __inline __m512d
11779__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11780_mm512_mask_div_pd (__m512d __W, __mmask8 __U, __m512d __M, __m512d __V)
11781{
11782 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
11783 (__v8df) __V,
11784 (__v8df) __W,
11785 (__mmask8) __U,
11786 _MM_FROUND_CUR_DIRECTION);
11787}
11788
11789extern __inline __m512d
11790__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11791_mm512_maskz_div_pd (__mmask8 __U, __m512d __M, __m512d __V)
11792{
11793 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M,
11794 (__v8df) __V,
11795 (__v8df)
11796 _mm512_setzero_pd (),
11797 (__mmask8) __U,
11798 _MM_FROUND_CUR_DIRECTION);
11799}
11800
11801extern __inline __m512
11802__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11803_mm512_div_ps (__m512 __A, __m512 __B)
11804{
2069d6fc 11805 return (__m512) ((__v16sf)__A / (__v16sf)__B);
756c5857
AI
11806}
11807
11808extern __inline __m512
11809__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11810_mm512_mask_div_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11811{
11812 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
11813 (__v16sf) __B,
11814 (__v16sf) __W,
11815 (__mmask16) __U,
11816 _MM_FROUND_CUR_DIRECTION);
11817}
11818
11819extern __inline __m512
11820__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11821_mm512_maskz_div_ps (__mmask16 __U, __m512 __A, __m512 __B)
11822{
11823 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
11824 (__v16sf) __B,
11825 (__v16sf)
11826 _mm512_setzero_ps (),
11827 (__mmask16) __U,
11828 _MM_FROUND_CUR_DIRECTION);
11829}
11830
f4ee3a9e
UB
11831extern __inline __m128d
11832__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11833_mm_mask_div_sd (__m128d __W, __mmask8 __U, __m128d __A,
11834 __m128d __B)
11835{
11836 return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
11837 (__v2df) __B,
11838 (__v2df) __W,
11839 (__mmask8) __U,
11840 _MM_FROUND_CUR_DIRECTION);
11841}
11842
11843extern __inline __m128d
11844__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11845_mm_maskz_div_sd (__mmask8 __U, __m128d __A, __m128d __B)
11846{
11847 return (__m128d) __builtin_ia32_divsd_mask_round ((__v2df) __A,
11848 (__v2df) __B,
11849 (__v2df)
11850 _mm_setzero_pd (),
11851 (__mmask8) __U,
11852 _MM_FROUND_CUR_DIRECTION);
11853}
11854
11855extern __inline __m128
11856__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11857_mm_mask_div_ss (__m128 __W, __mmask8 __U, __m128 __A,
11858 __m128 __B)
11859{
11860 return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
11861 (__v4sf) __B,
11862 (__v4sf) __W,
11863 (__mmask8) __U,
11864 _MM_FROUND_CUR_DIRECTION);
11865}
11866
11867extern __inline __m128
11868__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11869_mm_maskz_div_ss (__mmask8 __U, __m128 __A, __m128 __B)
11870{
11871 return (__m128) __builtin_ia32_divss_mask_round ((__v4sf) __A,
11872 (__v4sf) __B,
11873 (__v4sf)
11874 _mm_setzero_ps (),
11875 (__mmask8) __U,
11876 _MM_FROUND_CUR_DIRECTION);
11877}
11878
756c5857
AI
11879extern __inline __m512d
11880__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11881_mm512_max_pd (__m512d __A, __m512d __B)
11882{
11883 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
11884 (__v8df) __B,
11885 (__v8df)
0b192937 11886 _mm512_undefined_pd (),
756c5857
AI
11887 (__mmask8) -1,
11888 _MM_FROUND_CUR_DIRECTION);
11889}
11890
11891extern __inline __m512d
11892__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11893_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
11894{
11895 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
11896 (__v8df) __B,
11897 (__v8df) __W,
11898 (__mmask8) __U,
11899 _MM_FROUND_CUR_DIRECTION);
11900}
11901
11902extern __inline __m512d
11903__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11904_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
11905{
11906 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
11907 (__v8df) __B,
11908 (__v8df)
11909 _mm512_setzero_pd (),
11910 (__mmask8) __U,
11911 _MM_FROUND_CUR_DIRECTION);
11912}
11913
11914extern __inline __m512
11915__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11916_mm512_max_ps (__m512 __A, __m512 __B)
11917{
11918 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
11919 (__v16sf) __B,
11920 (__v16sf)
0b192937 11921 _mm512_undefined_ps (),
756c5857
AI
11922 (__mmask16) -1,
11923 _MM_FROUND_CUR_DIRECTION);
11924}
11925
11926extern __inline __m512
11927__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11928_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
11929{
11930 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
11931 (__v16sf) __B,
11932 (__v16sf) __W,
11933 (__mmask16) __U,
11934 _MM_FROUND_CUR_DIRECTION);
11935}
11936
11937extern __inline __m512
11938__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11939_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
11940{
11941 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
11942 (__v16sf) __B,
11943 (__v16sf)
11944 _mm512_setzero_ps (),
11945 (__mmask16) __U,
11946 _MM_FROUND_CUR_DIRECTION);
11947}
11948
dc7401c0
SP
11949extern __inline __m128d
11950__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11951_mm_mask_max_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
11952{
11953 return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
11954 (__v2df) __B,
11955 (__v2df) __W,
11956 (__mmask8) __U,
11957 _MM_FROUND_CUR_DIRECTION);
11958}
11959
11960extern __inline __m128d
11961__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11962_mm_maskz_max_sd (__mmask8 __U, __m128d __A, __m128d __B)
11963{
11964 return (__m128d) __builtin_ia32_maxsd_mask_round ((__v2df) __A,
11965 (__v2df) __B,
11966 (__v2df)
11967 _mm_setzero_pd (),
11968 (__mmask8) __U,
11969 _MM_FROUND_CUR_DIRECTION);
11970}
11971
11972extern __inline __m128
11973__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11974_mm_mask_max_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
11975{
11976 return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
11977 (__v4sf) __B,
11978 (__v4sf) __W,
11979 (__mmask8) __U,
11980 _MM_FROUND_CUR_DIRECTION);
11981}
11982
11983extern __inline __m128
11984__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11985_mm_maskz_max_ss (__mmask8 __U, __m128 __A, __m128 __B)
11986{
11987 return (__m128) __builtin_ia32_maxss_mask_round ((__v4sf) __A,
11988 (__v4sf) __B,
11989 (__v4sf)
11990 _mm_setzero_ps (),
11991 (__mmask8) __U,
11992 _MM_FROUND_CUR_DIRECTION);
11993}
11994
756c5857
AI
11995extern __inline __m512d
11996__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
11997_mm512_min_pd (__m512d __A, __m512d __B)
11998{
11999 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
12000 (__v8df) __B,
12001 (__v8df)
0b192937 12002 _mm512_undefined_pd (),
756c5857
AI
12003 (__mmask8) -1,
12004 _MM_FROUND_CUR_DIRECTION);
12005}
12006
12007extern __inline __m512d
12008__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12009_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
12010{
12011 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
12012 (__v8df) __B,
12013 (__v8df) __W,
12014 (__mmask8) __U,
12015 _MM_FROUND_CUR_DIRECTION);
12016}
12017
12018extern __inline __m512d
12019__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12020_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
12021{
12022 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
12023 (__v8df) __B,
12024 (__v8df)
12025 _mm512_setzero_pd (),
12026 (__mmask8) __U,
12027 _MM_FROUND_CUR_DIRECTION);
12028}
12029
12030extern __inline __m512
12031__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12032_mm512_min_ps (__m512 __A, __m512 __B)
12033{
12034 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
12035 (__v16sf) __B,
12036 (__v16sf)
0b192937 12037 _mm512_undefined_ps (),
756c5857
AI
12038 (__mmask16) -1,
12039 _MM_FROUND_CUR_DIRECTION);
12040}
12041
12042extern __inline __m512
12043__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12044_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
12045{
12046 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
12047 (__v16sf) __B,
12048 (__v16sf) __W,
12049 (__mmask16) __U,
12050 _MM_FROUND_CUR_DIRECTION);
12051}
12052
12053extern __inline __m512
12054__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12055_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
12056{
12057 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
12058 (__v16sf) __B,
12059 (__v16sf)
12060 _mm512_setzero_ps (),
12061 (__mmask16) __U,
12062 _MM_FROUND_CUR_DIRECTION);
12063}
12064
dc7401c0
SP
12065extern __inline __m128d
12066__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12067_mm_mask_min_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
12068{
12069 return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
12070 (__v2df) __B,
12071 (__v2df) __W,
12072 (__mmask8) __U,
12073 _MM_FROUND_CUR_DIRECTION);
12074}
12075
12076extern __inline __m128d
12077__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12078_mm_maskz_min_sd (__mmask8 __U, __m128d __A, __m128d __B)
12079{
12080 return (__m128d) __builtin_ia32_minsd_mask_round ((__v2df) __A,
12081 (__v2df) __B,
12082 (__v2df)
12083 _mm_setzero_pd (),
12084 (__mmask8) __U,
12085 _MM_FROUND_CUR_DIRECTION);
12086}
12087
12088extern __inline __m128
12089__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12090_mm_mask_min_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
12091{
12092 return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
12093 (__v4sf) __B,
12094 (__v4sf) __W,
12095 (__mmask8) __U,
12096 _MM_FROUND_CUR_DIRECTION);
12097}
12098
12099extern __inline __m128
12100__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12101_mm_maskz_min_ss (__mmask8 __U, __m128 __A, __m128 __B)
12102{
12103 return (__m128) __builtin_ia32_minss_mask_round ((__v4sf) __A,
12104 (__v4sf) __B,
12105 (__v4sf)
12106 _mm_setzero_ps (),
12107 (__mmask8) __U,
12108 _MM_FROUND_CUR_DIRECTION);
12109}
12110
756c5857
AI
12111extern __inline __m512d
12112__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12113_mm512_scalef_pd (__m512d __A, __m512d __B)
12114{
12115 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
12116 (__v8df) __B,
12117 (__v8df)
0b192937 12118 _mm512_undefined_pd (),
756c5857
AI
12119 (__mmask8) -1,
12120 _MM_FROUND_CUR_DIRECTION);
12121}
12122
12123extern __inline __m512d
12124__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12125_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
12126{
12127 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
12128 (__v8df) __B,
12129 (__v8df) __W,
12130 (__mmask8) __U,
12131 _MM_FROUND_CUR_DIRECTION);
12132}
12133
12134extern __inline __m512d
12135__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12136_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
12137{
12138 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
12139 (__v8df) __B,
12140 (__v8df)
12141 _mm512_setzero_pd (),
12142 (__mmask8) __U,
12143 _MM_FROUND_CUR_DIRECTION);
12144}
12145
12146extern __inline __m512
12147__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12148_mm512_scalef_ps (__m512 __A, __m512 __B)
12149{
12150 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
12151 (__v16sf) __B,
12152 (__v16sf)
0b192937 12153 _mm512_undefined_ps (),
756c5857
AI
12154 (__mmask16) -1,
12155 _MM_FROUND_CUR_DIRECTION);
12156}
12157
12158extern __inline __m512
12159__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12160_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
12161{
12162 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
12163 (__v16sf) __B,
12164 (__v16sf) __W,
12165 (__mmask16) __U,
12166 _MM_FROUND_CUR_DIRECTION);
12167}
12168
12169extern __inline __m512
12170__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12171_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
12172{
12173 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
12174 (__v16sf) __B,
12175 (__v16sf)
12176 _mm512_setzero_ps (),
12177 (__mmask16) __U,
12178 _MM_FROUND_CUR_DIRECTION);
12179}
12180
075691af
AI
12181extern __inline __m128d
12182__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12183_mm_scalef_sd (__m128d __A, __m128d __B)
12184{
12185 return (__m128d) __builtin_ia32_scalefsd_round ((__v2df) __A,
12186 (__v2df) __B,
12187 _MM_FROUND_CUR_DIRECTION);
12188}
12189
12190extern __inline __m128
12191__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12192_mm_scalef_ss (__m128 __A, __m128 __B)
12193{
12194 return (__m128) __builtin_ia32_scalefss_round ((__v4sf) __A,
12195 (__v4sf) __B,
12196 _MM_FROUND_CUR_DIRECTION);
12197}
12198
756c5857
AI
12199extern __inline __m512d
12200__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12201_mm512_fmadd_pd (__m512d __A, __m512d __B, __m512d __C)
12202{
12203 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
12204 (__v8df) __B,
12205 (__v8df) __C,
12206 (__mmask8) -1,
12207 _MM_FROUND_CUR_DIRECTION);
12208}
12209
12210extern __inline __m512d
12211__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12212_mm512_mask_fmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
12213{
12214 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
12215 (__v8df) __B,
12216 (__v8df) __C,
12217 (__mmask8) __U,
12218 _MM_FROUND_CUR_DIRECTION);
12219}
12220
12221extern __inline __m512d
12222__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12223_mm512_mask3_fmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
12224{
12225 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
12226 (__v8df) __B,
12227 (__v8df) __C,
12228 (__mmask8) __U,
12229 _MM_FROUND_CUR_DIRECTION);
12230}
12231
12232extern __inline __m512d
12233__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12234_mm512_maskz_fmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
12235{
12236 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
12237 (__v8df) __B,
12238 (__v8df) __C,
12239 (__mmask8) __U,
12240 _MM_FROUND_CUR_DIRECTION);
12241}
12242
12243extern __inline __m512
12244__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12245_mm512_fmadd_ps (__m512 __A, __m512 __B, __m512 __C)
12246{
12247 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
12248 (__v16sf) __B,
12249 (__v16sf) __C,
12250 (__mmask16) -1,
12251 _MM_FROUND_CUR_DIRECTION);
12252}
12253
12254extern __inline __m512
12255__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12256_mm512_mask_fmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
12257{
12258 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
12259 (__v16sf) __B,
12260 (__v16sf) __C,
12261 (__mmask16) __U,
12262 _MM_FROUND_CUR_DIRECTION);
12263}
12264
12265extern __inline __m512
12266__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12267_mm512_mask3_fmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
12268{
12269 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
12270 (__v16sf) __B,
12271 (__v16sf) __C,
12272 (__mmask16) __U,
12273 _MM_FROUND_CUR_DIRECTION);
12274}
12275
12276extern __inline __m512
12277__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12278_mm512_maskz_fmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
12279{
12280 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
12281 (__v16sf) __B,
12282 (__v16sf) __C,
12283 (__mmask16) __U,
12284 _MM_FROUND_CUR_DIRECTION);
12285}
12286
12287extern __inline __m512d
12288__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12289_mm512_fmsub_pd (__m512d __A, __m512d __B, __m512d __C)
12290{
12291 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
12292 (__v8df) __B,
12293 -(__v8df) __C,
12294 (__mmask8) -1,
12295 _MM_FROUND_CUR_DIRECTION);
12296}
12297
12298extern __inline __m512d
12299__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12300_mm512_mask_fmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
12301{
12302 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
12303 (__v8df) __B,
12304 -(__v8df) __C,
12305 (__mmask8) __U,
12306 _MM_FROUND_CUR_DIRECTION);
12307}
12308
12309extern __inline __m512d
12310__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12311_mm512_mask3_fmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
12312{
12313 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
12314 (__v8df) __B,
12315 (__v8df) __C,
12316 (__mmask8) __U,
12317 _MM_FROUND_CUR_DIRECTION);
12318}
12319
12320extern __inline __m512d
12321__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12322_mm512_maskz_fmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
12323{
12324 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
12325 (__v8df) __B,
12326 -(__v8df) __C,
12327 (__mmask8) __U,
12328 _MM_FROUND_CUR_DIRECTION);
12329}
12330
12331extern __inline __m512
12332__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12333_mm512_fmsub_ps (__m512 __A, __m512 __B, __m512 __C)
12334{
12335 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
12336 (__v16sf) __B,
12337 -(__v16sf) __C,
12338 (__mmask16) -1,
12339 _MM_FROUND_CUR_DIRECTION);
12340}
12341
12342extern __inline __m512
12343__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12344_mm512_mask_fmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
12345{
12346 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
12347 (__v16sf) __B,
12348 -(__v16sf) __C,
12349 (__mmask16) __U,
12350 _MM_FROUND_CUR_DIRECTION);
12351}
12352
12353extern __inline __m512
12354__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12355_mm512_mask3_fmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
12356{
12357 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
12358 (__v16sf) __B,
12359 (__v16sf) __C,
12360 (__mmask16) __U,
12361 _MM_FROUND_CUR_DIRECTION);
12362}
12363
12364extern __inline __m512
12365__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12366_mm512_maskz_fmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
12367{
12368 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
12369 (__v16sf) __B,
12370 -(__v16sf) __C,
12371 (__mmask16) __U,
12372 _MM_FROUND_CUR_DIRECTION);
12373}
12374
12375extern __inline __m512d
12376__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12377_mm512_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C)
12378{
12379 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
12380 (__v8df) __B,
12381 (__v8df) __C,
12382 (__mmask8) -1,
12383 _MM_FROUND_CUR_DIRECTION);
12384}
12385
12386extern __inline __m512d
12387__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12388_mm512_mask_fmaddsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
12389{
12390 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
12391 (__v8df) __B,
12392 (__v8df) __C,
12393 (__mmask8) __U,
12394 _MM_FROUND_CUR_DIRECTION);
12395}
12396
12397extern __inline __m512d
12398__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12399_mm512_mask3_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
12400{
12401 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
12402 (__v8df) __B,
12403 (__v8df) __C,
12404 (__mmask8) __U,
12405 _MM_FROUND_CUR_DIRECTION);
12406}
12407
12408extern __inline __m512d
12409__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12410_mm512_maskz_fmaddsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
12411{
12412 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
12413 (__v8df) __B,
12414 (__v8df) __C,
12415 (__mmask8) __U,
12416 _MM_FROUND_CUR_DIRECTION);
12417}
12418
12419extern __inline __m512
12420__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12421_mm512_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C)
12422{
12423 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
12424 (__v16sf) __B,
12425 (__v16sf) __C,
12426 (__mmask16) -1,
12427 _MM_FROUND_CUR_DIRECTION);
12428}
12429
12430extern __inline __m512
12431__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12432_mm512_mask_fmaddsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
12433{
12434 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
12435 (__v16sf) __B,
12436 (__v16sf) __C,
12437 (__mmask16) __U,
12438 _MM_FROUND_CUR_DIRECTION);
12439}
12440
12441extern __inline __m512
12442__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12443_mm512_mask3_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
12444{
12445 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
12446 (__v16sf) __B,
12447 (__v16sf) __C,
12448 (__mmask16) __U,
12449 _MM_FROUND_CUR_DIRECTION);
12450}
12451
12452extern __inline __m512
12453__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12454_mm512_maskz_fmaddsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
12455{
12456 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
12457 (__v16sf) __B,
12458 (__v16sf) __C,
12459 (__mmask16) __U,
12460 _MM_FROUND_CUR_DIRECTION);
12461}
12462
12463extern __inline __m512d
12464__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12465_mm512_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C)
12466{
12467 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
12468 (__v8df) __B,
12469 -(__v8df) __C,
12470 (__mmask8) -1,
12471 _MM_FROUND_CUR_DIRECTION);
12472}
12473
12474extern __inline __m512d
12475__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12476_mm512_mask_fmsubadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
12477{
12478 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
12479 (__v8df) __B,
12480 -(__v8df) __C,
12481 (__mmask8) __U,
12482 _MM_FROUND_CUR_DIRECTION);
12483}
12484
12485extern __inline __m512d
12486__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12487_mm512_mask3_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
12488{
12489 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
12490 (__v8df) __B,
12491 (__v8df) __C,
12492 (__mmask8) __U,
12493 _MM_FROUND_CUR_DIRECTION);
12494}
12495
12496extern __inline __m512d
12497__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12498_mm512_maskz_fmsubadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
12499{
12500 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
12501 (__v8df) __B,
12502 -(__v8df) __C,
12503 (__mmask8) __U,
12504 _MM_FROUND_CUR_DIRECTION);
12505}
12506
12507extern __inline __m512
12508__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12509_mm512_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C)
12510{
12511 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
12512 (__v16sf) __B,
12513 -(__v16sf) __C,
12514 (__mmask16) -1,
12515 _MM_FROUND_CUR_DIRECTION);
12516}
12517
12518extern __inline __m512
12519__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12520_mm512_mask_fmsubadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
12521{
12522 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
12523 (__v16sf) __B,
12524 -(__v16sf) __C,
12525 (__mmask16) __U,
12526 _MM_FROUND_CUR_DIRECTION);
12527}
12528
12529extern __inline __m512
12530__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12531_mm512_mask3_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
12532{
12533 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
12534 (__v16sf) __B,
12535 (__v16sf) __C,
12536 (__mmask16) __U,
12537 _MM_FROUND_CUR_DIRECTION);
12538}
12539
12540extern __inline __m512
12541__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12542_mm512_maskz_fmsubadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
12543{
12544 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
12545 (__v16sf) __B,
12546 -(__v16sf) __C,
12547 (__mmask16) __U,
12548 _MM_FROUND_CUR_DIRECTION);
12549}
12550
12551extern __inline __m512d
12552__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12553_mm512_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C)
12554{
12555 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
12556 (__v8df) __B,
12557 (__v8df) __C,
12558 (__mmask8) -1,
12559 _MM_FROUND_CUR_DIRECTION);
12560}
12561
12562extern __inline __m512d
12563__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12564_mm512_mask_fnmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
12565{
12566 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
12567 (__v8df) __B,
12568 (__v8df) __C,
12569 (__mmask8) __U,
12570 _MM_FROUND_CUR_DIRECTION);
12571}
12572
12573extern __inline __m512d
12574__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12575_mm512_mask3_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
12576{
12577 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
12578 (__v8df) __B,
12579 (__v8df) __C,
12580 (__mmask8) __U,
12581 _MM_FROUND_CUR_DIRECTION);
12582}
12583
12584extern __inline __m512d
12585__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12586_mm512_maskz_fnmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
12587{
12588 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
12589 (__v8df) __B,
12590 (__v8df) __C,
12591 (__mmask8) __U,
12592 _MM_FROUND_CUR_DIRECTION);
12593}
12594
12595extern __inline __m512
12596__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12597_mm512_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C)
12598{
12599 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
12600 (__v16sf) __B,
12601 (__v16sf) __C,
12602 (__mmask16) -1,
12603 _MM_FROUND_CUR_DIRECTION);
12604}
12605
12606extern __inline __m512
12607__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12608_mm512_mask_fnmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
12609{
12610 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
12611 (__v16sf) __B,
12612 (__v16sf) __C,
12613 (__mmask16) __U,
12614 _MM_FROUND_CUR_DIRECTION);
12615}
12616
12617extern __inline __m512
12618__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12619_mm512_mask3_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
12620{
12621 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
12622 (__v16sf) __B,
12623 (__v16sf) __C,
12624 (__mmask16) __U,
12625 _MM_FROUND_CUR_DIRECTION);
12626}
12627
12628extern __inline __m512
12629__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12630_mm512_maskz_fnmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
12631{
12632 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
12633 (__v16sf) __B,
12634 (__v16sf) __C,
12635 (__mmask16) __U,
12636 _MM_FROUND_CUR_DIRECTION);
12637}
12638
12639extern __inline __m512d
12640__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12641_mm512_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C)
12642{
12643 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
12644 (__v8df) __B,
12645 -(__v8df) __C,
12646 (__mmask8) -1,
12647 _MM_FROUND_CUR_DIRECTION);
12648}
12649
12650extern __inline __m512d
12651__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12652_mm512_mask_fnmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
12653{
12654 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
12655 (__v8df) __B,
12656 (__v8df) __C,
12657 (__mmask8) __U,
12658 _MM_FROUND_CUR_DIRECTION);
12659}
12660
12661extern __inline __m512d
12662__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12663_mm512_mask3_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
12664{
12665 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
12666 (__v8df) __B,
12667 (__v8df) __C,
12668 (__mmask8) __U,
12669 _MM_FROUND_CUR_DIRECTION);
12670}
12671
12672extern __inline __m512d
12673__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12674_mm512_maskz_fnmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
12675{
12676 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
12677 (__v8df) __B,
12678 -(__v8df) __C,
12679 (__mmask8) __U,
12680 _MM_FROUND_CUR_DIRECTION);
12681}
12682
12683extern __inline __m512
12684__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12685_mm512_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C)
12686{
12687 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
12688 (__v16sf) __B,
12689 -(__v16sf) __C,
12690 (__mmask16) -1,
12691 _MM_FROUND_CUR_DIRECTION);
12692}
12693
12694extern __inline __m512
12695__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12696_mm512_mask_fnmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
12697{
12698 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
12699 (__v16sf) __B,
12700 (__v16sf) __C,
12701 (__mmask16) __U,
12702 _MM_FROUND_CUR_DIRECTION);
12703}
12704
12705extern __inline __m512
12706__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12707_mm512_mask3_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
12708{
12709 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
12710 (__v16sf) __B,
12711 (__v16sf) __C,
12712 (__mmask16) __U,
12713 _MM_FROUND_CUR_DIRECTION);
12714}
12715
12716extern __inline __m512
12717__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12718_mm512_maskz_fnmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
12719{
12720 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
12721 (__v16sf) __B,
12722 -(__v16sf) __C,
12723 (__mmask16) __U,
12724 _MM_FROUND_CUR_DIRECTION);
12725}
12726
12727extern __inline __m256i
12728__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12729_mm512_cvttpd_epi32 (__m512d __A)
12730{
12731 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
12732 (__v8si)
0b192937 12733 _mm256_undefined_si256 (),
756c5857
AI
12734 (__mmask8) -1,
12735 _MM_FROUND_CUR_DIRECTION);
12736}
12737
12738extern __inline __m256i
12739__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12740_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
12741{
12742 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
12743 (__v8si) __W,
12744 (__mmask8) __U,
12745 _MM_FROUND_CUR_DIRECTION);
12746}
12747
12748extern __inline __m256i
12749__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12750_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
12751{
12752 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
12753 (__v8si)
12754 _mm256_setzero_si256 (),
12755 (__mmask8) __U,
12756 _MM_FROUND_CUR_DIRECTION);
12757}
12758
12759extern __inline __m256i
12760__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12761_mm512_cvttpd_epu32 (__m512d __A)
12762{
12763 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
12764 (__v8si)
0b192937 12765 _mm256_undefined_si256 (),
756c5857
AI
12766 (__mmask8) -1,
12767 _MM_FROUND_CUR_DIRECTION);
12768}
12769
12770extern __inline __m256i
12771__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12772_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
12773{
12774 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
12775 (__v8si) __W,
12776 (__mmask8) __U,
12777 _MM_FROUND_CUR_DIRECTION);
12778}
12779
12780extern __inline __m256i
12781__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12782_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
12783{
12784 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
12785 (__v8si)
12786 _mm256_setzero_si256 (),
12787 (__mmask8) __U,
12788 _MM_FROUND_CUR_DIRECTION);
12789}
12790
12791extern __inline __m256i
12792__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12793_mm512_cvtpd_epi32 (__m512d __A)
12794{
12795 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
12796 (__v8si)
0b192937 12797 _mm256_undefined_si256 (),
756c5857
AI
12798 (__mmask8) -1,
12799 _MM_FROUND_CUR_DIRECTION);
12800}
12801
12802extern __inline __m256i
12803__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12804_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
12805{
12806 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
12807 (__v8si) __W,
12808 (__mmask8) __U,
12809 _MM_FROUND_CUR_DIRECTION);
12810}
12811
12812extern __inline __m256i
12813__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12814_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
12815{
12816 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
12817 (__v8si)
12818 _mm256_setzero_si256 (),
12819 (__mmask8) __U,
12820 _MM_FROUND_CUR_DIRECTION);
12821}
12822
12823extern __inline __m256i
12824__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12825_mm512_cvtpd_epu32 (__m512d __A)
12826{
12827 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
12828 (__v8si)
0b192937 12829 _mm256_undefined_si256 (),
756c5857
AI
12830 (__mmask8) -1,
12831 _MM_FROUND_CUR_DIRECTION);
12832}
12833
12834extern __inline __m256i
12835__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12836_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
12837{
12838 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
12839 (__v8si) __W,
12840 (__mmask8) __U,
12841 _MM_FROUND_CUR_DIRECTION);
12842}
12843
12844extern __inline __m256i
12845__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12846_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
12847{
12848 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
12849 (__v8si)
12850 _mm256_setzero_si256 (),
12851 (__mmask8) __U,
12852 _MM_FROUND_CUR_DIRECTION);
12853}
12854
12855extern __inline __m512i
12856__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12857_mm512_cvttps_epi32 (__m512 __A)
12858{
12859 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
12860 (__v16si)
4271e5cb 12861 _mm512_undefined_epi32 (),
756c5857
AI
12862 (__mmask16) -1,
12863 _MM_FROUND_CUR_DIRECTION);
12864}
12865
12866extern __inline __m512i
12867__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12868_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
12869{
12870 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
12871 (__v16si) __W,
12872 (__mmask16) __U,
12873 _MM_FROUND_CUR_DIRECTION);
12874}
12875
12876extern __inline __m512i
12877__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12878_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
12879{
12880 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
12881 (__v16si)
12882 _mm512_setzero_si512 (),
12883 (__mmask16) __U,
12884 _MM_FROUND_CUR_DIRECTION);
12885}
12886
12887extern __inline __m512i
12888__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12889_mm512_cvttps_epu32 (__m512 __A)
12890{
12891 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
12892 (__v16si)
4271e5cb 12893 _mm512_undefined_epi32 (),
756c5857
AI
12894 (__mmask16) -1,
12895 _MM_FROUND_CUR_DIRECTION);
12896}
12897
12898extern __inline __m512i
12899__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12900_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
12901{
12902 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
12903 (__v16si) __W,
12904 (__mmask16) __U,
12905 _MM_FROUND_CUR_DIRECTION);
12906}
12907
12908extern __inline __m512i
12909__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12910_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
12911{
12912 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
12913 (__v16si)
12914 _mm512_setzero_si512 (),
12915 (__mmask16) __U,
12916 _MM_FROUND_CUR_DIRECTION);
12917}
12918
12919extern __inline __m512i
12920__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12921_mm512_cvtps_epi32 (__m512 __A)
12922{
12923 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
12924 (__v16si)
4271e5cb 12925 _mm512_undefined_epi32 (),
756c5857
AI
12926 (__mmask16) -1,
12927 _MM_FROUND_CUR_DIRECTION);
12928}
12929
12930extern __inline __m512i
12931__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12932_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
12933{
12934 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
12935 (__v16si) __W,
12936 (__mmask16) __U,
12937 _MM_FROUND_CUR_DIRECTION);
12938}
12939
12940extern __inline __m512i
12941__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12942_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
12943{
12944 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
12945 (__v16si)
12946 _mm512_setzero_si512 (),
12947 (__mmask16) __U,
12948 _MM_FROUND_CUR_DIRECTION);
12949}
12950
12951extern __inline __m512i
12952__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12953_mm512_cvtps_epu32 (__m512 __A)
12954{
12955 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
12956 (__v16si)
4271e5cb 12957 _mm512_undefined_epi32 (),
756c5857
AI
12958 (__mmask16) -1,
12959 _MM_FROUND_CUR_DIRECTION);
12960}
12961
12962extern __inline __m512i
12963__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12964_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
12965{
12966 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
12967 (__v16si) __W,
12968 (__mmask16) __U,
12969 _MM_FROUND_CUR_DIRECTION);
12970}
12971
12972extern __inline __m512i
12973__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12974_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
12975{
12976 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
12977 (__v16si)
12978 _mm512_setzero_si512 (),
12979 (__mmask16) __U,
12980 _MM_FROUND_CUR_DIRECTION);
12981}
12982
dcb2c527
JJ
12983extern __inline double
12984__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12985_mm512_cvtsd_f64 (__m512d __A)
12986{
12987 return __A[0];
12988}
12989
12990extern __inline float
12991__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
12992_mm512_cvtss_f32 (__m512 __A)
12993{
12994 return __A[0];
12995}
12996
756c5857
AI
12997#ifdef __x86_64__
12998extern __inline __m128
12999__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13000_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
13001{
13002 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
13003 _MM_FROUND_CUR_DIRECTION);
13004}
13005
13006extern __inline __m128d
13007__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13008_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
13009{
13010 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
13011 _MM_FROUND_CUR_DIRECTION);
13012}
13013#endif
13014
13015extern __inline __m128
13016__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13017_mm_cvtu32_ss (__m128 __A, unsigned __B)
13018{
13019 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
13020 _MM_FROUND_CUR_DIRECTION);
13021}
13022
13023extern __inline __m512
13024__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13025_mm512_cvtepi32_ps (__m512i __A)
13026{
13027 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
13028 (__v16sf)
0b192937 13029 _mm512_undefined_ps (),
756c5857
AI
13030 (__mmask16) -1,
13031 _MM_FROUND_CUR_DIRECTION);
13032}
13033
13034extern __inline __m512
13035__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13036_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
13037{
13038 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
13039 (__v16sf) __W,
13040 (__mmask16) __U,
13041 _MM_FROUND_CUR_DIRECTION);
13042}
13043
13044extern __inline __m512
13045__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13046_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
13047{
13048 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
13049 (__v16sf)
13050 _mm512_setzero_ps (),
13051 (__mmask16) __U,
13052 _MM_FROUND_CUR_DIRECTION);
13053}
13054
13055extern __inline __m512
13056__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13057_mm512_cvtepu32_ps (__m512i __A)
13058{
13059 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
13060 (__v16sf)
0b192937 13061 _mm512_undefined_ps (),
756c5857
AI
13062 (__mmask16) -1,
13063 _MM_FROUND_CUR_DIRECTION);
13064}
13065
13066extern __inline __m512
13067__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13068_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
13069{
13070 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
13071 (__v16sf) __W,
13072 (__mmask16) __U,
13073 _MM_FROUND_CUR_DIRECTION);
13074}
13075
13076extern __inline __m512
13077__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13078_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
13079{
13080 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
13081 (__v16sf)
13082 _mm512_setzero_ps (),
13083 (__mmask16) __U,
13084 _MM_FROUND_CUR_DIRECTION);
13085}
13086
13087#ifdef __OPTIMIZE__
13088extern __inline __m512d
13089__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13090_mm512_fixupimm_pd (__m512d __A, __m512d __B, __m512i __C, const int __imm)
13091{
13092 return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
13093 (__v8df) __B,
13094 (__v8di) __C,
13095 __imm,
13096 (__mmask8) -1,
13097 _MM_FROUND_CUR_DIRECTION);
13098}
13099
13100extern __inline __m512d
13101__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13102_mm512_mask_fixupimm_pd (__m512d __A, __mmask8 __U, __m512d __B,
13103 __m512i __C, const int __imm)
13104{
13105 return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A,
13106 (__v8df) __B,
13107 (__v8di) __C,
13108 __imm,
13109 (__mmask8) __U,
13110 _MM_FROUND_CUR_DIRECTION);
13111}
13112
13113extern __inline __m512d
13114__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13115_mm512_maskz_fixupimm_pd (__mmask8 __U, __m512d __A, __m512d __B,
13116 __m512i __C, const int __imm)
13117{
13118 return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A,
13119 (__v8df) __B,
13120 (__v8di) __C,
13121 __imm,
13122 (__mmask8) __U,
13123 _MM_FROUND_CUR_DIRECTION);
13124}
13125
13126extern __inline __m512
13127__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13128_mm512_fixupimm_ps (__m512 __A, __m512 __B, __m512i __C, const int __imm)
13129{
13130 return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
13131 (__v16sf) __B,
13132 (__v16si) __C,
13133 __imm,
13134 (__mmask16) -1,
13135 _MM_FROUND_CUR_DIRECTION);
13136}
13137
13138extern __inline __m512
13139__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13140_mm512_mask_fixupimm_ps (__m512 __A, __mmask16 __U, __m512 __B,
13141 __m512i __C, const int __imm)
13142{
13143 return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A,
13144 (__v16sf) __B,
13145 (__v16si) __C,
13146 __imm,
13147 (__mmask16) __U,
13148 _MM_FROUND_CUR_DIRECTION);
13149}
13150
13151extern __inline __m512
13152__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13153_mm512_maskz_fixupimm_ps (__mmask16 __U, __m512 __A, __m512 __B,
13154 __m512i __C, const int __imm)
13155{
13156 return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A,
13157 (__v16sf) __B,
13158 (__v16si) __C,
13159 __imm,
13160 (__mmask16) __U,
13161 _MM_FROUND_CUR_DIRECTION);
13162}
13163
13164extern __inline __m128d
13165__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13166_mm_fixupimm_sd (__m128d __A, __m128d __B, __m128i __C, const int __imm)
13167{
13168 return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
13169 (__v2df) __B,
13170 (__v2di) __C, __imm,
13171 (__mmask8) -1,
13172 _MM_FROUND_CUR_DIRECTION);
13173}
13174
13175extern __inline __m128d
13176__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13177_mm_mask_fixupimm_sd (__m128d __A, __mmask8 __U, __m128d __B,
13178 __m128i __C, const int __imm)
13179{
13180 return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A,
13181 (__v2df) __B,
13182 (__v2di) __C, __imm,
13183 (__mmask8) __U,
13184 _MM_FROUND_CUR_DIRECTION);
13185}
13186
13187extern __inline __m128d
13188__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13189_mm_maskz_fixupimm_sd (__mmask8 __U, __m128d __A, __m128d __B,
13190 __m128i __C, const int __imm)
13191{
13192 return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A,
13193 (__v2df) __B,
13194 (__v2di) __C,
13195 __imm,
13196 (__mmask8) __U,
13197 _MM_FROUND_CUR_DIRECTION);
13198}
13199
13200extern __inline __m128
13201__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13202_mm_fixupimm_ss (__m128 __A, __m128 __B, __m128i __C, const int __imm)
13203{
13204 return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
13205 (__v4sf) __B,
13206 (__v4si) __C, __imm,
13207 (__mmask8) -1,
13208 _MM_FROUND_CUR_DIRECTION);
13209}
13210
13211extern __inline __m128
13212__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13213_mm_mask_fixupimm_ss (__m128 __A, __mmask8 __U, __m128 __B,
13214 __m128i __C, const int __imm)
13215{
13216 return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A,
13217 (__v4sf) __B,
13218 (__v4si) __C, __imm,
13219 (__mmask8) __U,
13220 _MM_FROUND_CUR_DIRECTION);
13221}
13222
13223extern __inline __m128
13224__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13225_mm_maskz_fixupimm_ss (__mmask8 __U, __m128 __A, __m128 __B,
13226 __m128i __C, const int __imm)
13227{
13228 return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A,
13229 (__v4sf) __B,
13230 (__v4si) __C, __imm,
13231 (__mmask8) __U,
13232 _MM_FROUND_CUR_DIRECTION);
13233}
13234#else
13235#define _mm512_fixupimm_pd(X, Y, Z, C) \
13236 ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
13237 (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
13238 (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
13239
13240#define _mm512_mask_fixupimm_pd(X, U, Y, Z, C) \
13241 ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \
13242 (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
13243 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13244
13245#define _mm512_maskz_fixupimm_pd(U, X, Y, Z, C) \
13246 ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X), \
13247 (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \
13248 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13249
13250#define _mm512_fixupimm_ps(X, Y, Z, C) \
13251 ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
13252 (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
13253 (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION))
13254
13255#define _mm512_mask_fixupimm_ps(X, U, Y, Z, C) \
13256 ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \
13257 (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
13258 (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
13259
13260#define _mm512_maskz_fixupimm_ps(U, X, Y, Z, C) \
13261 ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X), \
13262 (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \
13263 (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
13264
13265#define _mm_fixupimm_sd(X, Y, Z, C) \
13266 ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
13267 (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
13268 (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
13269
13270#define _mm_mask_fixupimm_sd(X, U, Y, Z, C) \
13271 ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \
13272 (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
13273 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13274
13275#define _mm_maskz_fixupimm_sd(U, X, Y, Z, C) \
13276 ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X), \
13277 (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \
13278 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13279
13280#define _mm_fixupimm_ss(X, Y, Z, C) \
13281 ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
13282 (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
13283 (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
13284
13285#define _mm_mask_fixupimm_ss(X, U, Y, Z, C) \
13286 ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \
13287 (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
13288 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13289
13290#define _mm_maskz_fixupimm_ss(U, X, Y, Z, C) \
13291 ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X), \
13292 (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \
13293 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13294#endif
13295
13296#ifdef __x86_64__
13297extern __inline unsigned long long
13298__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13299_mm_cvtss_u64 (__m128 __A)
13300{
13301 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
13302 __A,
13303 _MM_FROUND_CUR_DIRECTION);
13304}
13305
13306extern __inline unsigned long long
13307__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13308_mm_cvttss_u64 (__m128 __A)
13309{
13310 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
13311 __A,
13312 _MM_FROUND_CUR_DIRECTION);
13313}
13314
13315extern __inline long long
13316__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13317_mm_cvttss_i64 (__m128 __A)
13318{
13319 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
13320 _MM_FROUND_CUR_DIRECTION);
13321}
13322#endif /* __x86_64__ */
13323
13324extern __inline unsigned
13325__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13326_mm_cvtss_u32 (__m128 __A)
13327{
13328 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
13329 _MM_FROUND_CUR_DIRECTION);
13330}
13331
13332extern __inline unsigned
13333__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13334_mm_cvttss_u32 (__m128 __A)
13335{
13336 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
13337 _MM_FROUND_CUR_DIRECTION);
13338}
13339
13340extern __inline int
13341__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13342_mm_cvttss_i32 (__m128 __A)
13343{
13344 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
13345 _MM_FROUND_CUR_DIRECTION);
13346}
13347
13348#ifdef __x86_64__
13349extern __inline unsigned long long
13350__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13351_mm_cvtsd_u64 (__m128d __A)
13352{
13353 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
13354 __A,
13355 _MM_FROUND_CUR_DIRECTION);
13356}
13357
13358extern __inline unsigned long long
13359__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13360_mm_cvttsd_u64 (__m128d __A)
13361{
13362 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
13363 __A,
13364 _MM_FROUND_CUR_DIRECTION);
13365}
13366
13367extern __inline long long
13368__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13369_mm_cvttsd_i64 (__m128d __A)
13370{
13371 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
13372 _MM_FROUND_CUR_DIRECTION);
13373}
13374#endif /* __x86_64__ */
13375
13376extern __inline unsigned
13377__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13378_mm_cvtsd_u32 (__m128d __A)
13379{
13380 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
13381 _MM_FROUND_CUR_DIRECTION);
13382}
13383
13384extern __inline unsigned
13385__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13386_mm_cvttsd_u32 (__m128d __A)
13387{
13388 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
13389 _MM_FROUND_CUR_DIRECTION);
13390}
13391
13392extern __inline int
13393__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13394_mm_cvttsd_i32 (__m128d __A)
13395{
13396 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
13397 _MM_FROUND_CUR_DIRECTION);
13398}
13399
13400extern __inline __m512d
13401__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13402_mm512_cvtps_pd (__m256 __A)
13403{
13404 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
13405 (__v8df)
0b192937 13406 _mm512_undefined_pd (),
756c5857
AI
13407 (__mmask8) -1,
13408 _MM_FROUND_CUR_DIRECTION);
13409}
13410
13411extern __inline __m512d
13412__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13413_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
13414{
13415 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
13416 (__v8df) __W,
13417 (__mmask8) __U,
13418 _MM_FROUND_CUR_DIRECTION);
13419}
13420
13421extern __inline __m512d
13422__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13423_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
13424{
13425 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
13426 (__v8df)
13427 _mm512_setzero_pd (),
13428 (__mmask8) __U,
13429 _MM_FROUND_CUR_DIRECTION);
13430}
13431
13432extern __inline __m512
13433__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13434_mm512_cvtph_ps (__m256i __A)
13435{
13436 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
13437 (__v16sf)
0b192937 13438 _mm512_undefined_ps (),
756c5857
AI
13439 (__mmask16) -1,
13440 _MM_FROUND_CUR_DIRECTION);
13441}
13442
13443extern __inline __m512
13444__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13445_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
13446{
13447 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
13448 (__v16sf) __W,
13449 (__mmask16) __U,
13450 _MM_FROUND_CUR_DIRECTION);
13451}
13452
13453extern __inline __m512
13454__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13455_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
13456{
13457 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
13458 (__v16sf)
13459 _mm512_setzero_ps (),
13460 (__mmask16) __U,
13461 _MM_FROUND_CUR_DIRECTION);
13462}
13463
13464extern __inline __m256
13465__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13466_mm512_cvtpd_ps (__m512d __A)
13467{
13468 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
13469 (__v8sf)
0b192937 13470 _mm256_undefined_ps (),
756c5857
AI
13471 (__mmask8) -1,
13472 _MM_FROUND_CUR_DIRECTION);
13473}
13474
13475extern __inline __m256
13476__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13477_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
13478{
13479 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
13480 (__v8sf) __W,
13481 (__mmask8) __U,
13482 _MM_FROUND_CUR_DIRECTION);
13483}
13484
13485extern __inline __m256
13486__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13487_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
13488{
13489 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
13490 (__v8sf)
13491 _mm256_setzero_ps (),
13492 (__mmask8) __U,
13493 _MM_FROUND_CUR_DIRECTION);
13494}
13495
13496#ifdef __OPTIMIZE__
13497extern __inline __m512
13498__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13499_mm512_getexp_ps (__m512 __A)
13500{
13501 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
13502 (__v16sf)
0b192937 13503 _mm512_undefined_ps (),
756c5857
AI
13504 (__mmask16) -1,
13505 _MM_FROUND_CUR_DIRECTION);
13506}
13507
13508extern __inline __m512
13509__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13510_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
13511{
13512 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
13513 (__v16sf) __W,
13514 (__mmask16) __U,
13515 _MM_FROUND_CUR_DIRECTION);
13516}
13517
13518extern __inline __m512
13519__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13520_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
13521{
13522 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
13523 (__v16sf)
13524 _mm512_setzero_ps (),
13525 (__mmask16) __U,
13526 _MM_FROUND_CUR_DIRECTION);
13527}
13528
13529extern __inline __m512d
13530__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13531_mm512_getexp_pd (__m512d __A)
13532{
13533 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
13534 (__v8df)
0b192937 13535 _mm512_undefined_pd (),
756c5857
AI
13536 (__mmask8) -1,
13537 _MM_FROUND_CUR_DIRECTION);
13538}
13539
13540extern __inline __m512d
13541__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13542_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
13543{
13544 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
13545 (__v8df) __W,
13546 (__mmask8) __U,
13547 _MM_FROUND_CUR_DIRECTION);
13548}
13549
13550extern __inline __m512d
13551__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13552_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
13553{
13554 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
13555 (__v8df)
13556 _mm512_setzero_pd (),
13557 (__mmask8) __U,
13558 _MM_FROUND_CUR_DIRECTION);
13559}
13560
075691af
AI
13561extern __inline __m128
13562__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13563_mm_getexp_ss (__m128 __A, __m128 __B)
13564{
13565 return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A,
13566 (__v4sf) __B,
13567 _MM_FROUND_CUR_DIRECTION);
13568}
13569
68d872d7
SP
13570extern __inline __m128
13571__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13572_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
13573{
13574 return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
13575 (__v4sf) __B,
13576 (__v4sf) __W,
13577 (__mmask8) __U,
13578 _MM_FROUND_CUR_DIRECTION);
13579}
13580
13581extern __inline __m128
13582__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13583_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
13584{
13585 return (__m128) __builtin_ia32_getexpss_mask_round ((__v4sf) __A,
13586 (__v4sf) __B,
13587 (__v4sf)
13588 _mm_setzero_ps (),
13589 (__mmask8) __U,
13590 _MM_FROUND_CUR_DIRECTION);
13591}
13592
075691af
AI
13593extern __inline __m128d
13594__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13595_mm_getexp_sd (__m128d __A, __m128d __B)
13596{
13597 return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A,
13598 (__v2df) __B,
13599 _MM_FROUND_CUR_DIRECTION);
13600}
13601
68d872d7
SP
13602extern __inline __m128d
13603__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13604_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
13605{
13606 return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
13607 (__v2df) __B,
13608 (__v2df) __W,
13609 (__mmask8) __U,
13610 _MM_FROUND_CUR_DIRECTION);
13611}
13612
13613extern __inline __m128d
13614__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13615_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
13616{
13617 return (__m128d) __builtin_ia32_getexpsd_mask_round ((__v2df) __A,
13618 (__v2df) __B,
13619 (__v2df)
13620 _mm_setzero_pd (),
13621 (__mmask8) __U,
13622 _MM_FROUND_CUR_DIRECTION);
13623}
13624
756c5857
AI
13625extern __inline __m512d
13626__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13627_mm512_getmant_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B,
13628 _MM_MANTISSA_SIGN_ENUM __C)
13629{
13630 return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
13631 (__C << 2) | __B,
0b192937 13632 _mm512_undefined_pd (),
756c5857
AI
13633 (__mmask8) -1,
13634 _MM_FROUND_CUR_DIRECTION);
13635}
13636
13637extern __inline __m512d
13638__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13639_mm512_mask_getmant_pd (__m512d __W, __mmask8 __U, __m512d __A,
13640 _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
13641{
13642 return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
13643 (__C << 2) | __B,
13644 (__v8df) __W, __U,
13645 _MM_FROUND_CUR_DIRECTION);
13646}
13647
13648extern __inline __m512d
13649__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13650_mm512_maskz_getmant_pd (__mmask8 __U, __m512d __A,
13651 _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
13652{
13653 return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A,
13654 (__C << 2) | __B,
13655 (__v8df)
13656 _mm512_setzero_pd (),
13657 __U,
13658 _MM_FROUND_CUR_DIRECTION);
13659}
13660
13661extern __inline __m512
13662__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13663_mm512_getmant_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B,
13664 _MM_MANTISSA_SIGN_ENUM __C)
13665{
13666 return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
13667 (__C << 2) | __B,
0b192937 13668 _mm512_undefined_ps (),
756c5857
AI
13669 (__mmask16) -1,
13670 _MM_FROUND_CUR_DIRECTION);
13671}
13672
13673extern __inline __m512
13674__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13675_mm512_mask_getmant_ps (__m512 __W, __mmask16 __U, __m512 __A,
13676 _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
13677{
13678 return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
13679 (__C << 2) | __B,
13680 (__v16sf) __W, __U,
13681 _MM_FROUND_CUR_DIRECTION);
13682}
13683
13684extern __inline __m512
13685__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13686_mm512_maskz_getmant_ps (__mmask16 __U, __m512 __A,
13687 _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C)
13688{
13689 return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A,
13690 (__C << 2) | __B,
13691 (__v16sf)
13692 _mm512_setzero_ps (),
13693 __U,
13694 _MM_FROUND_CUR_DIRECTION);
13695}
13696
075691af
AI
13697extern __inline __m128d
13698__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13699_mm_getmant_sd (__m128d __A, __m128d __B, _MM_MANTISSA_NORM_ENUM __C,
13700 _MM_MANTISSA_SIGN_ENUM __D)
13701{
13702 return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A,
13703 (__v2df) __B,
13704 (__D << 2) | __C,
13705 _MM_FROUND_CUR_DIRECTION);
13706}
13707
68d872d7
SP
13708extern __inline __m128d
13709__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13710_mm_mask_getmant_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
13711 _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
13712{
13713 return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
13714 (__v2df) __B,
13715 (__D << 2) | __C,
13716 (__v2df) __W,
13717 __U,
13718 _MM_FROUND_CUR_DIRECTION);
13719}
13720
13721extern __inline __m128d
13722__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13723_mm_maskz_getmant_sd (__mmask8 __U, __m128d __A, __m128d __B,
13724 _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
13725{
13726 return (__m128d) __builtin_ia32_getmantsd_mask_round ((__v2df) __A,
13727 (__v2df) __B,
13728 (__D << 2) | __C,
13729 (__v2df)
13730 _mm_setzero_pd(),
13731 __U,
13732 _MM_FROUND_CUR_DIRECTION);
13733}
13734
075691af
AI
13735extern __inline __m128
13736__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13737_mm_getmant_ss (__m128 __A, __m128 __B, _MM_MANTISSA_NORM_ENUM __C,
13738 _MM_MANTISSA_SIGN_ENUM __D)
13739{
13740 return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A,
13741 (__v4sf) __B,
13742 (__D << 2) | __C,
13743 _MM_FROUND_CUR_DIRECTION);
13744}
13745
68d872d7
SP
13746extern __inline __m128
13747__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13748_mm_mask_getmant_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
13749 _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
13750{
13751 return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
13752 (__v4sf) __B,
13753 (__D << 2) | __C,
13754 (__v4sf) __W,
13755 __U,
13756 _MM_FROUND_CUR_DIRECTION);
13757}
13758
13759extern __inline __m128
13760__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13761_mm_maskz_getmant_ss (__mmask8 __U, __m128 __A, __m128 __B,
13762 _MM_MANTISSA_NORM_ENUM __C, _MM_MANTISSA_SIGN_ENUM __D)
13763{
13764 return (__m128) __builtin_ia32_getmantss_mask_round ((__v4sf) __A,
13765 (__v4sf) __B,
13766 (__D << 2) | __C,
13767 (__v4sf)
13768 _mm_setzero_ps(),
13769 __U,
13770 _MM_FROUND_CUR_DIRECTION);
13771}
13772
756c5857
AI
13773#else
13774#define _mm512_getmant_pd(X, B, C) \
13775 ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
13776 (int)(((C)<<2) | (B)), \
0b192937 13777 (__v8df)_mm512_undefined_pd(), \
756c5857
AI
13778 (__mmask8)-1,\
13779 _MM_FROUND_CUR_DIRECTION))
13780
13781#define _mm512_mask_getmant_pd(W, U, X, B, C) \
13782 ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
13783 (int)(((C)<<2) | (B)), \
13784 (__v8df)(__m512d)(W), \
13785 (__mmask8)(U),\
13786 _MM_FROUND_CUR_DIRECTION))
13787
13788#define _mm512_maskz_getmant_pd(U, X, B, C) \
13789 ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \
13790 (int)(((C)<<2) | (B)), \
0b192937 13791 (__v8df)_mm512_setzero_pd(), \
756c5857
AI
13792 (__mmask8)(U),\
13793 _MM_FROUND_CUR_DIRECTION))
13794#define _mm512_getmant_ps(X, B, C) \
13795 ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
13796 (int)(((C)<<2) | (B)), \
0b192937 13797 (__v16sf)_mm512_undefined_ps(), \
756c5857
AI
13798 (__mmask16)-1,\
13799 _MM_FROUND_CUR_DIRECTION))
13800
13801#define _mm512_mask_getmant_ps(W, U, X, B, C) \
13802 ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
13803 (int)(((C)<<2) | (B)), \
13804 (__v16sf)(__m512)(W), \
13805 (__mmask16)(U),\
13806 _MM_FROUND_CUR_DIRECTION))
13807
13808#define _mm512_maskz_getmant_ps(U, X, B, C) \
13809 ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \
13810 (int)(((C)<<2) | (B)), \
0b192937 13811 (__v16sf)_mm512_setzero_ps(), \
756c5857
AI
13812 (__mmask16)(U),\
13813 _MM_FROUND_CUR_DIRECTION))
075691af
AI
13814#define _mm_getmant_sd(X, Y, C, D) \
13815 ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X), \
13816 (__v2df)(__m128d)(Y), \
13817 (int)(((D)<<2) | (C)), \
13818 _MM_FROUND_CUR_DIRECTION))
13819
68d872d7
SP
13820#define _mm_mask_getmant_sd(W, U, X, Y, C, D) \
13821 ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
13822 (__v2df)(__m128d)(Y), \
13823 (int)(((D)<<2) | (C)), \
13824 (__v2df)(__m128d)(W), \
13825 (__mmask8)(U),\
13826 _MM_FROUND_CUR_DIRECTION))
13827
13828#define _mm_maskz_getmant_sd(U, X, Y, C, D) \
13829 ((__m128d)__builtin_ia32_getmantsd_mask_round ((__v2df)(__m128d)(X), \
13830 (__v2df)(__m128d)(Y), \
13831 (int)(((D)<<2) | (C)), \
13832 (__v2df)_mm_setzero_pd(), \
13833 (__mmask8)(U),\
13834 _MM_FROUND_CUR_DIRECTION))
13835
075691af
AI
13836#define _mm_getmant_ss(X, Y, C, D) \
13837 ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X), \
13838 (__v4sf)(__m128)(Y), \
13839 (int)(((D)<<2) | (C)), \
13840 _MM_FROUND_CUR_DIRECTION))
13841
68d872d7
SP
13842#define _mm_mask_getmant_ss(W, U, X, Y, C, D) \
13843 ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
13844 (__v4sf)(__m128)(Y), \
13845 (int)(((D)<<2) | (C)), \
13846 (__v4sf)(__m128)(W), \
13847 (__mmask8)(U),\
13848 _MM_FROUND_CUR_DIRECTION))
13849
13850#define _mm_maskz_getmant_ss(U, X, Y, C, D) \
13851 ((__m128)__builtin_ia32_getmantss_mask_round ((__v4sf)(__m128)(X), \
13852 (__v4sf)(__m128)(Y), \
13853 (int)(((D)<<2) | (C)), \
13854 (__v4sf)_mm_setzero_ps(), \
13855 (__mmask8)(U),\
13856 _MM_FROUND_CUR_DIRECTION))
13857
075691af 13858#define _mm_getexp_ss(A, B) \
68d872d7 13859 ((__m128)__builtin_ia32_getexpss128_round((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
075691af
AI
13860 _MM_FROUND_CUR_DIRECTION))
13861
68d872d7
SP
13862#define _mm_mask_getexp_ss(W, U, A, B) \
13863 (__m128)__builtin_ia32_getexpss_mask_round(A, B, W, U,\
13864 _MM_FROUND_CUR_DIRECTION)
13865
13866#define _mm_maskz_getexp_ss(U, A, B) \
13867 (__m128)__builtin_ia32_getexpss_mask_round(A, B, (__v4sf)_mm_setzero_ps(), U,\
13868 _MM_FROUND_CUR_DIRECTION)
13869
075691af 13870#define _mm_getexp_sd(A, B) \
68d872d7 13871 ((__m128d)__builtin_ia32_getexpsd128_round((__v2df)(__m128d)(A), (__v2df)(__m128d)(B),\
075691af
AI
13872 _MM_FROUND_CUR_DIRECTION))
13873
68d872d7
SP
13874#define _mm_mask_getexp_sd(W, U, A, B) \
13875 (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, W, U,\
13876 _MM_FROUND_CUR_DIRECTION)
13877
13878#define _mm_maskz_getexp_sd(U, A, B) \
13879 (__m128d)__builtin_ia32_getexpsd_mask_round(A, B, (__v2df)_mm_setzero_pd(), U,\
13880 _MM_FROUND_CUR_DIRECTION)
13881
756c5857
AI
13882#define _mm512_getexp_ps(A) \
13883 ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
0b192937 13884 (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
756c5857
AI
13885
13886#define _mm512_mask_getexp_ps(W, U, A) \
13887 ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
13888 (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
13889
13890#define _mm512_maskz_getexp_ps(U, A) \
13891 ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
13892 (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
13893
13894#define _mm512_getexp_pd(A) \
13895 ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
0b192937 13896 (__v8df)_mm512_undefined_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
756c5857
AI
13897
13898#define _mm512_mask_getexp_pd(W, U, A) \
13899 ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
13900 (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13901
13902#define _mm512_maskz_getexp_pd(U, A) \
13903 ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
13904 (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
13905#endif
13906
13907#ifdef __OPTIMIZE__
13908extern __inline __m512
13909__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13910_mm512_roundscale_ps (__m512 __A, const int __imm)
13911{
13912 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
0b192937
UD
13913 (__v16sf)
13914 _mm512_undefined_ps (),
13915 -1,
756c5857
AI
13916 _MM_FROUND_CUR_DIRECTION);
13917}
13918
13919extern __inline __m512
13920__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13921_mm512_mask_roundscale_ps (__m512 __A, __mmask16 __B, __m512 __C,
13922 const int __imm)
13923{
13924 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,
13925 (__v16sf) __A,
13926 (__mmask16) __B,
13927 _MM_FROUND_CUR_DIRECTION);
13928}
13929
13930extern __inline __m512
13931__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13932_mm512_maskz_roundscale_ps (__mmask16 __A, __m512 __B, const int __imm)
13933{
13934 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B,
13935 __imm,
13936 (__v16sf)
13937 _mm512_setzero_ps (),
13938 (__mmask16) __A,
13939 _MM_FROUND_CUR_DIRECTION);
13940}
13941
13942extern __inline __m512d
13943__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13944_mm512_roundscale_pd (__m512d __A, const int __imm)
13945{
13946 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
0b192937
UD
13947 (__v8df)
13948 _mm512_undefined_pd (),
13949 -1,
756c5857
AI
13950 _MM_FROUND_CUR_DIRECTION);
13951}
13952
13953extern __inline __m512d
13954__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13955_mm512_mask_roundscale_pd (__m512d __A, __mmask8 __B, __m512d __C,
13956 const int __imm)
13957{
13958 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,
13959 (__v8df) __A,
13960 (__mmask8) __B,
13961 _MM_FROUND_CUR_DIRECTION);
13962}
13963
13964extern __inline __m512d
13965__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13966_mm512_maskz_roundscale_pd (__mmask8 __A, __m512d __B, const int __imm)
13967{
13968 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B,
13969 __imm,
13970 (__v8df)
13971 _mm512_setzero_pd (),
13972 (__mmask8) __A,
13973 _MM_FROUND_CUR_DIRECTION);
13974}
13975
075691af
AI
13976extern __inline __m128
13977__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13978_mm_roundscale_ss (__m128 __A, __m128 __B, const int __imm)
13979{
13980 return (__m128) __builtin_ia32_rndscaless_round ((__v4sf) __A,
13981 (__v4sf) __B, __imm,
13982 _MM_FROUND_CUR_DIRECTION);
13983}
13984
13985extern __inline __m128d
13986__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
13987_mm_roundscale_sd (__m128d __A, __m128d __B, const int __imm)
13988{
13989 return (__m128d) __builtin_ia32_rndscalesd_round ((__v2df) __A,
13990 (__v2df) __B, __imm,
13991 _MM_FROUND_CUR_DIRECTION);
13992}
13993
756c5857
AI
13994#else
13995#define _mm512_roundscale_ps(A, B) \
13996 ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\
0b192937 13997 (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION))
756c5857
AI
13998#define _mm512_mask_roundscale_ps(A, B, C, D) \
13999 ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \
14000 (int)(D), \
14001 (__v16sf)(__m512)(A), \
14002 (__mmask16)(B), _MM_FROUND_CUR_DIRECTION))
14003#define _mm512_maskz_roundscale_ps(A, B, C) \
14004 ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \
14005 (int)(C), \
14006 (__v16sf)_mm512_setzero_ps(),\
14007 (__mmask16)(A), _MM_FROUND_CUR_DIRECTION))
14008#define _mm512_roundscale_pd(A, B) \
14009 ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\
0b192937 14010 (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION))
756c5857
AI
14011#define _mm512_mask_roundscale_pd(A, B, C, D) \
14012 ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \
14013 (int)(D), \
14014 (__v8df)(__m512d)(A), \
14015 (__mmask8)(B), _MM_FROUND_CUR_DIRECTION))
14016#define _mm512_maskz_roundscale_pd(A, B, C) \
14017 ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \
14018 (int)(C), \
14019 (__v8df)_mm512_setzero_pd(),\
14020 (__mmask8)(A), _MM_FROUND_CUR_DIRECTION))
075691af
AI
14021#define _mm_roundscale_ss(A, B, C) \
14022 ((__m128) __builtin_ia32_rndscaless_round ((__v4sf)(__m128)(A), \
14023 (__v4sf)(__m128)(B), (int)(C), _MM_FROUND_CUR_DIRECTION))
14024#define _mm_roundscale_sd(A, B, C) \
14025 ((__m128d) __builtin_ia32_rndscalesd_round ((__v2df)(__m128d)(A), \
14026 (__v2df)(__m128d)(B), (int)(C), _MM_FROUND_CUR_DIRECTION))
756c5857
AI
14027#endif
14028
14029#ifdef __OPTIMIZE__
14030extern __inline __mmask8
14031__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14032_mm512_cmp_pd_mask (__m512d __X, __m512d __Y, const int __P)
14033{
14034 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14035 (__v8df) __Y, __P,
14036 (__mmask8) -1,
14037 _MM_FROUND_CUR_DIRECTION);
14038}
14039
14040extern __inline __mmask16
14041__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14042_mm512_cmp_ps_mask (__m512 __X, __m512 __Y, const int __P)
14043{
14044 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14045 (__v16sf) __Y, __P,
14046 (__mmask16) -1,
14047 _MM_FROUND_CUR_DIRECTION);
14048}
14049
14050extern __inline __mmask16
14051__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14052_mm512_mask_cmp_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y, const int __P)
14053{
14054 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14055 (__v16sf) __Y, __P,
14056 (__mmask16) __U,
14057 _MM_FROUND_CUR_DIRECTION);
14058}
14059
14060extern __inline __mmask8
14061__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14062_mm512_mask_cmp_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y, const int __P)
14063{
14064 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14065 (__v8df) __Y, __P,
14066 (__mmask8) __U,
14067 _MM_FROUND_CUR_DIRECTION);
14068}
14069
7e23f4a6
OM
14070extern __inline __mmask8
14071__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14072_mm512_cmpeq_pd_mask (__m512d __X, __m512d __Y)
14073{
14074 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14075 (__v8df) __Y, _CMP_EQ_OQ,
14076 (__mmask8) -1,
14077 _MM_FROUND_CUR_DIRECTION);
14078}
14079
14080extern __inline __mmask8
14081__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14082_mm512_mask_cmpeq_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14083{
14084 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14085 (__v8df) __Y, _CMP_EQ_OQ,
14086 (__mmask8) __U,
14087 _MM_FROUND_CUR_DIRECTION);
14088}
14089
14090extern __inline __mmask8
14091__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14092_mm512_cmplt_pd_mask (__m512d __X, __m512d __Y)
14093{
14094 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14095 (__v8df) __Y, _CMP_LT_OS,
14096 (__mmask8) -1,
14097 _MM_FROUND_CUR_DIRECTION);
14098}
14099
14100extern __inline __mmask8
14101__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14102_mm512_mask_cmplt_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14103{
14104 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14105 (__v8df) __Y, _CMP_LT_OS,
14106 (__mmask8) __U,
14107 _MM_FROUND_CUR_DIRECTION);
14108}
14109
14110extern __inline __mmask8
14111__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14112_mm512_cmple_pd_mask (__m512d __X, __m512d __Y)
14113{
14114 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14115 (__v8df) __Y, _CMP_LE_OS,
14116 (__mmask8) -1,
14117 _MM_FROUND_CUR_DIRECTION);
14118}
14119
14120extern __inline __mmask8
14121__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14122_mm512_mask_cmple_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14123{
14124 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14125 (__v8df) __Y, _CMP_LE_OS,
14126 (__mmask8) __U,
14127 _MM_FROUND_CUR_DIRECTION);
14128}
14129
14130extern __inline __mmask8
14131__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14132_mm512_cmpunord_pd_mask (__m512d __X, __m512d __Y)
14133{
14134 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14135 (__v8df) __Y, _CMP_UNORD_Q,
14136 (__mmask8) -1,
14137 _MM_FROUND_CUR_DIRECTION);
14138}
14139
14140extern __inline __mmask8
14141__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14142_mm512_mask_cmpunord_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14143{
14144 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14145 (__v8df) __Y, _CMP_UNORD_Q,
14146 (__mmask8) __U,
14147 _MM_FROUND_CUR_DIRECTION);
14148}
14149
14150extern __inline __mmask8
14151__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14152_mm512_cmpneq_pd_mask (__m512d __X, __m512d __Y)
14153{
14154 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14155 (__v8df) __Y, _CMP_NEQ_UQ,
14156 (__mmask8) -1,
14157 _MM_FROUND_CUR_DIRECTION);
14158}
14159
14160extern __inline __mmask8
14161__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14162_mm512_mask_cmpneq_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14163{
14164 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14165 (__v8df) __Y, _CMP_NEQ_UQ,
14166 (__mmask8) __U,
14167 _MM_FROUND_CUR_DIRECTION);
14168}
14169
14170extern __inline __mmask8
14171__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14172_mm512_cmpnlt_pd_mask (__m512d __X, __m512d __Y)
14173{
14174 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14175 (__v8df) __Y, _CMP_NLT_US,
14176 (__mmask8) -1,
14177 _MM_FROUND_CUR_DIRECTION);
14178}
14179
14180extern __inline __mmask8
14181__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14182_mm512_mask_cmpnlt_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14183{
14184 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14185 (__v8df) __Y, _CMP_NLT_US,
14186 (__mmask8) __U,
14187 _MM_FROUND_CUR_DIRECTION);
14188}
14189
14190extern __inline __mmask8
14191__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14192_mm512_cmpnle_pd_mask (__m512d __X, __m512d __Y)
14193{
14194 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14195 (__v8df) __Y, _CMP_NLE_US,
14196 (__mmask8) -1,
14197 _MM_FROUND_CUR_DIRECTION);
14198}
14199
14200extern __inline __mmask8
14201__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14202_mm512_mask_cmpnle_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14203{
14204 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14205 (__v8df) __Y, _CMP_NLE_US,
14206 (__mmask8) __U,
14207 _MM_FROUND_CUR_DIRECTION);
14208}
14209
14210extern __inline __mmask8
14211__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14212_mm512_cmpord_pd_mask (__m512d __X, __m512d __Y)
14213{
14214 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14215 (__v8df) __Y, _CMP_ORD_Q,
14216 (__mmask8) -1,
14217 _MM_FROUND_CUR_DIRECTION);
14218}
14219
14220extern __inline __mmask8
14221__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14222_mm512_mask_cmpord_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y)
14223{
14224 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
14225 (__v8df) __Y, _CMP_ORD_Q,
14226 (__mmask8) __U,
14227 _MM_FROUND_CUR_DIRECTION);
14228}
14229
14230extern __inline __mmask16
14231__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14232_mm512_cmpeq_ps_mask (__m512 __X, __m512 __Y)
14233{
14234 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14235 (__v16sf) __Y, _CMP_EQ_OQ,
14236 (__mmask16) -1,
14237 _MM_FROUND_CUR_DIRECTION);
14238}
14239
14240extern __inline __mmask16
14241__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14242_mm512_mask_cmpeq_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14243{
14244 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14245 (__v16sf) __Y, _CMP_EQ_OQ,
14246 (__mmask16) __U,
14247 _MM_FROUND_CUR_DIRECTION);
14248}
14249
14250extern __inline __mmask16
14251__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14252_mm512_cmplt_ps_mask (__m512 __X, __m512 __Y)
14253{
14254 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14255 (__v16sf) __Y, _CMP_LT_OS,
14256 (__mmask16) -1,
14257 _MM_FROUND_CUR_DIRECTION);
14258}
14259
14260extern __inline __mmask16
14261__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14262_mm512_mask_cmplt_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14263{
14264 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14265 (__v16sf) __Y, _CMP_LT_OS,
14266 (__mmask16) __U,
14267 _MM_FROUND_CUR_DIRECTION);
14268}
14269
14270extern __inline __mmask16
14271__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14272_mm512_cmple_ps_mask (__m512 __X, __m512 __Y)
14273{
14274 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14275 (__v16sf) __Y, _CMP_LE_OS,
14276 (__mmask16) -1,
14277 _MM_FROUND_CUR_DIRECTION);
14278}
14279
14280extern __inline __mmask16
14281__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14282_mm512_mask_cmple_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14283{
14284 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14285 (__v16sf) __Y, _CMP_LE_OS,
14286 (__mmask16) __U,
14287 _MM_FROUND_CUR_DIRECTION);
14288}
14289
14290extern __inline __mmask16
14291__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14292_mm512_cmpunord_ps_mask (__m512 __X, __m512 __Y)
14293{
14294 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14295 (__v16sf) __Y, _CMP_UNORD_Q,
14296 (__mmask16) -1,
14297 _MM_FROUND_CUR_DIRECTION);
14298}
14299
14300extern __inline __mmask16
14301__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14302_mm512_mask_cmpunord_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14303{
14304 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14305 (__v16sf) __Y, _CMP_UNORD_Q,
14306 (__mmask16) __U,
14307 _MM_FROUND_CUR_DIRECTION);
14308}
14309
14310extern __inline __mmask16
14311__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14312_mm512_cmpneq_ps_mask (__m512 __X, __m512 __Y)
14313{
14314 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14315 (__v16sf) __Y, _CMP_NEQ_UQ,
14316 (__mmask16) -1,
14317 _MM_FROUND_CUR_DIRECTION);
14318}
14319
14320extern __inline __mmask16
14321__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14322_mm512_mask_cmpneq_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14323{
14324 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14325 (__v16sf) __Y, _CMP_NEQ_UQ,
14326 (__mmask16) __U,
14327 _MM_FROUND_CUR_DIRECTION);
14328}
14329
14330extern __inline __mmask16
14331__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14332_mm512_cmpnlt_ps_mask (__m512 __X, __m512 __Y)
14333{
14334 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14335 (__v16sf) __Y, _CMP_NLT_US,
14336 (__mmask16) -1,
14337 _MM_FROUND_CUR_DIRECTION);
14338}
14339
14340extern __inline __mmask16
14341__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14342_mm512_mask_cmpnlt_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14343{
14344 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14345 (__v16sf) __Y, _CMP_NLT_US,
14346 (__mmask16) __U,
14347 _MM_FROUND_CUR_DIRECTION);
14348}
14349
14350extern __inline __mmask16
14351__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14352_mm512_cmpnle_ps_mask (__m512 __X, __m512 __Y)
14353{
14354 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14355 (__v16sf) __Y, _CMP_NLE_US,
14356 (__mmask16) -1,
14357 _MM_FROUND_CUR_DIRECTION);
14358}
14359
14360extern __inline __mmask16
14361__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14362_mm512_mask_cmpnle_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14363{
14364 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14365 (__v16sf) __Y, _CMP_NLE_US,
14366 (__mmask16) __U,
14367 _MM_FROUND_CUR_DIRECTION);
14368}
14369
14370extern __inline __mmask16
14371__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14372_mm512_cmpord_ps_mask (__m512 __X, __m512 __Y)
14373{
14374 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14375 (__v16sf) __Y, _CMP_ORD_Q,
14376 (__mmask16) -1,
14377 _MM_FROUND_CUR_DIRECTION);
14378}
14379
14380extern __inline __mmask16
14381__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14382_mm512_mask_cmpord_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y)
14383{
14384 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X,
14385 (__v16sf) __Y, _CMP_ORD_Q,
14386 (__mmask16) __U,
14387 _MM_FROUND_CUR_DIRECTION);
14388}
14389
756c5857
AI
14390extern __inline __mmask8
14391__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14392_mm_cmp_sd_mask (__m128d __X, __m128d __Y, const int __P)
14393{
14394 return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
14395 (__v2df) __Y, __P,
14396 (__mmask8) -1,
14397 _MM_FROUND_CUR_DIRECTION);
14398}
14399
14400extern __inline __mmask8
14401__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14402_mm_mask_cmp_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, const int __P)
14403{
14404 return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X,
14405 (__v2df) __Y, __P,
14406 (__mmask8) __M,
14407 _MM_FROUND_CUR_DIRECTION);
14408}
14409
14410extern __inline __mmask8
14411__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14412_mm_cmp_ss_mask (__m128 __X, __m128 __Y, const int __P)
14413{
14414 return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
14415 (__v4sf) __Y, __P,
14416 (__mmask8) -1,
14417 _MM_FROUND_CUR_DIRECTION);
14418}
14419
14420extern __inline __mmask8
14421__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14422_mm_mask_cmp_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, const int __P)
14423{
14424 return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X,
14425 (__v4sf) __Y, __P,
14426 (__mmask8) __M,
14427 _MM_FROUND_CUR_DIRECTION);
14428}
14429
14430#else
14431#define _mm512_cmp_pd_mask(X, Y, P) \
14432 ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
14433 (__v8df)(__m512d)(Y), (int)(P),\
14434 (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
14435
14436#define _mm512_cmp_ps_mask(X, Y, P) \
14437 ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
14438 (__v16sf)(__m512)(Y), (int)(P),\
14439 (__mmask16)-1,_MM_FROUND_CUR_DIRECTION))
14440
14441#define _mm512_mask_cmp_pd_mask(M, X, Y, P) \
14442 ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \
14443 (__v8df)(__m512d)(Y), (int)(P),\
14444 (__mmask8)M, _MM_FROUND_CUR_DIRECTION))
14445
14446#define _mm512_mask_cmp_ps_mask(M, X, Y, P) \
14447 ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \
14448 (__v16sf)(__m512)(Y), (int)(P),\
14449 (__mmask16)M,_MM_FROUND_CUR_DIRECTION))
14450
14451#define _mm_cmp_sd_mask(X, Y, P) \
14452 ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
14453 (__v2df)(__m128d)(Y), (int)(P),\
14454 (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
14455
14456#define _mm_mask_cmp_sd_mask(M, X, Y, P) \
14457 ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \
14458 (__v2df)(__m128d)(Y), (int)(P),\
14459 M,_MM_FROUND_CUR_DIRECTION))
14460
14461#define _mm_cmp_ss_mask(X, Y, P) \
14462 ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
14463 (__v4sf)(__m128)(Y), (int)(P), \
14464 (__mmask8)-1,_MM_FROUND_CUR_DIRECTION))
14465
14466#define _mm_mask_cmp_ss_mask(M, X, Y, P) \
14467 ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \
14468 (__v4sf)(__m128)(Y), (int)(P), \
14469 M,_MM_FROUND_CUR_DIRECTION))
14470#endif
14471
2196a885
KY
14472extern __inline __mmask16
14473__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14474_mm512_kmov (__mmask16 __A)
14475{
7cdb6e4c 14476 return __builtin_ia32_kmovw (__A);
2196a885
KY
14477}
14478
275be1da
IT
14479extern __inline __m512
14480__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14481_mm512_castpd_ps (__m512d __A)
14482{
14483 return (__m512) (__A);
14484}
14485
14486extern __inline __m512i
14487__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14488_mm512_castpd_si512 (__m512d __A)
14489{
14490 return (__m512i) (__A);
14491}
14492
14493extern __inline __m512d
14494__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14495_mm512_castps_pd (__m512 __A)
14496{
14497 return (__m512d) (__A);
14498}
14499
14500extern __inline __m512i
14501__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14502_mm512_castps_si512 (__m512 __A)
14503{
14504 return (__m512i) (__A);
14505}
14506
14507extern __inline __m512
14508__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14509_mm512_castsi512_ps (__m512i __A)
14510{
14511 return (__m512) (__A);
14512}
14513
14514extern __inline __m512d
14515__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14516_mm512_castsi512_pd (__m512i __A)
14517{
14518 return (__m512d) (__A);
14519}
14520
14521extern __inline __m128d
14522__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14523_mm512_castpd512_pd128 (__m512d __A)
14524{
14525 return (__m128d)_mm512_extractf32x4_ps((__m512)__A, 0);
14526}
14527
14528extern __inline __m128
14529__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14530_mm512_castps512_ps128 (__m512 __A)
14531{
14532 return _mm512_extractf32x4_ps(__A, 0);
14533}
14534
14535extern __inline __m128i
14536__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14537_mm512_castsi512_si128 (__m512i __A)
14538{
14539 return (__m128i)_mm512_extracti32x4_epi32((__m512i)__A, 0);
14540}
14541
14542extern __inline __m256d
14543__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14544_mm512_castpd512_pd256 (__m512d __A)
14545{
14546 return _mm512_extractf64x4_pd(__A, 0);
14547}
14548
14549extern __inline __m256
14550__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14551_mm512_castps512_ps256 (__m512 __A)
14552{
14553 return (__m256)_mm512_extractf64x4_pd((__m512d)__A, 0);
14554}
14555
14556extern __inline __m256i
14557__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14558_mm512_castsi512_si256 (__m512i __A)
14559{
14560 return (__m256i)_mm512_extractf64x4_pd((__m512d)__A, 0);
14561}
14562
14563extern __inline __m512d
14564__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14565_mm512_castpd128_pd512 (__m128d __A)
14566{
14567 return (__m512d) __builtin_ia32_pd512_pd((__m128d)__A);
14568}
14569
14570extern __inline __m512
14571__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14572_mm512_castps128_ps512 (__m128 __A)
14573{
14574 return (__m512) __builtin_ia32_ps512_ps((__m128)__A);
14575}
14576
14577extern __inline __m512i
14578__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14579_mm512_castsi128_si512 (__m128i __A)
14580{
14581 return (__m512i) __builtin_ia32_si512_si((__v4si)__A);
14582}
14583
14584extern __inline __m512d
14585__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14586_mm512_castpd256_pd512 (__m256d __A)
14587{
14588 return __builtin_ia32_pd512_256pd (__A);
14589}
14590
14591extern __inline __m512
14592__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14593_mm512_castps256_ps512 (__m256 __A)
14594{
14595 return __builtin_ia32_ps512_256ps (__A);
14596}
14597
14598extern __inline __m512i
14599__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14600_mm512_castsi256_si512 (__m256i __A)
14601{
14602 return (__m512i)__builtin_ia32_si512_256si ((__v8si)__A);
14603}
14604
14605extern __inline __mmask16
14606__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14607_mm512_cmpeq_epu32_mask (__m512i __A, __m512i __B)
14608{
14609 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
14610 (__v16si) __B, 0,
14611 (__mmask16) -1);
14612}
14613
14614extern __inline __mmask16
14615__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14616_mm512_mask_cmpeq_epu32_mask (__mmask16 __U, __m512i __A, __m512i __B)
14617{
14618 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
14619 (__v16si) __B, 0, __U);
14620}
14621
14622extern __inline __mmask8
14623__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14624_mm512_mask_cmpeq_epu64_mask (__mmask8 __U, __m512i __A, __m512i __B)
14625{
14626 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
14627 (__v8di) __B, 0, __U);
14628}
14629
14630extern __inline __mmask8
14631__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14632_mm512_cmpeq_epu64_mask (__m512i __A, __m512i __B)
14633{
14634 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
14635 (__v8di) __B, 0,
14636 (__mmask8) -1);
14637}
14638
14639extern __inline __mmask16
14640__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14641_mm512_cmpgt_epu32_mask (__m512i __A, __m512i __B)
14642{
14643 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
14644 (__v16si) __B, 6,
14645 (__mmask16) -1);
14646}
14647
14648extern __inline __mmask16
14649__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14650_mm512_mask_cmpgt_epu32_mask (__mmask16 __U, __m512i __A, __m512i __B)
14651{
14652 return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __A,
14653 (__v16si) __B, 6, __U);
14654}
14655
14656extern __inline __mmask8
14657__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14658_mm512_mask_cmpgt_epu64_mask (__mmask8 __U, __m512i __A, __m512i __B)
14659{
14660 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
14661 (__v8di) __B, 6, __U);
14662}
14663
14664extern __inline __mmask8
14665__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14666_mm512_cmpgt_epu64_mask (__m512i __A, __m512i __B)
14667{
14668 return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __A,
14669 (__v8di) __B, 6,
14670 (__mmask8) -1);
14671}
14672
167a5b77
JJ
14673#undef __MM512_REDUCE_OP
14674#define __MM512_REDUCE_OP(op) \
14675 __v8si __T1 = (__v8si) _mm512_extracti64x4_epi64 (__A, 1); \
14676 __v8si __T2 = (__v8si) _mm512_extracti64x4_epi64 (__A, 0); \
14677 __m256i __T3 = (__m256i) (__T1 op __T2); \
14678 __v4si __T4 = (__v4si) _mm256_extracti128_si256 (__T3, 1); \
14679 __v4si __T5 = (__v4si) _mm256_extracti128_si256 (__T3, 0); \
14680 __v4si __T6 = __T4 op __T5; \
14681 __v4si __T7 = __builtin_shuffle (__T6, (__v4si) { 2, 3, 0, 1 }); \
14682 __v4si __T8 = __T6 op __T7; \
14683 return __T8[0] op __T8[1]
14684
14685extern __inline int
14686__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14687_mm512_reduce_add_epi32 (__m512i __A)
14688{
14689 __MM512_REDUCE_OP (+);
14690}
14691
14692extern __inline int
14693__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14694_mm512_reduce_mul_epi32 (__m512i __A)
14695{
14696 __MM512_REDUCE_OP (*);
14697}
14698
14699extern __inline int
14700__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14701_mm512_reduce_and_epi32 (__m512i __A)
14702{
14703 __MM512_REDUCE_OP (&);
14704}
14705
14706extern __inline int
14707__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14708_mm512_reduce_or_epi32 (__m512i __A)
14709{
14710 __MM512_REDUCE_OP (|);
14711}
14712
14713extern __inline int
14714__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14715_mm512_mask_reduce_add_epi32 (__mmask16 __U, __m512i __A)
14716{
14717 __A = _mm512_maskz_mov_epi32 (__U, __A);
14718 __MM512_REDUCE_OP (+);
14719}
14720
14721extern __inline int
14722__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14723_mm512_mask_reduce_mul_epi32 (__mmask16 __U, __m512i __A)
14724{
14725 __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (1), __U, __A);
14726 __MM512_REDUCE_OP (*);
14727}
14728
14729extern __inline int
14730__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14731_mm512_mask_reduce_and_epi32 (__mmask16 __U, __m512i __A)
14732{
14733 __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (~0), __U, __A);
14734 __MM512_REDUCE_OP (&);
14735}
14736
14737extern __inline int
14738__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14739_mm512_mask_reduce_or_epi32 (__mmask16 __U, __m512i __A)
14740{
14741 __A = _mm512_maskz_mov_epi32 (__U, __A);
14742 __MM512_REDUCE_OP (|);
14743}
14744
14745#undef __MM512_REDUCE_OP
14746#define __MM512_REDUCE_OP(op) \
14747 __m256i __T1 = (__m256i) _mm512_extracti64x4_epi64 (__A, 1); \
14748 __m256i __T2 = (__m256i) _mm512_extracti64x4_epi64 (__A, 0); \
14749 __m256i __T3 = _mm256_##op (__T1, __T2); \
14750 __m128i __T4 = (__m128i) _mm256_extracti128_si256 (__T3, 1); \
14751 __m128i __T5 = (__m128i) _mm256_extracti128_si256 (__T3, 0); \
14752 __m128i __T6 = _mm_##op (__T4, __T5); \
14753 __m128i __T7 = (__m128i) __builtin_shuffle ((__v4si) __T6, \
14754 (__v4si) { 2, 3, 0, 1 }); \
14755 __m128i __T8 = _mm_##op (__T6, __T7); \
14756 __m128i __T9 = (__m128i) __builtin_shuffle ((__v4si) __T8, \
14757 (__v4si) { 1, 0, 1, 0 }); \
14758 __v4si __T10 = (__v4si) _mm_##op (__T8, __T9); \
14759 return __T10[0]
14760
14761extern __inline int
14762__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14763_mm512_reduce_min_epi32 (__m512i __A)
14764{
14765 __MM512_REDUCE_OP (min_epi32);
14766}
14767
14768extern __inline int
14769__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14770_mm512_reduce_max_epi32 (__m512i __A)
14771{
14772 __MM512_REDUCE_OP (max_epi32);
14773}
14774
14775extern __inline unsigned int
14776__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14777_mm512_reduce_min_epu32 (__m512i __A)
14778{
14779 __MM512_REDUCE_OP (min_epu32);
14780}
14781
14782extern __inline unsigned int
14783__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14784_mm512_reduce_max_epu32 (__m512i __A)
14785{
14786 __MM512_REDUCE_OP (max_epu32);
14787}
14788
14789extern __inline int
14790__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14791_mm512_mask_reduce_min_epi32 (__mmask16 __U, __m512i __A)
14792{
14793 __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (__INT_MAX__), __U, __A);
14794 __MM512_REDUCE_OP (min_epi32);
14795}
14796
14797extern __inline int
14798__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14799_mm512_mask_reduce_max_epi32 (__mmask16 __U, __m512i __A)
14800{
14801 __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (-__INT_MAX__ - 1), __U, __A);
14802 __MM512_REDUCE_OP (max_epi32);
14803}
14804
14805extern __inline unsigned int
14806__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14807_mm512_mask_reduce_min_epu32 (__mmask16 __U, __m512i __A)
14808{
14809 __A = _mm512_mask_mov_epi32 (_mm512_set1_epi32 (~0), __U, __A);
14810 __MM512_REDUCE_OP (min_epu32);
14811}
14812
14813extern __inline unsigned int
14814__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14815_mm512_mask_reduce_max_epu32 (__mmask16 __U, __m512i __A)
14816{
14817 __A = _mm512_maskz_mov_epi32 (__U, __A);
14818 __MM512_REDUCE_OP (max_epu32);
14819}
14820
14821#undef __MM512_REDUCE_OP
14822#define __MM512_REDUCE_OP(op) \
14823 __m256 __T1 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 1); \
14824 __m256 __T2 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 0); \
14825 __m256 __T3 = __T1 op __T2; \
14826 __m128 __T4 = _mm256_extractf128_ps (__T3, 1); \
14827 __m128 __T5 = _mm256_extractf128_ps (__T3, 0); \
14828 __m128 __T6 = __T4 op __T5; \
14829 __m128 __T7 = __builtin_shuffle (__T6, (__v4si) { 2, 3, 0, 1 }); \
14830 __m128 __T8 = __T6 op __T7; \
14831 return __T8[0] op __T8[1]
14832
14833extern __inline float
14834__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14835_mm512_reduce_add_ps (__m512 __A)
14836{
14837 __MM512_REDUCE_OP (+);
14838}
14839
14840extern __inline float
14841__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14842_mm512_reduce_mul_ps (__m512 __A)
14843{
14844 __MM512_REDUCE_OP (*);
14845}
14846
14847extern __inline float
14848__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14849_mm512_mask_reduce_add_ps (__mmask16 __U, __m512 __A)
14850{
14851 __A = _mm512_maskz_mov_ps (__U, __A);
14852 __MM512_REDUCE_OP (+);
14853}
14854
14855extern __inline float
14856__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14857_mm512_mask_reduce_mul_ps (__mmask16 __U, __m512 __A)
14858{
14859 __A = _mm512_mask_mov_ps (_mm512_set1_ps (1.0f), __U, __A);
14860 __MM512_REDUCE_OP (*);
14861}
14862
14863#undef __MM512_REDUCE_OP
14864#define __MM512_REDUCE_OP(op) \
14865 __m256 __T1 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 1); \
14866 __m256 __T2 = (__m256) _mm512_extractf64x4_pd ((__m512d) __A, 0); \
14867 __m256 __T3 = _mm256_##op (__T1, __T2); \
14868 __m128 __T4 = _mm256_extractf128_ps (__T3, 1); \
14869 __m128 __T5 = _mm256_extractf128_ps (__T3, 0); \
14870 __m128 __T6 = _mm_##op (__T4, __T5); \
14871 __m128 __T7 = __builtin_shuffle (__T6, (__v4si) { 2, 3, 0, 1 }); \
14872 __m128 __T8 = _mm_##op (__T6, __T7); \
14873 __m128 __T9 = __builtin_shuffle (__T8, (__v4si) { 1, 0, 1, 0 }); \
14874 __m128 __T10 = _mm_##op (__T8, __T9); \
14875 return __T10[0]
14876
14877extern __inline float
14878__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14879_mm512_reduce_min_ps (__m512 __A)
14880{
14881 __MM512_REDUCE_OP (min_ps);
14882}
14883
14884extern __inline float
14885__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14886_mm512_reduce_max_ps (__m512 __A)
14887{
14888 __MM512_REDUCE_OP (max_ps);
14889}
14890
14891extern __inline float
14892__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14893_mm512_mask_reduce_min_ps (__mmask16 __U, __m512 __A)
14894{
14895 __A = _mm512_mask_mov_ps (_mm512_set1_ps (__builtin_inff ()), __U, __A);
14896 __MM512_REDUCE_OP (min_ps);
14897}
14898
14899extern __inline float
14900__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14901_mm512_mask_reduce_max_ps (__mmask16 __U, __m512 __A)
14902{
14903 __A = _mm512_mask_mov_ps (_mm512_set1_ps (-__builtin_inff ()), __U, __A);
14904 __MM512_REDUCE_OP (max_ps);
14905}
14906
14907#undef __MM512_REDUCE_OP
14908#define __MM512_REDUCE_OP(op) \
14909 __v4di __T1 = (__v4di) _mm512_extracti64x4_epi64 (__A, 1); \
14910 __v4di __T2 = (__v4di) _mm512_extracti64x4_epi64 (__A, 0); \
14911 __m256i __T3 = (__m256i) (__T1 op __T2); \
14912 __v2di __T4 = (__v2di) _mm256_extracti128_si256 (__T3, 1); \
14913 __v2di __T5 = (__v2di) _mm256_extracti128_si256 (__T3, 0); \
14914 __v2di __T6 = __T4 op __T5; \
14915 return __T6[0] op __T6[1]
14916
14917extern __inline long long
14918__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14919_mm512_reduce_add_epi64 (__m512i __A)
14920{
14921 __MM512_REDUCE_OP (+);
14922}
14923
14924extern __inline long long
14925__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14926_mm512_reduce_mul_epi64 (__m512i __A)
14927{
14928 __MM512_REDUCE_OP (*);
14929}
14930
14931extern __inline long long
14932__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14933_mm512_reduce_and_epi64 (__m512i __A)
14934{
14935 __MM512_REDUCE_OP (&);
14936}
14937
14938extern __inline long long
14939__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14940_mm512_reduce_or_epi64 (__m512i __A)
14941{
14942 __MM512_REDUCE_OP (|);
14943}
14944
14945extern __inline long long
14946__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14947_mm512_mask_reduce_add_epi64 (__mmask8 __U, __m512i __A)
14948{
14949 __A = _mm512_maskz_mov_epi64 (__U, __A);
14950 __MM512_REDUCE_OP (+);
14951}
14952
14953extern __inline long long
14954__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14955_mm512_mask_reduce_mul_epi64 (__mmask8 __U, __m512i __A)
14956{
14957 __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (1LL), __U, __A);
14958 __MM512_REDUCE_OP (*);
14959}
14960
14961extern __inline long long
14962__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14963_mm512_mask_reduce_and_epi64 (__mmask8 __U, __m512i __A)
14964{
14965 __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (~0LL), __U, __A);
14966 __MM512_REDUCE_OP (&);
14967}
14968
14969extern __inline long long
14970__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14971_mm512_mask_reduce_or_epi64 (__mmask8 __U, __m512i __A)
14972{
14973 __A = _mm512_maskz_mov_epi64 (__U, __A);
14974 __MM512_REDUCE_OP (|);
14975}
14976
14977#undef __MM512_REDUCE_OP
14978#define __MM512_REDUCE_OP(op) \
14979 __m512i __T1 = _mm512_shuffle_i64x2 (__A, __A, 0x4e); \
14980 __m512i __T2 = _mm512_##op (__A, __T1); \
14981 __m512i __T3 \
14982 = (__m512i) __builtin_shuffle ((__v8di) __T2, \
14983 (__v8di) { 2, 3, 0, 1, 6, 7, 4, 5 });\
14984 __m512i __T4 = _mm512_##op (__T2, __T3); \
14985 __m512i __T5 \
14986 = (__m512i) __builtin_shuffle ((__v8di) __T4, \
14987 (__v8di) { 1, 0, 3, 2, 5, 4, 7, 6 });\
14988 __v8di __T6 = (__v8di) _mm512_##op (__T4, __T5); \
14989 return __T6[0]
14990
14991extern __inline long long
14992__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
14993_mm512_reduce_min_epi64 (__m512i __A)
14994{
14995 __MM512_REDUCE_OP (min_epi64);
14996}
14997
14998extern __inline long long
14999__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15000_mm512_reduce_max_epi64 (__m512i __A)
15001{
15002 __MM512_REDUCE_OP (max_epi64);
15003}
15004
15005extern __inline long long
15006__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15007_mm512_mask_reduce_min_epi64 (__mmask8 __U, __m512i __A)
15008{
15009 __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (__LONG_LONG_MAX__),
15010 __U, __A);
15011 __MM512_REDUCE_OP (min_epi64);
15012}
15013
15014extern __inline long long
15015__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15016_mm512_mask_reduce_max_epi64 (__mmask8 __U, __m512i __A)
15017{
15018 __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (-__LONG_LONG_MAX__ - 1),
15019 __U, __A);
15020 __MM512_REDUCE_OP (max_epi64);
15021}
15022
15023extern __inline unsigned long long
15024__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15025_mm512_reduce_min_epu64 (__m512i __A)
15026{
15027 __MM512_REDUCE_OP (min_epu64);
15028}
15029
15030extern __inline unsigned long long
15031__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15032_mm512_reduce_max_epu64 (__m512i __A)
15033{
15034 __MM512_REDUCE_OP (max_epu64);
15035}
15036
15037extern __inline unsigned long long
15038__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15039_mm512_mask_reduce_min_epu64 (__mmask8 __U, __m512i __A)
15040{
15041 __A = _mm512_mask_mov_epi64 (_mm512_set1_epi64 (~0LL), __U, __A);
15042 __MM512_REDUCE_OP (min_epu64);
15043}
15044
15045extern __inline unsigned long long
15046__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15047_mm512_mask_reduce_max_epu64 (__mmask8 __U, __m512i __A)
15048{
15049 __A = _mm512_maskz_mov_epi64 (__U, __A);
15050 __MM512_REDUCE_OP (max_epu64);
15051}
15052
15053#undef __MM512_REDUCE_OP
15054#define __MM512_REDUCE_OP(op) \
15055 __m256d __T1 = (__m256d) _mm512_extractf64x4_pd (__A, 1); \
15056 __m256d __T2 = (__m256d) _mm512_extractf64x4_pd (__A, 0); \
15057 __m256d __T3 = __T1 op __T2; \
15058 __m128d __T4 = _mm256_extractf128_pd (__T3, 1); \
15059 __m128d __T5 = _mm256_extractf128_pd (__T3, 0); \
15060 __m128d __T6 = __T4 op __T5; \
15061 return __T6[0] op __T6[1]
15062
15063extern __inline double
15064__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15065_mm512_reduce_add_pd (__m512d __A)
15066{
15067 __MM512_REDUCE_OP (+);
15068}
15069
15070extern __inline double
15071__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15072_mm512_reduce_mul_pd (__m512d __A)
15073{
15074 __MM512_REDUCE_OP (*);
15075}
15076
15077extern __inline double
15078__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15079_mm512_mask_reduce_add_pd (__mmask8 __U, __m512d __A)
15080{
15081 __A = _mm512_maskz_mov_pd (__U, __A);
15082 __MM512_REDUCE_OP (+);
15083}
15084
15085extern __inline double
15086__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15087_mm512_mask_reduce_mul_pd (__mmask8 __U, __m512d __A)
15088{
15089 __A = _mm512_mask_mov_pd (_mm512_set1_pd (1.0), __U, __A);
15090 __MM512_REDUCE_OP (*);
15091}
15092
15093#undef __MM512_REDUCE_OP
15094#define __MM512_REDUCE_OP(op) \
15095 __m256d __T1 = (__m256d) _mm512_extractf64x4_pd (__A, 1); \
15096 __m256d __T2 = (__m256d) _mm512_extractf64x4_pd (__A, 0); \
15097 __m256d __T3 = _mm256_##op (__T1, __T2); \
15098 __m128d __T4 = _mm256_extractf128_pd (__T3, 1); \
15099 __m128d __T5 = _mm256_extractf128_pd (__T3, 0); \
15100 __m128d __T6 = _mm_##op (__T4, __T5); \
15101 __m128d __T7 = (__m128d) __builtin_shuffle (__T6, (__v2di) { 1, 0 }); \
15102 __m128d __T8 = _mm_##op (__T6, __T7); \
15103 return __T8[0]
15104
15105extern __inline double
15106__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15107_mm512_reduce_min_pd (__m512d __A)
15108{
15109 __MM512_REDUCE_OP (min_pd);
15110}
15111
15112extern __inline double
15113__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15114_mm512_reduce_max_pd (__m512d __A)
15115{
15116 __MM512_REDUCE_OP (max_pd);
15117}
15118
15119extern __inline double
15120__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15121_mm512_mask_reduce_min_pd (__mmask8 __U, __m512d __A)
15122{
15123 __A = _mm512_mask_mov_pd (_mm512_set1_pd (__builtin_inf ()), __U, __A);
15124 __MM512_REDUCE_OP (min_pd);
15125}
15126
15127extern __inline double
15128__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
15129_mm512_mask_reduce_max_pd (__mmask8 __U, __m512d __A)
15130{
15131 __A = _mm512_mask_mov_pd (_mm512_set1_pd (-__builtin_inf ()), __U, __A);
15132 __MM512_REDUCE_OP (max_pd);
15133}
15134
15135#undef __MM512_REDUCE_OP
15136
756c5857
AI
15137#ifdef __DISABLE_AVX512F__
15138#undef __DISABLE_AVX512F__
15139#pragma GCC pop_options
15140#endif /* __DISABLE_AVX512F__ */
15141
15142#endif /* _AVX512FINTRIN_H_INCLUDED */