blob: 8abb756fa24b4512768549a9ca70ca0f3eacbeef [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
30typedef double __v8df __attribute__((__vector_size__(64)));
31typedef float __v16sf __attribute__((__vector_size__(64)));
32typedef long long __v8di __attribute__((__vector_size__(64)));
33typedef int __v16si __attribute__((__vector_size__(64)));
34
35typedef float __m512 __attribute__((__vector_size__(64)));
36typedef double __m512d __attribute__((__vector_size__(64)));
37typedef long long __m512i __attribute__((__vector_size__(64)));
38
39typedef unsigned char __mmask8;
40typedef unsigned short __mmask16;
41
42/* Rounding mode macros. */
43#define _MM_FROUND_TO_NEAREST_INT 0x00
44#define _MM_FROUND_TO_NEG_INF 0x01
45#define _MM_FROUND_TO_POS_INF 0x02
46#define _MM_FROUND_TO_ZERO 0x03
47#define _MM_FROUND_CUR_DIRECTION 0x04
48
Michael Zuckermandef78752016-03-28 12:23:09 +000049typedef enum
50{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000051 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
52 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
53 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
54 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
55 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
56 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
57 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
58 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
59 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
60 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
61 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
62 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
63 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
64 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
65 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
66 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
67 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
68 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
69 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
70 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
71 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
72 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
73 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
74 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
75 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
76 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
77 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
78 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
79 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
80 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
81 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
82 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
83 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
84 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
85 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
86 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
87 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
88 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
89 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
90 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
91 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
92 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
93 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
94 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
95 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
96 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
97 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
98 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
99 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
100 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
101 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
102 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
103 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
104 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
105 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
106 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
107 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
108 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
109 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
110 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
111 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
112 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
113 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
114 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
115 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
116 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
117 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
118 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
119 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
120 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
121 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
122 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
123 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
124 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
125 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
126 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
127 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
128 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
129 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
130 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
131 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
132 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
133 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
134 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
135 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
136 _MM_PERM_DDDD = 0xFF
137} _MM_PERM_ENUM;
138
139typedef enum
140{
Michael Zuckermandef78752016-03-28 12:23:09 +0000141 _MM_MANT_NORM_1_2, /* interval [1, 2) */
142 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
143 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
144 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
145} _MM_MANTISSA_NORM_ENUM;
146
147typedef enum
148{
149 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
150 _MM_MANT_SIGN_zero, /* sign = 0 */
151 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
152} _MM_MANTISSA_SIGN_ENUM;
153
Eric Christopher4d1851682015-06-17 07:09:20 +0000154/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000155#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000156
Adam Nemet0d5bb552014-07-28 17:14:40 +0000157/* Create vectors with repeated elements */
158
Michael Kupersteine45af542015-06-30 13:36:19 +0000159static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000160_mm512_setzero_si512(void)
161{
162 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
163}
164
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000165static __inline__ __m512d __DEFAULT_FN_ATTRS
166_mm512_undefined_pd()
167{
168 return (__m512d)__builtin_ia32_undef512();
169}
170
171static __inline__ __m512 __DEFAULT_FN_ATTRS
172_mm512_undefined()
173{
174 return (__m512)__builtin_ia32_undef512();
175}
176
177static __inline__ __m512 __DEFAULT_FN_ATTRS
178_mm512_undefined_ps()
179{
180 return (__m512)__builtin_ia32_undef512();
181}
182
183static __inline__ __m512i __DEFAULT_FN_ATTRS
184_mm512_undefined_epi32()
185{
186 return (__m512i)__builtin_ia32_undef512();
187}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000188static __inline__ __m512i __DEFAULT_FN_ATTRS
189_mm512_broadcastd_epi32 (__m128i __A)
190{
191 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
192 (__v16si)
193 _mm512_undefined_epi32 (),
194 (__mmask16) -1);
195}
196
197static __inline__ __m512i __DEFAULT_FN_ATTRS
198_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
199{
200 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
201 (__v16si) __O, __M);
202}
203
204static __inline__ __m512i __DEFAULT_FN_ATTRS
205_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
206{
207 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
208 (__v16si)
209 _mm512_setzero_si512 (),
210 __M);
211}
212
213static __inline__ __m512i __DEFAULT_FN_ATTRS
214_mm512_broadcastq_epi64 (__m128i __A)
215{
216 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
217 (__v8di)
218 _mm512_undefined_pd (),
219 (__mmask8) -1);
220}
221
222static __inline__ __m512i __DEFAULT_FN_ATTRS
223_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
224{
225 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
226 (__v8di) __O, __M);
227}
228
229static __inline__ __m512i __DEFAULT_FN_ATTRS
230_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
231{
232 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
233 (__v8di)
234 _mm512_setzero_si512 (),
235 __M);
236}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000237
Michael Kupersteine45af542015-06-30 13:36:19 +0000238static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000239_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
240{
241 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
242 (__v16si)
243 _mm512_setzero_si512 (),
244 __M);
245}
246
Michael Kupersteine45af542015-06-30 13:36:19 +0000247static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000248_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
249{
250#ifdef __x86_64__
251 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
252 (__v8di)
253 _mm512_setzero_si512 (),
254 __M);
255#else
256 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
257 (__v8di)
258 _mm512_setzero_si512 (),
259 __M);
260#endif
261}
262
Michael Kupersteine45af542015-06-30 13:36:19 +0000263static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000264_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000265{
266 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
267 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
268}
Michael Kupersteine45af542015-06-30 13:36:19 +0000269static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000270_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000271{
272 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
273}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000276_mm512_set1_ps(float __w)
277{
278 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
279 __w, __w, __w, __w, __w, __w, __w, __w };
280}
281
Michael Kupersteine45af542015-06-30 13:36:19 +0000282static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000283_mm512_set1_pd(double __w)
284{
285 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
286}
287
Michael Kupersteine45af542015-06-30 13:36:19 +0000288static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000289_mm512_set1_epi32(int __s)
290{
291 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
292 __s, __s, __s, __s, __s, __s, __s, __s };
293}
294
Michael Kupersteine45af542015-06-30 13:36:19 +0000295static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000296_mm512_set1_epi64(long long __d)
297{
298 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
299}
300
Michael Kupersteine45af542015-06-30 13:36:19 +0000301static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000302_mm512_broadcastss_ps(__m128 __X)
303{
304 float __f = __X[0];
305 return (__v16sf){ __f, __f, __f, __f,
306 __f, __f, __f, __f,
307 __f, __f, __f, __f,
308 __f, __f, __f, __f };
309}
310
Michael Kupersteine45af542015-06-30 13:36:19 +0000311static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000312_mm512_broadcastsd_pd(__m128d __X)
313{
314 double __d = __X[0];
315 return (__v8df){ __d, __d, __d, __d,
316 __d, __d, __d, __d };
317}
318
Adam Nemetc871ff92014-07-30 16:51:24 +0000319/* Cast between vector types */
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000322_mm512_castpd256_pd512(__m256d __a)
323{
324 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
325}
326
Michael Kupersteine45af542015-06-30 13:36:19 +0000327static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000328_mm512_castps256_ps512(__m256 __a)
329{
330 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
331 -1, -1, -1, -1, -1, -1, -1, -1);
332}
333
Michael Kupersteine45af542015-06-30 13:36:19 +0000334static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000335_mm512_castpd512_pd128(__m512d __a)
336{
337 return __builtin_shufflevector(__a, __a, 0, 1);
338}
339
Michael Kupersteine45af542015-06-30 13:36:19 +0000340static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000341_mm512_castps512_ps128(__m512 __a)
342{
343 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
344}
345
Michael Zuckermanc6677032016-05-03 14:26:52 +0000346
347static __inline__ __m512d __DEFAULT_FN_ATTRS
348_mm512_castpd128_pd512 (__m128d __A)
349{
350 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
351}
352
353static __inline__ __m512 __DEFAULT_FN_ATTRS
354_mm512_castps128_ps512 (__m128 __A)
355{
356 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
357}
358
359static __inline__ __m512i __DEFAULT_FN_ATTRS
360_mm512_castsi128_si512 (__m128i __A)
361{
362 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
363}
364
365static __inline__ __m512i __DEFAULT_FN_ATTRS
366_mm512_castsi256_si512 (__m256i __A)
367{
368 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
369}
370
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000371/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000372static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000373_mm512_and_epi32(__m512i __a, __m512i __b)
374{
375 return __a & __b;
376}
377
Michael Kupersteine45af542015-06-30 13:36:19 +0000378static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000379_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
380{
381 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
382 (__v16si) __b,
383 (__v16si) __src,
384 (__mmask16) __k);
385}
Michael Kupersteine45af542015-06-30 13:36:19 +0000386static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000387_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
388{
389 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
390 (__v16si) __b,
391 (__v16si)
392 _mm512_setzero_si512 (),
393 (__mmask16) __k);
394}
395
Michael Kupersteine45af542015-06-30 13:36:19 +0000396static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000397_mm512_and_epi64(__m512i __a, __m512i __b)
398{
399 return __a & __b;
400}
401
Michael Kupersteine45af542015-06-30 13:36:19 +0000402static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000403_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
404{
405 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
406 (__v8di) __b,
407 (__v8di) __src,
408 (__mmask8) __k);
409}
Michael Kupersteine45af542015-06-30 13:36:19 +0000410static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000411_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
412{
413 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
414 (__v8di) __b,
415 (__v8di)
416 _mm512_setzero_si512 (),
417 (__mmask8) __k);
418}
419
Michael Kupersteine45af542015-06-30 13:36:19 +0000420static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000421_mm512_andnot_epi32 (__m512i __A, __m512i __B)
422{
423 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
424 (__v16si) __B,
425 (__v16si)
426 _mm512_setzero_si512 (),
427 (__mmask16) -1);
428}
429
Michael Kupersteine45af542015-06-30 13:36:19 +0000430static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000431_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
432{
433 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
434 (__v16si) __B,
435 (__v16si) __W,
436 (__mmask16) __U);
437}
438
Michael Kupersteine45af542015-06-30 13:36:19 +0000439static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000440_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
441{
442 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
443 (__v16si) __B,
444 (__v16si)
445 _mm512_setzero_si512 (),
446 (__mmask16) __U);
447}
448
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000450_mm512_andnot_epi64 (__m512i __A, __m512i __B)
451{
452 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
453 (__v8di) __B,
454 (__v8di)
455 _mm512_setzero_si512 (),
456 (__mmask8) -1);
457}
458
Michael Kupersteine45af542015-06-30 13:36:19 +0000459static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000460_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
461{
462 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
463 (__v8di) __B,
464 (__v8di) __W, __U);
465}
466
Michael Kupersteine45af542015-06-30 13:36:19 +0000467static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000468_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
469{
470 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
471 (__v8di) __B,
472 (__v8di)
473 _mm512_setzero_pd (),
474 __U);
475}
Michael Kupersteine45af542015-06-30 13:36:19 +0000476static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000477_mm512_or_epi32(__m512i __a, __m512i __b)
478{
479 return __a | __b;
480}
481
Michael Kupersteine45af542015-06-30 13:36:19 +0000482static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
484{
485 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
486 (__v16si) __b,
487 (__v16si) __src,
488 (__mmask16) __k);
489}
Michael Kupersteine45af542015-06-30 13:36:19 +0000490static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000491_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
492{
493 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
494 (__v16si) __b,
495 (__v16si)
496 _mm512_setzero_si512 (),
497 (__mmask16) __k);
498}
499
Michael Kupersteine45af542015-06-30 13:36:19 +0000500static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000501_mm512_or_epi64(__m512i __a, __m512i __b)
502{
503 return __a | __b;
504}
505
Michael Kupersteine45af542015-06-30 13:36:19 +0000506static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000507_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
508{
509 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
510 (__v8di) __b,
511 (__v8di) __src,
512 (__mmask8) __k);
513}
Michael Kupersteine45af542015-06-30 13:36:19 +0000514static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000515_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
516{
517 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
518 (__v8di) __b,
519 (__v8di)
520 _mm512_setzero_si512 (),
521 (__mmask8) __k);
522}
523
Michael Kupersteine45af542015-06-30 13:36:19 +0000524static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000525_mm512_xor_epi32(__m512i __a, __m512i __b)
526{
527 return __a ^ __b;
528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000531_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
532{
533 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
534 (__v16si) __b,
535 (__v16si) __src,
536 (__mmask16) __k);
537}
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000539_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
540{
541 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
542 (__v16si) __b,
543 (__v16si)
544 _mm512_setzero_si512 (),
545 (__mmask16) __k);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000549_mm512_xor_epi64(__m512i __a, __m512i __b)
550{
551 return __a ^ __b;
552}
553
Michael Kupersteine45af542015-06-30 13:36:19 +0000554static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000555_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
556{
557 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
558 (__v8di) __b,
559 (__v8di) __src,
560 (__mmask8) __k);
561}
Michael Kupersteine45af542015-06-30 13:36:19 +0000562static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000563_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
564{
565 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
566 (__v8di) __b,
567 (__v8di)
568 _mm512_setzero_si512 (),
569 (__mmask8) __k);
570}
571
Michael Kupersteine45af542015-06-30 13:36:19 +0000572static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000573_mm512_and_si512(__m512i __a, __m512i __b)
574{
575 return __a & __b;
576}
577
Michael Kupersteine45af542015-06-30 13:36:19 +0000578static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000579_mm512_or_si512(__m512i __a, __m512i __b)
580{
581 return __a | __b;
582}
583
Michael Kupersteine45af542015-06-30 13:36:19 +0000584static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000585_mm512_xor_si512(__m512i __a, __m512i __b)
586{
587 return __a ^ __b;
588}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000589/* Arithmetic */
590
Michael Kupersteine45af542015-06-30 13:36:19 +0000591static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000592_mm512_add_pd(__m512d __a, __m512d __b)
593{
594 return __a + __b;
595}
596
Michael Kupersteine45af542015-06-30 13:36:19 +0000597static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000598_mm512_add_ps(__m512 __a, __m512 __b)
599{
600 return __a + __b;
601}
602
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000604_mm512_mul_pd(__m512d __a, __m512d __b)
605{
606 return __a * __b;
607}
608
Michael Kupersteine45af542015-06-30 13:36:19 +0000609static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000610_mm512_mul_ps(__m512 __a, __m512 __b)
611{
612 return __a * __b;
613}
614
Michael Kupersteine45af542015-06-30 13:36:19 +0000615static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000616_mm512_sub_pd(__m512d __a, __m512d __b)
617{
618 return __a - __b;
619}
620
Michael Kupersteine45af542015-06-30 13:36:19 +0000621static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000622_mm512_sub_ps(__m512 __a, __m512 __b)
623{
624 return __a - __b;
625}
626
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000628_mm512_add_epi64 (__m512i __A, __m512i __B)
629{
630 return (__m512i) ((__v8di) __A + (__v8di) __B);
631}
632
Michael Kupersteine45af542015-06-30 13:36:19 +0000633static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000634_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
635{
636 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
637 (__v8di) __B,
638 (__v8di) __W,
639 (__mmask8) __U);
640}
641
Michael Kupersteine45af542015-06-30 13:36:19 +0000642static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000643_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
644{
645 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
646 (__v8di) __B,
647 (__v8di)
648 _mm512_setzero_si512 (),
649 (__mmask8) __U);
650}
651
Michael Kupersteine45af542015-06-30 13:36:19 +0000652static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000653_mm512_sub_epi64 (__m512i __A, __m512i __B)
654{
655 return (__m512i) ((__v8di) __A - (__v8di) __B);
656}
657
Michael Kupersteine45af542015-06-30 13:36:19 +0000658static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000659_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
660{
661 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
662 (__v8di) __B,
663 (__v8di) __W,
664 (__mmask8) __U);
665}
666
Michael Kupersteine45af542015-06-30 13:36:19 +0000667static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000668_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
669{
670 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
671 (__v8di) __B,
672 (__v8di)
673 _mm512_setzero_si512 (),
674 (__mmask8) __U);
675}
676
Michael Kupersteine45af542015-06-30 13:36:19 +0000677static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000678_mm512_add_epi32 (__m512i __A, __m512i __B)
679{
680 return (__m512i) ((__v16si) __A + (__v16si) __B);
681}
682
Michael Kupersteine45af542015-06-30 13:36:19 +0000683static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000684_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
685{
686 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
687 (__v16si) __B,
688 (__v16si) __W,
689 (__mmask16) __U);
690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000693_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
694{
695 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
696 (__v16si) __B,
697 (__v16si)
698 _mm512_setzero_si512 (),
699 (__mmask16) __U);
700}
701
Michael Kupersteine45af542015-06-30 13:36:19 +0000702static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000703_mm512_sub_epi32 (__m512i __A, __m512i __B)
704{
705 return (__m512i) ((__v16si) __A - (__v16si) __B);
706}
707
Michael Kupersteine45af542015-06-30 13:36:19 +0000708static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000709_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
710{
711 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
712 (__v16si) __B,
713 (__v16si) __W,
714 (__mmask16) __U);
715}
716
Michael Kupersteine45af542015-06-30 13:36:19 +0000717static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000718_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
719{
720 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
721 (__v16si) __B,
722 (__v16si)
723 _mm512_setzero_si512 (),
724 (__mmask16) __U);
725}
726
Michael Kupersteine45af542015-06-30 13:36:19 +0000727static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000728_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000729{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000730 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
731 (__v8df) __B,
732 (__v8df)
733 _mm512_setzero_pd (),
734 (__mmask8) -1,
735 _MM_FROUND_CUR_DIRECTION);
736}
737
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000738static __inline__ __m512d __DEFAULT_FN_ATTRS
739_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
740{
741 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
742 (__v8df) __B,
743 (__v8df) __W,
744 (__mmask8) __U,
745 _MM_FROUND_CUR_DIRECTION);
746}
747
748static __inline__ __m512d __DEFAULT_FN_ATTRS
749_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
750{
751 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
752 (__v8df) __B,
753 (__v8df)
754 _mm512_setzero_pd (),
755 (__mmask8) __U,
756 _MM_FROUND_CUR_DIRECTION);
757}
758
Michael Kupersteine45af542015-06-30 13:36:19 +0000759static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000760_mm512_max_ps(__m512 __A, __m512 __B)
761{
762 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
763 (__v16sf) __B,
764 (__v16sf)
765 _mm512_setzero_ps (),
766 (__mmask16) -1,
767 _MM_FROUND_CUR_DIRECTION);
768}
769
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000770static __inline__ __m512 __DEFAULT_FN_ATTRS
771_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
772{
773 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
774 (__v16sf) __B,
775 (__v16sf) __W,
776 (__mmask16) __U,
777 _MM_FROUND_CUR_DIRECTION);
778}
779
780static __inline__ __m512 __DEFAULT_FN_ATTRS
781_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
782{
783 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
784 (__v16sf) __B,
785 (__v16sf)
786 _mm512_setzero_ps (),
787 (__mmask16) __U,
788 _MM_FROUND_CUR_DIRECTION);
789}
790
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000791static __inline__ __m128 __DEFAULT_FN_ATTRS
792_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000793 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000794 (__v4sf) __B,
795 (__v4sf) __W,
796 (__mmask8) __U,
797 _MM_FROUND_CUR_DIRECTION);
798}
799
800static __inline__ __m128 __DEFAULT_FN_ATTRS
801_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000802 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000803 (__v4sf) __B,
804 (__v4sf) _mm_setzero_ps (),
805 (__mmask8) __U,
806 _MM_FROUND_CUR_DIRECTION);
807}
808
809#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000810 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000811 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
812
813#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000814 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000815 (__v4sf) __W, (__mmask8) __U,__R); })
816
817#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000818 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000819 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
820
821static __inline__ __m128d __DEFAULT_FN_ATTRS
822_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000823 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000824 (__v2df) __B,
825 (__v2df) __W,
826 (__mmask8) __U,
827 _MM_FROUND_CUR_DIRECTION);
828}
829
830static __inline__ __m128d __DEFAULT_FN_ATTRS
831_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000832 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000833 (__v2df) __B,
834 (__v2df) _mm_setzero_pd (),
835 (__mmask8) __U,
836 _MM_FROUND_CUR_DIRECTION);
837}
838
839#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000840 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000841 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
842
843#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000844 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000845 (__v2df) __W, (__mmask8) __U,__R); })
846
847#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000848 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000849 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
850
Michael Zuckermande860e52016-05-10 11:34:19 +0000851static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000852__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000853_mm512_max_epi32(__m512i __A, __m512i __B)
854{
855 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
856 (__v16si) __B,
857 (__v16si)
858 _mm512_setzero_si512 (),
859 (__mmask16) -1);
860}
861
Michael Zuckermande860e52016-05-10 11:34:19 +0000862static __inline__ __m512i __DEFAULT_FN_ATTRS
863_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
864{
865 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
866 (__v16si) __B,
867 (__v16si) __W, __M);
868}
869
870static __inline__ __m512i __DEFAULT_FN_ATTRS
871_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
872{
873 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
874 (__v16si) __B,
875 (__v16si)
876 _mm512_setzero_si512 (),
877 __M);
878}
879
Michael Kupersteine45af542015-06-30 13:36:19 +0000880static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000881_mm512_max_epu32(__m512i __A, __m512i __B)
882{
883 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
884 (__v16si) __B,
885 (__v16si)
886 _mm512_setzero_si512 (),
887 (__mmask16) -1);
888}
889
Michael Zuckermande860e52016-05-10 11:34:19 +0000890static __inline__ __m512i __DEFAULT_FN_ATTRS
891_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
892{
893 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
894 (__v16si) __B,
895 (__v16si) __W, __M);
896}
897
898static __inline__ __m512i __DEFAULT_FN_ATTRS
899_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
900{
901 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
902 (__v16si) __B,
903 (__v16si)
904 _mm512_setzero_si512 (),
905 __M);
906}
907
Michael Kupersteine45af542015-06-30 13:36:19 +0000908static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000909_mm512_max_epi64(__m512i __A, __m512i __B)
910{
911 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
912 (__v8di) __B,
913 (__v8di)
914 _mm512_setzero_si512 (),
915 (__mmask8) -1);
916}
917
Michael Zuckermande860e52016-05-10 11:34:19 +0000918static __inline__ __m512i __DEFAULT_FN_ATTRS
919_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
920{
921 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
922 (__v8di) __B,
923 (__v8di) __W, __M);
924}
925
926static __inline__ __m512i __DEFAULT_FN_ATTRS
927_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
928{
929 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
930 (__v8di) __B,
931 (__v8di)
932 _mm512_setzero_si512 (),
933 __M);
934}
935
Michael Kupersteine45af542015-06-30 13:36:19 +0000936static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000937_mm512_max_epu64(__m512i __A, __m512i __B)
938{
939 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
940 (__v8di) __B,
941 (__v8di)
942 _mm512_setzero_si512 (),
943 (__mmask8) -1);
944}
945
Michael Zuckermande860e52016-05-10 11:34:19 +0000946static __inline__ __m512i __DEFAULT_FN_ATTRS
947_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
948{
949 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
950 (__v8di) __B,
951 (__v8di) __W, __M);
952}
953
954static __inline__ __m512i __DEFAULT_FN_ATTRS
955_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
956{
957 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
958 (__v8di) __B,
959 (__v8di)
960 _mm512_setzero_si512 (),
961 __M);
962}
963
Michael Kupersteine45af542015-06-30 13:36:19 +0000964static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000965_mm512_min_pd(__m512d __A, __m512d __B)
966{
967 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
968 (__v8df) __B,
969 (__v8df)
970 _mm512_setzero_pd (),
971 (__mmask8) -1,
972 _MM_FROUND_CUR_DIRECTION);
973}
974
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000975static __inline__ __m512d __DEFAULT_FN_ATTRS
976_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
977{
978 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
979 (__v8df) __B,
980 (__v8df) __W,
981 (__mmask8) __U,
982 _MM_FROUND_CUR_DIRECTION);
983}
984
985static __inline__ __m512d __DEFAULT_FN_ATTRS
986_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
987{
988 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
989 (__v8df) __B,
990 (__v8df)
991 _mm512_setzero_pd (),
992 (__mmask8) __U,
993 _MM_FROUND_CUR_DIRECTION);
994}
995
Michael Kupersteine45af542015-06-30 13:36:19 +0000996static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000997_mm512_min_ps(__m512 __A, __m512 __B)
998{
999 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1000 (__v16sf) __B,
1001 (__v16sf)
1002 _mm512_setzero_ps (),
1003 (__mmask16) -1,
1004 _MM_FROUND_CUR_DIRECTION);
1005}
1006
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001007static __inline__ __m512 __DEFAULT_FN_ATTRS
1008_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1009{
1010 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1011 (__v16sf) __B,
1012 (__v16sf) __W,
1013 (__mmask16) __U,
1014 _MM_FROUND_CUR_DIRECTION);
1015}
1016
1017static __inline__ __m512 __DEFAULT_FN_ATTRS
1018_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1019{
1020 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1021 (__v16sf) __B,
1022 (__v16sf)
1023 _mm512_setzero_ps (),
1024 (__mmask16) __U,
1025 _MM_FROUND_CUR_DIRECTION);
1026}
1027
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001028static __inline__ __m128 __DEFAULT_FN_ATTRS
1029_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001030 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001031 (__v4sf) __B,
1032 (__v4sf) __W,
1033 (__mmask8) __U,
1034 _MM_FROUND_CUR_DIRECTION);
1035}
1036
1037static __inline__ __m128 __DEFAULT_FN_ATTRS
1038_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001039 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001040 (__v4sf) __B,
1041 (__v4sf) _mm_setzero_ps (),
1042 (__mmask8) __U,
1043 _MM_FROUND_CUR_DIRECTION);
1044}
1045
1046#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001047 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001048 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1049
1050#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001051 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001052 (__v4sf) __W, (__mmask8) __U,__R); })
1053
1054#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001055 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001056 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1057
1058static __inline__ __m128d __DEFAULT_FN_ATTRS
1059_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001060 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001061 (__v2df) __B,
1062 (__v2df) __W,
1063 (__mmask8) __U,
1064 _MM_FROUND_CUR_DIRECTION);
1065}
1066
1067static __inline__ __m128d __DEFAULT_FN_ATTRS
1068_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001069 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001070 (__v2df) __B,
1071 (__v2df) _mm_setzero_pd (),
1072 (__mmask8) __U,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
1076#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001077 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001078 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1079
1080#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001081 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001082 (__v2df) __W, (__mmask8) __U,__R); })
1083
1084#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001085 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001086 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1087
Adam Nemet0d5bb552014-07-28 17:14:40 +00001088static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001089__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001090_mm512_min_epi32(__m512i __A, __m512i __B)
1091{
1092 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1093 (__v16si) __B,
1094 (__v16si)
1095 _mm512_setzero_si512 (),
1096 (__mmask16) -1);
1097}
1098
Michael Zuckermande860e52016-05-10 11:34:19 +00001099static __inline__ __m512i __DEFAULT_FN_ATTRS
1100_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1101{
1102 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1103 (__v16si) __B,
1104 (__v16si) __W, __M);
1105}
1106
1107static __inline__ __m512i __DEFAULT_FN_ATTRS
1108_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1109{
1110 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1111 (__v16si) __B,
1112 (__v16si)
1113 _mm512_setzero_si512 (),
1114 __M);
1115}
1116
Michael Kupersteine45af542015-06-30 13:36:19 +00001117static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001118_mm512_min_epu32(__m512i __A, __m512i __B)
1119{
1120 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1121 (__v16si) __B,
1122 (__v16si)
1123 _mm512_setzero_si512 (),
1124 (__mmask16) -1);
1125}
1126
Michael Zuckermande860e52016-05-10 11:34:19 +00001127static __inline__ __m512i __DEFAULT_FN_ATTRS
1128_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1129{
1130 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1131 (__v16si) __B,
1132 (__v16si) __W, __M);
1133}
1134
1135static __inline__ __m512i __DEFAULT_FN_ATTRS
1136_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1137{
1138 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1139 (__v16si) __B,
1140 (__v16si)
1141 _mm512_setzero_si512 (),
1142 __M);
1143}
1144
Michael Kupersteine45af542015-06-30 13:36:19 +00001145static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001146_mm512_min_epi64(__m512i __A, __m512i __B)
1147{
1148 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1149 (__v8di) __B,
1150 (__v8di)
1151 _mm512_setzero_si512 (),
1152 (__mmask8) -1);
1153}
1154
Michael Zuckermande860e52016-05-10 11:34:19 +00001155static __inline__ __m512i __DEFAULT_FN_ATTRS
1156_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1157{
1158 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1159 (__v8di) __B,
1160 (__v8di) __W, __M);
1161}
1162
1163static __inline__ __m512i __DEFAULT_FN_ATTRS
1164_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1165{
1166 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1167 (__v8di) __B,
1168 (__v8di)
1169 _mm512_setzero_si512 (),
1170 __M);
1171}
1172
Michael Kupersteine45af542015-06-30 13:36:19 +00001173static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001174_mm512_min_epu64(__m512i __A, __m512i __B)
1175{
1176 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1177 (__v8di) __B,
1178 (__v8di)
1179 _mm512_setzero_si512 (),
1180 (__mmask8) -1);
1181}
1182
Michael Zuckermande860e52016-05-10 11:34:19 +00001183static __inline__ __m512i __DEFAULT_FN_ATTRS
1184_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1185{
1186 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1187 (__v8di) __B,
1188 (__v8di) __W, __M);
1189}
1190
1191static __inline__ __m512i __DEFAULT_FN_ATTRS
1192_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1193{
1194 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1195 (__v8di) __B,
1196 (__v8di)
1197 _mm512_setzero_si512 (),
1198 __M);
1199}
1200
Michael Kupersteine45af542015-06-30 13:36:19 +00001201static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001202_mm512_mul_epi32(__m512i __X, __m512i __Y)
1203{
1204 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1205 (__v16si) __Y,
1206 (__v8di)
1207 _mm512_setzero_si512 (),
1208 (__mmask8) -1);
1209}
1210
Michael Kupersteine45af542015-06-30 13:36:19 +00001211static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001212_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1213{
1214 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1215 (__v16si) __Y,
1216 (__v8di) __W, __M);
1217}
1218
Michael Kupersteine45af542015-06-30 13:36:19 +00001219static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001220_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1221{
1222 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1223 (__v16si) __Y,
1224 (__v8di)
1225 _mm512_setzero_si512 (),
1226 __M);
1227}
1228
Michael Kupersteine45af542015-06-30 13:36:19 +00001229static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001230_mm512_mul_epu32(__m512i __X, __m512i __Y)
1231{
1232 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1233 (__v16si) __Y,
1234 (__v8di)
1235 _mm512_setzero_si512 (),
1236 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001237}
1238
Michael Kupersteine45af542015-06-30 13:36:19 +00001239static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001240_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1241{
1242 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1243 (__v16si) __Y,
1244 (__v8di) __W, __M);
1245}
1246
Michael Kupersteine45af542015-06-30 13:36:19 +00001247static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001248_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1249{
1250 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1251 (__v16si) __Y,
1252 (__v8di)
1253 _mm512_setzero_si512 (),
1254 __M);
1255}
1256
Michael Kupersteine45af542015-06-30 13:36:19 +00001257static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001258_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1259{
1260 return (__m512i) ((__v16si) __A * (__v16si) __B);
1261}
1262
Michael Kupersteine45af542015-06-30 13:36:19 +00001263static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001264_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1265{
1266 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1267 (__v16si) __B,
1268 (__v16si)
1269 _mm512_setzero_si512 (),
1270 __M);
1271}
1272
Michael Kupersteine45af542015-06-30 13:36:19 +00001273static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001274_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1275{
1276 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1277 (__v16si) __B,
1278 (__v16si) __W, __M);
1279}
1280
Michael Kupersteine45af542015-06-30 13:36:19 +00001281static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001282_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001283{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001284 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001285 (__v8df) _mm512_setzero_pd (),
1286 (__mmask8) -1,
1287 _MM_FROUND_CUR_DIRECTION);
1288}
1289
Michael Kupersteine45af542015-06-30 13:36:19 +00001290static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001291_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001292{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001293 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001294 (__v16sf) _mm512_setzero_ps (),
1295 (__mmask16) -1,
1296 _MM_FROUND_CUR_DIRECTION);
1297}
1298
Michael Kupersteine45af542015-06-30 13:36:19 +00001299static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001300_mm512_rsqrt14_pd(__m512d __A)
1301{
1302 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1303 (__v8df)
1304 _mm512_setzero_pd (),
1305 (__mmask8) -1);}
1306
Michael Kupersteine45af542015-06-30 13:36:19 +00001307static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001308_mm512_rsqrt14_ps(__m512 __A)
1309{
1310 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1311 (__v16sf)
1312 _mm512_setzero_ps (),
1313 (__mmask16) -1);
1314}
1315
Michael Kupersteine45af542015-06-30 13:36:19 +00001316static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001317_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1318{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001319 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001320 (__v4sf) __B,
1321 (__v4sf)
1322 _mm_setzero_ps (),
1323 (__mmask8) -1);
1324}
1325
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001326static __inline__ __m128 __DEFAULT_FN_ATTRS
1327_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1328{
1329 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1330 (__v4sf) __B,
1331 (__v4sf) __W,
1332 (__mmask8) __U);
1333}
1334
1335static __inline__ __m128 __DEFAULT_FN_ATTRS
1336_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1337{
1338 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1339 (__v4sf) __B,
1340 (__v4sf) _mm_setzero_ps (),
1341 (__mmask8) __U);
1342}
1343
Michael Kupersteine45af542015-06-30 13:36:19 +00001344static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001345_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1346{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001347 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001348 (__v2df) __B,
1349 (__v2df)
1350 _mm_setzero_pd (),
1351 (__mmask8) -1);
1352}
1353
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001354static __inline__ __m128d __DEFAULT_FN_ATTRS
1355_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1356{
1357 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1358 (__v2df) __B,
1359 (__v2df) __W,
1360 (__mmask8) __U);
1361}
1362
1363static __inline__ __m128d __DEFAULT_FN_ATTRS
1364_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1365{
1366 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1367 (__v2df) __B,
1368 (__v2df) _mm_setzero_pd (),
1369 (__mmask8) __U);
1370}
1371
Michael Kupersteine45af542015-06-30 13:36:19 +00001372static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001373_mm512_rcp14_pd(__m512d __A)
1374{
1375 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1376 (__v8df)
1377 _mm512_setzero_pd (),
1378 (__mmask8) -1);
1379}
1380
Michael Kupersteine45af542015-06-30 13:36:19 +00001381static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001382_mm512_rcp14_ps(__m512 __A)
1383{
1384 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1385 (__v16sf)
1386 _mm512_setzero_ps (),
1387 (__mmask16) -1);
1388}
Michael Kupersteine45af542015-06-30 13:36:19 +00001389static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001390_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001391{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001392 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001393 (__v4sf) __B,
1394 (__v4sf)
1395 _mm_setzero_ps (),
1396 (__mmask8) -1);
1397}
1398
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001399static __inline__ __m128 __DEFAULT_FN_ATTRS
1400_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1401{
1402 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1403 (__v4sf) __B,
1404 (__v4sf) __W,
1405 (__mmask8) __U);
1406}
1407
1408static __inline__ __m128 __DEFAULT_FN_ATTRS
1409_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1410{
1411 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1412 (__v4sf) __B,
1413 (__v4sf) _mm_setzero_ps (),
1414 (__mmask8) __U);
1415}
1416
Michael Kupersteine45af542015-06-30 13:36:19 +00001417static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001418_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001419{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001420 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001421 (__v2df) __B,
1422 (__v2df)
1423 _mm_setzero_pd (),
1424 (__mmask8) -1);
1425}
1426
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001427static __inline__ __m128d __DEFAULT_FN_ATTRS
1428_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1429{
1430 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1431 (__v2df) __B,
1432 (__v2df) __W,
1433 (__mmask8) __U);
1434}
1435
1436static __inline__ __m128d __DEFAULT_FN_ATTRS
1437_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1438{
1439 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1440 (__v2df) __B,
1441 (__v2df) _mm_setzero_pd (),
1442 (__mmask8) __U);
1443}
1444
Michael Kupersteine45af542015-06-30 13:36:19 +00001445static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001446_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001447{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001448 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1449 _MM_FROUND_FLOOR,
1450 (__v16sf) __A, -1,
1451 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001452}
1453
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001454static __inline__ __m512 __DEFAULT_FN_ATTRS
1455_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1456{
1457 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1458 _MM_FROUND_FLOOR,
1459 (__v16sf) __W, __U,
1460 _MM_FROUND_CUR_DIRECTION);
1461}
1462
1463
Michael Kupersteine45af542015-06-30 13:36:19 +00001464static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001465_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001466{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001467 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1468 _MM_FROUND_FLOOR,
1469 (__v8df) __A, -1,
1470 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001471}
1472
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001473static __inline__ __m512d __DEFAULT_FN_ATTRS
1474_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1475{
1476 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1477 _MM_FROUND_FLOOR,
1478 (__v8df) __W, __U,
1479 _MM_FROUND_CUR_DIRECTION);
1480}
1481
1482
1483static __inline__ __m512 __DEFAULT_FN_ATTRS
1484_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1485{
1486 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1487 _MM_FROUND_CEIL,
1488 (__v16sf) __W, __U,
1489 _MM_FROUND_CUR_DIRECTION);
1490}
1491
Michael Kupersteine45af542015-06-30 13:36:19 +00001492static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001493_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001494{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001495 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1496 _MM_FROUND_CEIL,
1497 (__v16sf) __A, -1,
1498 _MM_FROUND_CUR_DIRECTION);
1499}
1500
Michael Kupersteine45af542015-06-30 13:36:19 +00001501static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001502_mm512_ceil_pd(__m512d __A)
1503{
1504 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1505 _MM_FROUND_CEIL,
1506 (__v8df) __A, -1,
1507 _MM_FROUND_CUR_DIRECTION);
1508}
1509
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001510static __inline__ __m512d __DEFAULT_FN_ATTRS
1511_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1512{
1513 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1514 _MM_FROUND_CEIL,
1515 (__v8df) __W, __U,
1516 _MM_FROUND_CUR_DIRECTION);
1517}
1518
Michael Kupersteine45af542015-06-30 13:36:19 +00001519static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001520_mm512_abs_epi64(__m512i __A)
1521{
1522 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1523 (__v8di)
1524 _mm512_setzero_si512 (),
1525 (__mmask8) -1);
1526}
1527
Michael Kupersteine45af542015-06-30 13:36:19 +00001528static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001529_mm512_abs_epi32(__m512i __A)
1530{
1531 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1532 (__v16si)
1533 _mm512_setzero_si512 (),
1534 (__mmask16) -1);
1535}
1536
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001537static __inline__ __m128 __DEFAULT_FN_ATTRS
1538_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001539 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001540 (__v4sf) __B,
1541 (__v4sf) __W,
1542 (__mmask8) __U,
1543 _MM_FROUND_CUR_DIRECTION);
1544}
1545
1546static __inline__ __m128 __DEFAULT_FN_ATTRS
1547_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001548 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001549 (__v4sf) __B,
1550 (__v4sf) _mm_setzero_ps (),
1551 (__mmask8) __U,
1552 _MM_FROUND_CUR_DIRECTION);
1553}
1554
1555#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001556 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001557 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1558
1559#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001560 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001561 (__v4sf) __W, (__mmask8) __U,__R); })
1562
1563#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001564 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001565 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1566
1567static __inline__ __m128d __DEFAULT_FN_ATTRS
1568_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001569 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001570 (__v2df) __B,
1571 (__v2df) __W,
1572 (__mmask8) __U,
1573 _MM_FROUND_CUR_DIRECTION);
1574}
1575
1576static __inline__ __m128d __DEFAULT_FN_ATTRS
1577_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001578 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001579 (__v2df) __B,
1580 (__v2df) _mm_setzero_pd (),
1581 (__mmask8) __U,
1582 _MM_FROUND_CUR_DIRECTION);
1583}
1584#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001585 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001586 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1587
1588#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001589 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001590 (__v2df) __W, (__mmask8) __U,__R); })
1591
1592#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001593 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001594 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1595
Asaf Badouhffeb6242015-07-21 15:27:28 +00001596static __inline__ __m512d __DEFAULT_FN_ATTRS
1597_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1598 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1599 (__v8df) __B,
1600 (__v8df) __W,
1601 (__mmask8) __U,
1602 _MM_FROUND_CUR_DIRECTION);
1603}
1604
1605static __inline__ __m512d __DEFAULT_FN_ATTRS
1606_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1607 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1608 (__v8df) __B,
1609 (__v8df) _mm512_setzero_pd (),
1610 (__mmask8) __U,
1611 _MM_FROUND_CUR_DIRECTION);
1612}
1613
1614static __inline__ __m512 __DEFAULT_FN_ATTRS
1615_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1616 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1617 (__v16sf) __B,
1618 (__v16sf) __W,
1619 (__mmask16) __U,
1620 _MM_FROUND_CUR_DIRECTION);
1621}
1622
1623static __inline__ __m512 __DEFAULT_FN_ATTRS
1624_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1625 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1626 (__v16sf) __B,
1627 (__v16sf) _mm512_setzero_ps (),
1628 (__mmask16) __U,
1629 _MM_FROUND_CUR_DIRECTION);
1630}
1631
1632#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1633 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1634 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1635
1636#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1637 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1638 (__v8df) __W, (__mmask8) __U, __R); })
1639
1640#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1641 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1642 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1643
1644#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1645 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1646 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1647
1648#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1649 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1650 (__v16sf) __W, (__mmask16)__U, __R); })
1651
1652#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1653 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1654 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1655
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001656static __inline__ __m128 __DEFAULT_FN_ATTRS
1657_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001658 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001659 (__v4sf) __B,
1660 (__v4sf) __W,
1661 (__mmask8) __U,
1662 _MM_FROUND_CUR_DIRECTION);
1663}
1664
1665static __inline__ __m128 __DEFAULT_FN_ATTRS
1666_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001667 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001668 (__v4sf) __B,
1669 (__v4sf) _mm_setzero_ps (),
1670 (__mmask8) __U,
1671 _MM_FROUND_CUR_DIRECTION);
1672}
1673#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001674 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001675 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1676
1677#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001678 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001679 (__v4sf) __W, (__mmask8) __U,__R); })
1680
1681#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001682 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001683 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1684
1685static __inline__ __m128d __DEFAULT_FN_ATTRS
1686_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001687 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001688 (__v2df) __B,
1689 (__v2df) __W,
1690 (__mmask8) __U,
1691 _MM_FROUND_CUR_DIRECTION);
1692}
1693
1694static __inline__ __m128d __DEFAULT_FN_ATTRS
1695_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001696 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001697 (__v2df) __B,
1698 (__v2df) _mm_setzero_pd (),
1699 (__mmask8) __U,
1700 _MM_FROUND_CUR_DIRECTION);
1701}
1702
1703#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001704 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001705 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1706
1707#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001708 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001709 (__v2df) __W, (__mmask8) __U,__R); })
1710
1711#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001712 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001713 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1714
Asaf Badouhffeb6242015-07-21 15:27:28 +00001715static __inline__ __m512d __DEFAULT_FN_ATTRS
1716_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1717 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1718 (__v8df) __B,
1719 (__v8df) __W,
1720 (__mmask8) __U,
1721 _MM_FROUND_CUR_DIRECTION);
1722}
1723
1724static __inline__ __m512d __DEFAULT_FN_ATTRS
1725_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1726 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1727 (__v8df) __B,
1728 (__v8df)
1729 _mm512_setzero_pd (),
1730 (__mmask8) __U,
1731 _MM_FROUND_CUR_DIRECTION);
1732}
1733
1734static __inline__ __m512 __DEFAULT_FN_ATTRS
1735_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1736 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1737 (__v16sf) __B,
1738 (__v16sf) __W,
1739 (__mmask16) __U,
1740 _MM_FROUND_CUR_DIRECTION);
1741}
1742
1743static __inline__ __m512 __DEFAULT_FN_ATTRS
1744_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1745 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1746 (__v16sf) __B,
1747 (__v16sf)
1748 _mm512_setzero_ps (),
1749 (__mmask16) __U,
1750 _MM_FROUND_CUR_DIRECTION);
1751}
1752
1753#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1754 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1755 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1756
1757#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1758 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1759 (__v8df) __W, (__mmask8) __U, __R); })
1760
1761#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1762 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1763 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1764
1765#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1766 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1767 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1768
1769#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1770 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1771 (__v16sf) __W, (__mmask16) __U, __R); });
1772
1773#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1774 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1775 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1776
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001777static __inline__ __m128 __DEFAULT_FN_ATTRS
1778_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001779 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001780 (__v4sf) __B,
1781 (__v4sf) __W,
1782 (__mmask8) __U,
1783 _MM_FROUND_CUR_DIRECTION);
1784}
1785
1786static __inline__ __m128 __DEFAULT_FN_ATTRS
1787_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001788 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001789 (__v4sf) __B,
1790 (__v4sf) _mm_setzero_ps (),
1791 (__mmask8) __U,
1792 _MM_FROUND_CUR_DIRECTION);
1793}
1794#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001795 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001796 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1797
1798#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001799 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001800 (__v4sf) __W, (__mmask8) __U,__R); })
1801
1802#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001803 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001804 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1805
1806static __inline__ __m128d __DEFAULT_FN_ATTRS
1807_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001808 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001809 (__v2df) __B,
1810 (__v2df) __W,
1811 (__mmask8) __U,
1812 _MM_FROUND_CUR_DIRECTION);
1813}
1814
1815static __inline__ __m128d __DEFAULT_FN_ATTRS
1816_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001817 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001818 (__v2df) __B,
1819 (__v2df) _mm_setzero_pd (),
1820 (__mmask8) __U,
1821 _MM_FROUND_CUR_DIRECTION);
1822}
1823
1824#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001825 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001826 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1827
1828#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001829 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001830 (__v2df) __W, (__mmask8) __U,__R); })
1831
1832#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001833 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001834 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1835
Asaf Badouhffeb6242015-07-21 15:27:28 +00001836static __inline__ __m512d __DEFAULT_FN_ATTRS
1837_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1838 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1839 (__v8df) __B,
1840 (__v8df) __W,
1841 (__mmask8) __U,
1842 _MM_FROUND_CUR_DIRECTION);
1843}
1844
1845static __inline__ __m512d __DEFAULT_FN_ATTRS
1846_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1847 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1848 (__v8df) __B,
1849 (__v8df)
1850 _mm512_setzero_pd (),
1851 (__mmask8) __U,
1852 _MM_FROUND_CUR_DIRECTION);
1853}
1854
1855static __inline__ __m512 __DEFAULT_FN_ATTRS
1856_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1857 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1858 (__v16sf) __B,
1859 (__v16sf) __W,
1860 (__mmask16) __U,
1861 _MM_FROUND_CUR_DIRECTION);
1862}
1863
1864static __inline__ __m512 __DEFAULT_FN_ATTRS
1865_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1866 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1867 (__v16sf) __B,
1868 (__v16sf)
1869 _mm512_setzero_ps (),
1870 (__mmask16) __U,
1871 _MM_FROUND_CUR_DIRECTION);
1872}
1873
1874#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1875 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1876 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1877
1878#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1879 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1880 (__v8df) __W, (__mmask8) __U, __R); })
1881
1882#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1883 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1884 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1885
1886#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1887 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1888 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1889
1890#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1891 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1892 (__v16sf) __W, (__mmask16) __U, __R); });
1893
1894#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1895 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1896 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1897
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001898static __inline__ __m128 __DEFAULT_FN_ATTRS
1899_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001900 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001901 (__v4sf) __B,
1902 (__v4sf) __W,
1903 (__mmask8) __U,
1904 _MM_FROUND_CUR_DIRECTION);
1905}
1906
1907static __inline__ __m128 __DEFAULT_FN_ATTRS
1908_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001909 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001910 (__v4sf) __B,
1911 (__v4sf) _mm_setzero_ps (),
1912 (__mmask8) __U,
1913 _MM_FROUND_CUR_DIRECTION);
1914}
1915
1916#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001917 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001918 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1919
1920#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001921 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001922 (__v4sf) __W, (__mmask8) __U,__R); })
1923
1924#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001925 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001926 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1927
1928static __inline__ __m128d __DEFAULT_FN_ATTRS
1929_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001930 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001931 (__v2df) __B,
1932 (__v2df) __W,
1933 (__mmask8) __U,
1934 _MM_FROUND_CUR_DIRECTION);
1935}
1936
1937static __inline__ __m128d __DEFAULT_FN_ATTRS
1938_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001939 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001940 (__v2df) __B,
1941 (__v2df) _mm_setzero_pd (),
1942 (__mmask8) __U,
1943 _MM_FROUND_CUR_DIRECTION);
1944}
1945
1946#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001947 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001948 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1949
1950#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001951 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001952 (__v2df) __W, (__mmask8) __U,__R); })
1953
1954#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001955 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001956 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1957
Asaf Badouhffeb6242015-07-21 15:27:28 +00001958static __inline__ __m512d __DEFAULT_FN_ATTRS
1959_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1960 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1961 (__v8df) __B,
1962 (__v8df) __W,
1963 (__mmask8) __U,
1964 _MM_FROUND_CUR_DIRECTION);
1965}
1966
1967static __inline__ __m512d __DEFAULT_FN_ATTRS
1968_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1969 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1970 (__v8df) __B,
1971 (__v8df)
1972 _mm512_setzero_pd (),
1973 (__mmask8) __U,
1974 _MM_FROUND_CUR_DIRECTION);
1975}
1976
1977static __inline__ __m512 __DEFAULT_FN_ATTRS
1978_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1979 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1980 (__v16sf) __B,
1981 (__v16sf) __W,
1982 (__mmask16) __U,
1983 _MM_FROUND_CUR_DIRECTION);
1984}
1985
1986static __inline__ __m512 __DEFAULT_FN_ATTRS
1987_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1988 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1989 (__v16sf) __B,
1990 (__v16sf)
1991 _mm512_setzero_ps (),
1992 (__mmask16) __U,
1993 _MM_FROUND_CUR_DIRECTION);
1994}
1995
1996#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1997 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1998 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1999
2000#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
2001 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
2002 (__v8df) __W, (__mmask8) __U, __R); })
2003
2004#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
2005 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
2006 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
2007
2008#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
2009 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
2010 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
2011
2012#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
2013 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
2014 (__v16sf) __W, (__mmask16) __U, __R); });
2015
2016#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
2017 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
2018 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
2019
Craig Topper72c7d512015-02-01 07:35:35 +00002020#define _mm512_roundscale_ps(A, B) __extension__ ({ \
2021 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
2022 -1, _MM_FROUND_CUR_DIRECTION); })
2023
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002024#define _mm512_mask_roundscale_ps( __A, __B, __C, __imm) __extension__ ({\
2025 (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,\
2026 (__v16sf) __A,(__mmask16) __B,\
2027 _MM_FROUND_CUR_DIRECTION);\
2028})
2029
2030#define _mm512_maskz_roundscale_ps( __A, __B, __imm) __extension__ ({\
2031 (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B, __imm,\
2032 (__v16sf) _mm512_setzero_ps (),\
2033 (__mmask16) __A, _MM_FROUND_CUR_DIRECTION);\
2034})
2035
Craig Topper72c7d512015-02-01 07:35:35 +00002036#define _mm512_roundscale_pd(A, B) __extension__ ({ \
2037 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
2038 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002039
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002040#define _mm512_mask_roundscale_pd(__A, __B, __C, __imm) __extension__ ({\
2041 (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,\
2042 (__v8df) __A, (__mmask8) __B,\
2043 _MM_FROUND_CUR_DIRECTION);\
2044})
2045
2046#define _mm512_maskz_roundscale_pd(__A, __B, __imm) __extension__ ({\
2047 (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B, __imm,\
2048 (__v8df) _mm512_setzero_pd (),\
2049 (__mmask8) __A, _MM_FROUND_CUR_DIRECTION);\
2050})
2051
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002052#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
2053 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2054 (__v8df) (B), (__v8df) (C), \
2055 (__mmask8) -1, (R)); })
2056
2057
2058#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2059 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2060 (__v8df) (B), (__v8df) (C), \
2061 (__mmask8) (U), (R)); })
2062
2063
2064#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
2065 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
2066 (__v8df) (B), (__v8df) (C), \
2067 (__mmask8) (U), (R)); })
2068
2069
2070#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
2071 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
2072 (__v8df) (B), (__v8df) (C), \
2073 (__mmask8) (U), (R)); })
2074
2075
2076#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
2077 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2078 (__v8df) (B), -(__v8df) (C), \
2079 (__mmask8) -1, (R)); })
2080
2081
2082#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2083 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2084 (__v8df) (B), -(__v8df) (C), \
2085 (__mmask8) (U), (R)); })
2086
2087
2088#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
2089 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
2090 (__v8df) (B), -(__v8df) (C), \
2091 (__mmask8) (U), (R)); })
2092
2093
2094#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
2095 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
2096 (__v8df) (B), (__v8df) (C), \
2097 (__mmask8) -1, (R)); })
2098
2099
2100#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
2101 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
2102 (__v8df) (B), (__v8df) (C), \
2103 (__mmask8) (U), (R)); })
2104
2105
2106#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
2107 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
2108 (__v8df) (B), (__v8df) (C), \
2109 (__mmask8) (U), (R)); })
2110
2111
2112#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
2113 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
2114 (__v8df) (B), -(__v8df) (C), \
2115 (__mmask8) -1, (R)); })
2116
2117
2118#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
2119 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
2120 (__v8df) (B), -(__v8df) (C), \
2121 (__mmask8) (U), (R)); })
2122
2123
Michael Kupersteine45af542015-06-30 13:36:19 +00002124static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002125_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2126{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002127 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2128 (__v8df) __B,
2129 (__v8df) __C,
2130 (__mmask8) -1,
2131 _MM_FROUND_CUR_DIRECTION);
2132}
2133
Michael Kupersteine45af542015-06-30 13:36:19 +00002134static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002135_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2136{
2137 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2138 (__v8df) __B,
2139 (__v8df) __C,
2140 (__mmask8) __U,
2141 _MM_FROUND_CUR_DIRECTION);
2142}
2143
Michael Kupersteine45af542015-06-30 13:36:19 +00002144static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002145_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2146{
2147 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2148 (__v8df) __B,
2149 (__v8df) __C,
2150 (__mmask8) __U,
2151 _MM_FROUND_CUR_DIRECTION);
2152}
2153
Michael Kupersteine45af542015-06-30 13:36:19 +00002154static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002155_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2156{
2157 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2158 (__v8df) __B,
2159 (__v8df) __C,
2160 (__mmask8) __U,
2161 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002162}
2163
Michael Kupersteine45af542015-06-30 13:36:19 +00002164static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002165_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2166{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002167 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2168 (__v8df) __B,
2169 -(__v8df) __C,
2170 (__mmask8) -1,
2171 _MM_FROUND_CUR_DIRECTION);
2172}
2173
Michael Kupersteine45af542015-06-30 13:36:19 +00002174static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002175_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2176{
2177 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2178 (__v8df) __B,
2179 -(__v8df) __C,
2180 (__mmask8) __U,
2181 _MM_FROUND_CUR_DIRECTION);
2182}
2183
Michael Kupersteine45af542015-06-30 13:36:19 +00002184static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002185_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2186{
2187 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2188 (__v8df) __B,
2189 -(__v8df) __C,
2190 (__mmask8) __U,
2191 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002192}
2193
Michael Kupersteine45af542015-06-30 13:36:19 +00002194static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002195_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2196{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002197 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2198 (__v8df) __B,
2199 (__v8df) __C,
2200 (__mmask8) -1,
2201 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002202}
2203
Michael Kupersteine45af542015-06-30 13:36:19 +00002204static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002205_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2206{
2207 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2208 (__v8df) __B,
2209 (__v8df) __C,
2210 (__mmask8) __U,
2211 _MM_FROUND_CUR_DIRECTION);
2212}
2213
Michael Kupersteine45af542015-06-30 13:36:19 +00002214static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002215_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2216{
2217 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2218 (__v8df) __B,
2219 (__v8df) __C,
2220 (__mmask8) __U,
2221 _MM_FROUND_CUR_DIRECTION);
2222}
2223
Michael Kupersteine45af542015-06-30 13:36:19 +00002224static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002225_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2226{
2227 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2228 (__v8df) __B,
2229 -(__v8df) __C,
2230 (__mmask8) -1,
2231 _MM_FROUND_CUR_DIRECTION);
2232}
2233
Michael Kupersteine45af542015-06-30 13:36:19 +00002234static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002235_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2236{
2237 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2238 (__v8df) __B,
2239 -(__v8df) __C,
2240 (__mmask8) __U,
2241 _MM_FROUND_CUR_DIRECTION);
2242}
2243
2244#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
2245 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2246 (__v16sf) (B), (__v16sf) (C), \
2247 (__mmask16) -1, (R)); })
2248
2249
2250#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2251 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2252 (__v16sf) (B), (__v16sf) (C), \
2253 (__mmask16) (U), (R)); })
2254
2255
2256#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
2257 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
2258 (__v16sf) (B), (__v16sf) (C), \
2259 (__mmask16) (U), (R)); })
2260
2261
2262#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
2263 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
2264 (__v16sf) (B), (__v16sf) (C), \
2265 (__mmask16) (U), (R)); })
2266
2267
2268#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
2269 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2270 (__v16sf) (B), -(__v16sf) (C), \
2271 (__mmask16) -1, (R)); })
2272
2273
2274#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2275 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2276 (__v16sf) (B), -(__v16sf) (C), \
2277 (__mmask16) (U), (R)); })
2278
2279
2280#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
2281 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
2282 (__v16sf) (B), -(__v16sf) (C), \
2283 (__mmask16) (U), (R)); })
2284
2285
2286#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
2287 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
2288 (__v16sf) (B), (__v16sf) (C), \
2289 (__mmask16) -1, (R)); })
2290
2291
2292#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
2293 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
2294 (__v16sf) (B), (__v16sf) (C), \
2295 (__mmask16) (U), (R)); })
2296
2297
2298#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
2299 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
2300 (__v16sf) (B), (__v16sf) (C), \
2301 (__mmask16) (U), (R)); })
2302
2303
2304#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
2305 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
2306 (__v16sf) (B), -(__v16sf) (C), \
2307 (__mmask16) -1, (R)); })
2308
2309
2310#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
2311 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
2312 (__v16sf) (B), -(__v16sf) (C), \
2313 (__mmask16) (U), (R)); })
2314
2315
Michael Kupersteine45af542015-06-30 13:36:19 +00002316static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002317_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2318{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002319 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2320 (__v16sf) __B,
2321 (__v16sf) __C,
2322 (__mmask16) -1,
2323 _MM_FROUND_CUR_DIRECTION);
2324}
2325
Michael Kupersteine45af542015-06-30 13:36:19 +00002326static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002327_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2328{
2329 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2330 (__v16sf) __B,
2331 (__v16sf) __C,
2332 (__mmask16) __U,
2333 _MM_FROUND_CUR_DIRECTION);
2334}
2335
Michael Kupersteine45af542015-06-30 13:36:19 +00002336static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002337_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2338{
2339 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2340 (__v16sf) __B,
2341 (__v16sf) __C,
2342 (__mmask16) __U,
2343 _MM_FROUND_CUR_DIRECTION);
2344}
2345
Michael Kupersteine45af542015-06-30 13:36:19 +00002346static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002347_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2348{
2349 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2350 (__v16sf) __B,
2351 (__v16sf) __C,
2352 (__mmask16) __U,
2353 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002354}
2355
Michael Kupersteine45af542015-06-30 13:36:19 +00002356static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002357_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2358{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002359 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2360 (__v16sf) __B,
2361 -(__v16sf) __C,
2362 (__mmask16) -1,
2363 _MM_FROUND_CUR_DIRECTION);
2364}
2365
Michael Kupersteine45af542015-06-30 13:36:19 +00002366static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002367_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2368{
2369 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2370 (__v16sf) __B,
2371 -(__v16sf) __C,
2372 (__mmask16) __U,
2373 _MM_FROUND_CUR_DIRECTION);
2374}
2375
Michael Kupersteine45af542015-06-30 13:36:19 +00002376static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002377_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2378{
2379 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2380 (__v16sf) __B,
2381 -(__v16sf) __C,
2382 (__mmask16) __U,
2383 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002384}
2385
Michael Kupersteine45af542015-06-30 13:36:19 +00002386static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002387_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2388{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002389 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2390 (__v16sf) __B,
2391 (__v16sf) __C,
2392 (__mmask16) -1,
2393 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002394}
2395
Michael Kupersteine45af542015-06-30 13:36:19 +00002396static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002397_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2398{
2399 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2400 (__v16sf) __B,
2401 (__v16sf) __C,
2402 (__mmask16) __U,
2403 _MM_FROUND_CUR_DIRECTION);
2404}
2405
Michael Kupersteine45af542015-06-30 13:36:19 +00002406static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002407_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2408{
2409 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2410 (__v16sf) __B,
2411 (__v16sf) __C,
2412 (__mmask16) __U,
2413 _MM_FROUND_CUR_DIRECTION);
2414}
2415
Michael Kupersteine45af542015-06-30 13:36:19 +00002416static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002417_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2418{
2419 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2420 (__v16sf) __B,
2421 -(__v16sf) __C,
2422 (__mmask16) -1,
2423 _MM_FROUND_CUR_DIRECTION);
2424}
2425
Michael Kupersteine45af542015-06-30 13:36:19 +00002426static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002427_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2428{
2429 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2430 (__v16sf) __B,
2431 -(__v16sf) __C,
2432 (__mmask16) __U,
2433 _MM_FROUND_CUR_DIRECTION);
2434}
2435
2436#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
2437 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2438 (__v8df) (B), (__v8df) (C), \
2439 (__mmask8) -1, (R)); })
2440
2441
2442#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
2443 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2444 (__v8df) (B), (__v8df) (C), \
2445 (__mmask8) (U), (R)); })
2446
2447
2448#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
2449 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
2450 (__v8df) (B), (__v8df) (C), \
2451 (__mmask8) (U), (R)); })
2452
2453
2454#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
2455 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2456 (__v8df) (B), (__v8df) (C), \
2457 (__mmask8) (U), (R)); })
2458
2459
2460#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
2461 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2462 (__v8df) (B), -(__v8df) (C), \
2463 (__mmask8) -1, (R)); })
2464
2465
2466#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
2467 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2468 (__v8df) (B), -(__v8df) (C), \
2469 (__mmask8) (U), (R)); })
2470
2471
2472#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
2473 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2474 (__v8df) (B), -(__v8df) (C), \
2475 (__mmask8) (U), (R)); })
2476
2477
Michael Kupersteine45af542015-06-30 13:36:19 +00002478static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002479_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2480{
2481 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2482 (__v8df) __B,
2483 (__v8df) __C,
2484 (__mmask8) -1,
2485 _MM_FROUND_CUR_DIRECTION);
2486}
2487
Michael Kupersteine45af542015-06-30 13:36:19 +00002488static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002489_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2490{
2491 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2492 (__v8df) __B,
2493 (__v8df) __C,
2494 (__mmask8) __U,
2495 _MM_FROUND_CUR_DIRECTION);
2496}
2497
Michael Kupersteine45af542015-06-30 13:36:19 +00002498static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002499_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2500{
2501 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2502 (__v8df) __B,
2503 (__v8df) __C,
2504 (__mmask8) __U,
2505 _MM_FROUND_CUR_DIRECTION);
2506}
2507
Michael Kupersteine45af542015-06-30 13:36:19 +00002508static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002509_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2510{
2511 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2512 (__v8df) __B,
2513 (__v8df) __C,
2514 (__mmask8) __U,
2515 _MM_FROUND_CUR_DIRECTION);
2516}
2517
Michael Kupersteine45af542015-06-30 13:36:19 +00002518static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002519_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2520{
2521 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2522 (__v8df) __B,
2523 -(__v8df) __C,
2524 (__mmask8) -1,
2525 _MM_FROUND_CUR_DIRECTION);
2526}
2527
Michael Kupersteine45af542015-06-30 13:36:19 +00002528static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002529_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2530{
2531 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2532 (__v8df) __B,
2533 -(__v8df) __C,
2534 (__mmask8) __U,
2535 _MM_FROUND_CUR_DIRECTION);
2536}
2537
Michael Kupersteine45af542015-06-30 13:36:19 +00002538static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002539_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2540{
2541 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2542 (__v8df) __B,
2543 -(__v8df) __C,
2544 (__mmask8) __U,
2545 _MM_FROUND_CUR_DIRECTION);
2546}
2547
2548#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2549 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2550 (__v16sf) (B), (__v16sf) (C), \
2551 (__mmask16) -1, (R)); })
2552
2553
2554#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2555 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2556 (__v16sf) (B), (__v16sf) (C), \
2557 (__mmask16) (U), (R)); })
2558
2559
2560#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2561 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2562 (__v16sf) (B), (__v16sf) (C), \
2563 (__mmask16) (U), (R)); })
2564
2565
2566#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2567 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2568 (__v16sf) (B), (__v16sf) (C), \
2569 (__mmask16) (U), (R)); })
2570
2571
2572#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2573 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2574 (__v16sf) (B), -(__v16sf) (C), \
2575 (__mmask16) -1, (R)); })
2576
2577
2578#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2579 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2580 (__v16sf) (B), -(__v16sf) (C), \
2581 (__mmask16) (U), (R)); })
2582
2583
2584#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2585 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2586 (__v16sf) (B), -(__v16sf) (C), \
2587 (__mmask16) (U), (R)); })
2588
2589
Michael Kupersteine45af542015-06-30 13:36:19 +00002590static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002591_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2592{
2593 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2594 (__v16sf) __B,
2595 (__v16sf) __C,
2596 (__mmask16) -1,
2597 _MM_FROUND_CUR_DIRECTION);
2598}
2599
Michael Kupersteine45af542015-06-30 13:36:19 +00002600static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002601_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2602{
2603 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2604 (__v16sf) __B,
2605 (__v16sf) __C,
2606 (__mmask16) __U,
2607 _MM_FROUND_CUR_DIRECTION);
2608}
2609
Michael Kupersteine45af542015-06-30 13:36:19 +00002610static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002611_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2612{
2613 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2614 (__v16sf) __B,
2615 (__v16sf) __C,
2616 (__mmask16) __U,
2617 _MM_FROUND_CUR_DIRECTION);
2618}
2619
Michael Kupersteine45af542015-06-30 13:36:19 +00002620static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002621_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2622{
2623 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2624 (__v16sf) __B,
2625 (__v16sf) __C,
2626 (__mmask16) __U,
2627 _MM_FROUND_CUR_DIRECTION);
2628}
2629
Michael Kupersteine45af542015-06-30 13:36:19 +00002630static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002631_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2632{
2633 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2634 (__v16sf) __B,
2635 -(__v16sf) __C,
2636 (__mmask16) -1,
2637 _MM_FROUND_CUR_DIRECTION);
2638}
2639
Michael Kupersteine45af542015-06-30 13:36:19 +00002640static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002641_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2642{
2643 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2644 (__v16sf) __B,
2645 -(__v16sf) __C,
2646 (__mmask16) __U,
2647 _MM_FROUND_CUR_DIRECTION);
2648}
2649
Michael Kupersteine45af542015-06-30 13:36:19 +00002650static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002651_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2652{
2653 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2654 (__v16sf) __B,
2655 -(__v16sf) __C,
2656 (__mmask16) __U,
2657 _MM_FROUND_CUR_DIRECTION);
2658}
2659
2660#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2661 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2662 (__v8df) (B), (__v8df) (C), \
2663 (__mmask8) (U), (R)); })
2664
2665
Michael Kupersteine45af542015-06-30 13:36:19 +00002666static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002667_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2668{
2669 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2670 (__v8df) __B,
2671 (__v8df) __C,
2672 (__mmask8) __U,
2673 _MM_FROUND_CUR_DIRECTION);
2674}
2675
2676#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2677 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2678 (__v16sf) (B), (__v16sf) (C), \
2679 (__mmask16) (U), (R)); })
2680
2681
Michael Kupersteine45af542015-06-30 13:36:19 +00002682static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002683_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2684{
2685 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2686 (__v16sf) __B,
2687 (__v16sf) __C,
2688 (__mmask16) __U,
2689 _MM_FROUND_CUR_DIRECTION);
2690}
2691
2692#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2693 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2694 (__v8df) (B), (__v8df) (C), \
2695 (__mmask8) (U), (R)); })
2696
2697
Michael Kupersteine45af542015-06-30 13:36:19 +00002698static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002699_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2700{
2701 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2702 (__v8df) __B,
2703 (__v8df) __C,
2704 (__mmask8) __U,
2705 _MM_FROUND_CUR_DIRECTION);
2706}
2707
2708#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2709 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2710 (__v16sf) (B), (__v16sf) (C), \
2711 (__mmask16) (U), (R)); })
2712
2713
Michael Kupersteine45af542015-06-30 13:36:19 +00002714static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002715_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2716{
2717 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2718 (__v16sf) __B,
2719 (__v16sf) __C,
2720 (__mmask16) __U,
2721 _MM_FROUND_CUR_DIRECTION);
2722}
2723
2724#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2725 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2726 (__v8df) (B), (__v8df) (C), \
2727 (__mmask8) (U), (R)); })
2728
2729
Michael Kupersteine45af542015-06-30 13:36:19 +00002730static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002731_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2732{
2733 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2734 (__v8df) __B,
2735 (__v8df) __C,
2736 (__mmask8) __U,
2737 _MM_FROUND_CUR_DIRECTION);
2738}
2739
2740#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2741 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2742 (__v16sf) (B), (__v16sf) (C), \
2743 (__mmask16) (U), (R)); })
2744
2745
Michael Kupersteine45af542015-06-30 13:36:19 +00002746static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002747_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2748{
2749 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2750 (__v16sf) __B,
2751 (__v16sf) __C,
2752 (__mmask16) __U,
2753 _MM_FROUND_CUR_DIRECTION);
2754}
2755
2756#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2757 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2758 (__v8df) (B), (__v8df) (C), \
2759 (__mmask8) (U), (R)); })
2760
2761
2762#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2763 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2764 (__v8df) (B), (__v8df) (C), \
2765 (__mmask8) (U), (R)); })
2766
2767
Michael Kupersteine45af542015-06-30 13:36:19 +00002768static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002769_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2770{
2771 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2772 (__v8df) __B,
2773 (__v8df) __C,
2774 (__mmask8) __U,
2775 _MM_FROUND_CUR_DIRECTION);
2776}
2777
Michael Kupersteine45af542015-06-30 13:36:19 +00002778static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002779_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2780{
2781 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2782 (__v8df) __B,
2783 (__v8df) __C,
2784 (__mmask8) __U,
2785 _MM_FROUND_CUR_DIRECTION);
2786}
2787
2788#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2789 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2790 (__v16sf) (B), (__v16sf) (C), \
2791 (__mmask16) (U), (R)); })
2792
2793
2794#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2795 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2796 (__v16sf) (B), (__v16sf) (C), \
2797 (__mmask16) (U), (R)); })
2798
2799
Michael Kupersteine45af542015-06-30 13:36:19 +00002800static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002801_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2802{
2803 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2804 (__v16sf) __B,
2805 (__v16sf) __C,
2806 (__mmask16) __U,
2807 _MM_FROUND_CUR_DIRECTION);
2808}
2809
Michael Kupersteine45af542015-06-30 13:36:19 +00002810static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002811_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2812{
2813 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2814 (__v16sf) __B,
2815 (__v16sf) __C,
2816 (__mmask16) __U,
2817 _MM_FROUND_CUR_DIRECTION);
2818}
2819
2820
2821
Adam Nemet0d5bb552014-07-28 17:14:40 +00002822/* Vector permutations */
2823
Michael Kupersteine45af542015-06-30 13:36:19 +00002824static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002825_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2826{
2827 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2828 /* idx */ ,
2829 (__v16si) __A,
2830 (__v16si) __B,
2831 (__mmask16) -1);
2832}
Michael Kupersteine45af542015-06-30 13:36:19 +00002833static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002834_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2835{
2836 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2837 /* idx */ ,
2838 (__v8di) __A,
2839 (__v8di) __B,
2840 (__mmask8) -1);
2841}
2842
Michael Kupersteine45af542015-06-30 13:36:19 +00002843static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002844_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2845{
2846 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2847 /* idx */ ,
2848 (__v8df) __A,
2849 (__v8df) __B,
2850 (__mmask8) -1);
2851}
Michael Kupersteine45af542015-06-30 13:36:19 +00002852static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002853_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2854{
2855 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2856 /* idx */ ,
2857 (__v16sf) __A,
2858 (__v16sf) __B,
2859 (__mmask16) -1);
2860}
2861
Craig Topper67826a52015-02-01 07:35:40 +00002862#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2863 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2864 (__v8di)(__m512i)(B), \
2865 (I), (__v8di)_mm512_setzero_si512(), \
2866 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002867
Michael Zuckerman533e0652016-04-28 12:47:30 +00002868#define _mm512_mask_alignr_epi64( __W, __U, __A, __B, __imm) __extension__({\
2869 (__m512i)__builtin_ia32_alignq512_mask ((__v8di) __A,\
2870 (__v8di) __B, __imm,\
2871 (__v8di) __W,\
2872 (__mmask8) __U);\
2873})
2874
2875#define _mm512_maskz_alignr_epi64( __U, __A, __B, __imm) __extension__({\
2876 (__m512i)__builtin_ia32_alignq512_mask ((__v8di) __A,\
2877 (__v8di) __B, __imm,\
2878 (__v8di) _mm512_setzero_si512 (),\
2879 (__mmask8) __U);\
2880})
2881
Craig Topper67826a52015-02-01 07:35:40 +00002882#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Michael Zuckerman533e0652016-04-28 12:47:30 +00002883 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
Craig Topper67826a52015-02-01 07:35:40 +00002884 (__v16si)(__m512i)(B), \
2885 (I), (__v16si)_mm512_setzero_si512(), \
Michael Zuckerman533e0652016-04-28 12:47:30 +00002886 (__mmask16)-1);\
2887})
2888
2889#define _mm512_mask_alignr_epi32( __W, __U, __A, __B, __imm) __extension__ ({\
2890 (__m512i) __builtin_ia32_alignd512_mask((__v16si) __A,\
2891 (__v16si) __B, __imm,\
2892 (__v16si) __W,\
2893 (__mmask16) __U);\
2894})
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002895
Michael Zuckerman533e0652016-04-28 12:47:30 +00002896#define _mm512_maskz_alignr_epi32( __U, __A, __B, __imm) __extension__({\
2897 (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,\
2898 (__v16si) __B, __imm,\
2899 (__v16si) _mm512_setzero_si512 (),\
2900 (__mmask16) __U);\
2901})
Adam Nemetf893ede2015-01-19 20:12:05 +00002902/* Vector Extract */
2903
2904#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002905 (__m256d) __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002906 (I), \
2907 (__v4df)_mm256_setzero_si256(), \
2908 (__mmask8) -1); })
2909
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002910#define _mm512_mask_extractf64x4_pd( __W, __U, __A, __imm) __extension__ ({\
2911 (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, \
2912 __imm,\
2913 (__v4df) __W,\
2914 (__mmask8) __U);\
2915})
2916
2917#define _mm512_maskz_extractf64x4_pd( __U, __A, __imm) __extension__ ({\
2918 (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,\
2919 __imm,\
2920 (__v4df)\
2921 _mm256_setzero_pd (),\
2922 (__mmask8) __U);\
2923})
2924
Adam Nemetf893ede2015-01-19 20:12:05 +00002925#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002926 (__m128) __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002927 (I), \
2928 (__v4sf)_mm_setzero_ps(), \
2929 (__mmask8) -1); })
2930
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002931#define _mm512_mask_extractf32x4_ps( __W, __U, __A, __imm) __extension__ ({\
2932 (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,\
2933 __imm,\
2934 (__v4sf) __W,\
2935 (__mmask8) __U);\
2936})
2937
2938#define _mm512_maskz_extractf32x4_ps( __U, __A, __imm) __extension__ ({\
2939 (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,\
2940 __imm,\
2941 (__v4sf)\
2942 _mm_setzero_ps (),\
2943 (__mmask8) __U);\
2944})
Adam Nemet0d5bb552014-07-28 17:14:40 +00002945/* Vector Blend */
2946
Michael Kupersteine45af542015-06-30 13:36:19 +00002947static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002948_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2949{
2950 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2951 (__v8df) __W,
2952 (__mmask8) __U);
2953}
2954
Michael Kupersteine45af542015-06-30 13:36:19 +00002955static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002956_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2957{
2958 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2959 (__v16sf) __W,
2960 (__mmask16) __U);
2961}
2962
Michael Kupersteine45af542015-06-30 13:36:19 +00002963static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002964_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2965{
2966 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2967 (__v8di) __W,
2968 (__mmask8) __U);
2969}
2970
Michael Kupersteine45af542015-06-30 13:36:19 +00002971static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002972_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2973{
2974 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2975 (__v16si) __W,
2976 (__mmask16) __U);
2977}
2978
2979/* Compare */
2980
Craig Topper53565c62015-02-01 22:27:40 +00002981#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2982 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2983 (__v16sf)(__m512)(B), \
2984 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002985
Craig Topper53565c62015-02-01 22:27:40 +00002986#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2987 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2988 (__v16sf)(__m512)(B), \
2989 (P), (__mmask16)(U), (R)); })
2990
2991#define _mm512_cmp_ps_mask(A, B, P) \
2992 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2993
2994#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2995 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2996
2997#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2998 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2999 (__v8df)(__m512d)(B), \
3000 (P), (__mmask8)-1, (R)); })
3001
3002#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3003 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
3004 (__v8df)(__m512d)(B), \
3005 (P), (__mmask8)(U), (R)); })
3006
3007#define _mm512_cmp_pd_mask(A, B, P) \
3008 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3009
3010#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3011 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003012
3013/* Conversion */
3014
Michael Kupersteine45af542015-06-30 13:36:19 +00003015static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003016_mm512_cvttps_epu32(__m512 __A)
3017{
3018 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3019 (__v16si)
3020 _mm512_setzero_si512 (),
3021 (__mmask16) -1,
3022 _MM_FROUND_CUR_DIRECTION);
3023}
3024
Michael Zuckermanf1544752016-05-09 10:32:51 +00003025static __inline__ __m512i __DEFAULT_FN_ATTRS
3026_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3027{
3028 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3029 (__v16si) __W,
3030 (__mmask16) __U,
3031 _MM_FROUND_CUR_DIRECTION);
3032}
3033
3034static __inline__ __m512i __DEFAULT_FN_ATTRS
3035_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3036{
3037 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3038 (__v16si) _mm512_setzero_si512 (),
3039 (__mmask16) __U,
3040 _MM_FROUND_CUR_DIRECTION);
3041}
3042
Craig Topper72c7d512015-02-01 07:35:35 +00003043#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
3044 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
3045 (__v16sf)_mm512_setzero_ps(), \
3046 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003047
Craig Topper72c7d512015-02-01 07:35:35 +00003048#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
3049 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
3050 (__v16sf)_mm512_setzero_ps(), \
3051 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003052
Michael Zuckermanf1544752016-05-09 10:32:51 +00003053static __inline__ __m512 __DEFAULT_FN_ATTRS
3054_mm512_cvtepu32_ps (__m512i __A)
3055{
3056 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3057 (__v16sf) _mm512_undefined_ps (),
3058 (__mmask16) -1,
3059 _MM_FROUND_CUR_DIRECTION);
3060}
3061
3062static __inline__ __m512 __DEFAULT_FN_ATTRS
3063_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3064{
3065 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3066 (__v16sf) __W,
3067 (__mmask16) __U,
3068 _MM_FROUND_CUR_DIRECTION);
3069}
3070
3071static __inline__ __m512 __DEFAULT_FN_ATTRS
3072_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3073{
3074 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3075 (__v16sf) _mm512_setzero_ps (),
3076 (__mmask16) __U,
3077 _MM_FROUND_CUR_DIRECTION);
3078}
3079
Michael Kupersteine45af542015-06-30 13:36:19 +00003080static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003081_mm512_cvtepi32_pd(__m256i __A)
3082{
3083 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003084 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003085 _mm512_setzero_pd (),
3086 (__mmask8) -1);
3087}
3088
Michael Zuckermanf1544752016-05-09 10:32:51 +00003089static __inline__ __m512d __DEFAULT_FN_ATTRS
3090_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3091{
3092 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3093 (__v8df) __W,
3094 (__mmask8) __U);
3095}
3096
3097static __inline__ __m512d __DEFAULT_FN_ATTRS
3098_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3099{
3100 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3101 (__v8df) _mm512_setzero_pd (),
3102 (__mmask8) __U);
3103}
3104
3105static __inline__ __m512 __DEFAULT_FN_ATTRS
3106_mm512_cvtepi32_ps (__m512i __A)
3107{
3108 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3109 (__v16sf) _mm512_undefined_ps (),
3110 (__mmask16) -1,
3111 _MM_FROUND_CUR_DIRECTION);
3112}
3113
3114static __inline__ __m512 __DEFAULT_FN_ATTRS
3115_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3116{
3117 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3118 (__v16sf) __W,
3119 (__mmask16) __U,
3120 _MM_FROUND_CUR_DIRECTION);
3121}
3122
3123static __inline__ __m512 __DEFAULT_FN_ATTRS
3124_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3125{
3126 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3127 (__v16sf) _mm512_setzero_ps (),
3128 (__mmask16) __U,
3129 _MM_FROUND_CUR_DIRECTION);
3130}
3131
Michael Kupersteine45af542015-06-30 13:36:19 +00003132static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003133_mm512_cvtepu32_pd(__m256i __A)
3134{
3135 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3136 (__v8df)
3137 _mm512_setzero_pd (),
3138 (__mmask8) -1);
3139}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003140
Michael Zuckermanf1544752016-05-09 10:32:51 +00003141static __inline__ __m512d __DEFAULT_FN_ATTRS
3142_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3143{
3144 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3145 (__v8df) __W,
3146 (__mmask8) __U);
3147}
3148
3149static __inline__ __m512d __DEFAULT_FN_ATTRS
3150_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3151{
3152 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3153 (__v8df) _mm512_setzero_pd (),
3154 (__mmask8) __U);
3155}
3156
Craig Topper72c7d512015-02-01 07:35:35 +00003157#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
3158 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
3159 (__v8sf)_mm256_setzero_ps(), \
3160 (__mmask8)-1, (R)); })
3161
Michael Zuckermanf1544752016-05-09 10:32:51 +00003162static __inline__ __m256 __DEFAULT_FN_ATTRS
3163_mm512_cvtpd_ps (__m512d __A)
3164{
3165 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3166 (__v8sf) _mm256_undefined_ps (),
3167 (__mmask8) -1,
3168 _MM_FROUND_CUR_DIRECTION);
3169}
3170
3171static __inline__ __m256 __DEFAULT_FN_ATTRS
3172_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3173{
3174 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3175 (__v8sf) __W,
3176 (__mmask8) __U,
3177 _MM_FROUND_CUR_DIRECTION);
3178}
3179
3180static __inline__ __m256 __DEFAULT_FN_ATTRS
3181_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3182{
3183 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3184 (__v8sf) _mm256_setzero_ps (),
3185 (__mmask8) __U,
3186 _MM_FROUND_CUR_DIRECTION);
3187}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003188
Craig Topper72c7d512015-02-01 07:35:35 +00003189#define _mm512_cvtps_ph(A, I) __extension__ ({ \
3190 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
3191 (__v16hi)_mm256_setzero_si256(), \
3192 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003193
Michael Zuckermanf1544752016-05-09 10:32:51 +00003194#define _mm512_mask_cvtps_ph(__U, __W, __A, __I) __extension__ ({ \
3195 (__m256i) __builtin_ia32_vcvtps2ph512_mask((__v16sf) __A,\
3196 __I,\
3197 (__v16hi) __U,\
3198 (__mmask16) __W);\
3199})
3200
3201#define _mm512_maskz_cvtps_ph( __W, __A, __I) __extension__ ({\
3202 (__m256i) __builtin_ia32_vcvtps2ph512_mask((__v16sf) __A,\
3203 __I,\
3204 (__v16hi)\
3205 _mm256_setzero_si256 (),\
3206 (__mmask16) __W);\
3207})
3208
3209
Michael Kupersteine45af542015-06-30 13:36:19 +00003210static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003211_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003212{
3213 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003214 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003215 _mm512_setzero_ps (),
3216 (__mmask16) -1,
3217 _MM_FROUND_CUR_DIRECTION);
3218}
3219
Michael Zuckermanf1544752016-05-09 10:32:51 +00003220static __inline__ __m512 __DEFAULT_FN_ATTRS
3221_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003222{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003223 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3224 (__v16sf) __W,
3225 (__mmask16) __U,
3226 _MM_FROUND_CUR_DIRECTION);
3227}
3228
3229static __inline__ __m512 __DEFAULT_FN_ATTRS
3230_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3231{
3232 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3233 (__v16sf) _mm512_setzero_ps (),
3234 (__mmask16) __U,
3235 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003236}
3237
Michael Kupersteine45af542015-06-30 13:36:19 +00003238static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003239_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003240{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003241 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003242 (__v8si)_mm256_setzero_si256(),
3243 (__mmask8) -1,
3244 _MM_FROUND_CUR_DIRECTION);
3245}
3246
Michael Zuckermanf1544752016-05-09 10:32:51 +00003247static __inline__ __m256i __DEFAULT_FN_ATTRS
3248_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3249{
3250 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3251 (__v8si) __W,
3252 (__mmask8) __U,
3253 _MM_FROUND_CUR_DIRECTION);
3254}
3255
3256static __inline__ __m256i __DEFAULT_FN_ATTRS
3257_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3258{
3259 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3260 (__v8si) _mm256_setzero_si256 (),
3261 (__mmask8) __U,
3262 _MM_FROUND_CUR_DIRECTION);
3263}
3264
Craig Topper72c7d512015-02-01 07:35:35 +00003265#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3266 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
3267 (__v8si)_mm256_setzero_si256(), \
3268 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003269
Craig Topper72c7d512015-02-01 07:35:35 +00003270#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
3271 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
3272 (__v16si)_mm512_setzero_si512(), \
3273 (__mmask16)-1, (R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003274
Michael Zuckermanf1544752016-05-09 10:32:51 +00003275static __inline __m512i __DEFAULT_FN_ATTRS
3276_mm512_cvttps_epi32(__m512 __a)
3277{
3278 return (__m512i)
3279 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3280 (__v16si) _mm512_setzero_si512 (),
3281 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3282}
3283
3284static __inline__ __m512i __DEFAULT_FN_ATTRS
3285_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3286{
3287 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3288 (__v16si) __W,
3289 (__mmask16) __U,
3290 _MM_FROUND_CUR_DIRECTION);
3291}
3292
3293static __inline__ __m512i __DEFAULT_FN_ATTRS
3294_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3295{
3296 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3297 (__v16si) _mm512_setzero_si512 (),
3298 (__mmask16) __U,
3299 _MM_FROUND_CUR_DIRECTION);
3300}
Craig Topper72c7d512015-02-01 07:35:35 +00003301
3302#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
3303 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
3304 (__v16si)_mm512_setzero_si512(), \
3305 (__mmask16)-1, (R)); })
3306
Michael Zuckermanf1544752016-05-09 10:32:51 +00003307static __inline__ __m512i __DEFAULT_FN_ATTRS
3308_mm512_cvtps_epi32 (__m512 __A)
3309{
3310 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3311 (__v16si) _mm512_undefined_epi32 (),
3312 (__mmask16) -1,
3313 _MM_FROUND_CUR_DIRECTION);
3314}
3315
3316static __inline__ __m512i __DEFAULT_FN_ATTRS
3317_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3318{
3319 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3320 (__v16si) __W,
3321 (__mmask16) __U,
3322 _MM_FROUND_CUR_DIRECTION);
3323}
3324
3325static __inline__ __m512i __DEFAULT_FN_ATTRS
3326_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3327{
3328 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3329 (__v16si)
3330 _mm512_setzero_si512 (),
3331 (__mmask16) __U,
3332 _MM_FROUND_CUR_DIRECTION);
3333}
3334
Craig Topper72c7d512015-02-01 07:35:35 +00003335#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
3336 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
3337 (__v8si)_mm256_setzero_si256(), \
3338 (__mmask8)-1, (R)); })
3339
Michael Zuckermanf1544752016-05-09 10:32:51 +00003340static __inline__ __m256i __DEFAULT_FN_ATTRS
3341_mm512_cvtpd_epi32 (__m512d __A)
3342{
3343 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3344 (__v8si)
3345 _mm256_undefined_si256 (),
3346 (__mmask8) -1,
3347 _MM_FROUND_CUR_DIRECTION);
3348}
3349
3350static __inline__ __m256i __DEFAULT_FN_ATTRS
3351_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3352{
3353 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3354 (__v8si) __W,
3355 (__mmask8) __U,
3356 _MM_FROUND_CUR_DIRECTION);
3357}
3358
3359static __inline__ __m256i __DEFAULT_FN_ATTRS
3360_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3361{
3362 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3363 (__v8si)
3364 _mm256_setzero_si256 (),
3365 (__mmask8) __U,
3366 _MM_FROUND_CUR_DIRECTION);
3367}
3368
Craig Topper72c7d512015-02-01 07:35:35 +00003369#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
3370 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
3371 (__v16si)_mm512_setzero_si512(), \
3372 (__mmask16)-1, (R)); })
3373
Michael Zuckermanf1544752016-05-09 10:32:51 +00003374static __inline__ __m512i __DEFAULT_FN_ATTRS
3375_mm512_cvtps_epu32 ( __m512 __A)
3376{
3377 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3378 (__v16si)\
3379 _mm512_undefined_epi32 (),\
3380 (__mmask16) -1,\
3381 _MM_FROUND_CUR_DIRECTION);\
3382}
3383
3384static __inline__ __m512i __DEFAULT_FN_ATTRS
3385_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3386{
3387 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3388 (__v16si) __W,
3389 (__mmask16) __U,
3390 _MM_FROUND_CUR_DIRECTION);
3391}
3392
Craig Topper72c7d512015-02-01 07:35:35 +00003393#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
3394 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
3395 (__v8si)_mm256_setzero_si256(), \
3396 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003397
Michael Zuckermanf1544752016-05-09 10:32:51 +00003398static __inline__ __m256i __DEFAULT_FN_ATTRS
3399_mm512_cvtpd_epu32 (__m512d __A)
3400{
3401 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3402 (__v8si)
3403 _mm256_undefined_si256 (),
3404 (__mmask8) -1,
3405 _MM_FROUND_CUR_DIRECTION);
3406}
3407
3408static __inline__ __m256i __DEFAULT_FN_ATTRS
3409_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3410{
3411 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3412 (__v8si) __W,
3413 (__mmask8) __U,
3414 _MM_FROUND_CUR_DIRECTION);
3415}
3416
3417static __inline__ __m256i __DEFAULT_FN_ATTRS
3418_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3419{
3420 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3421 (__v8si)
3422 _mm256_setzero_si256 (),
3423 (__mmask8) __U,
3424 _MM_FROUND_CUR_DIRECTION);
3425}
Adam Nemet63a951e2015-01-14 01:31:17 +00003426/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003427static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003428_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3429{
3430 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3431}
3432
Michael Kupersteine45af542015-06-30 13:36:19 +00003433static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003434_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3435{
3436 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3437}
3438
Michael Kupersteine45af542015-06-30 13:36:19 +00003439static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003440_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3441{
3442 return __builtin_shufflevector(__a, __b,
3443 2, 18, 3, 19,
3444 2+4, 18+4, 3+4, 19+4,
3445 2+8, 18+8, 3+8, 19+8,
3446 2+12, 18+12, 3+12, 19+12);
3447}
3448
Michael Kupersteine45af542015-06-30 13:36:19 +00003449static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003450_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3451{
3452 return __builtin_shufflevector(__a, __b,
3453 0, 16, 1, 17,
3454 0+4, 16+4, 1+4, 17+4,
3455 0+8, 16+8, 1+8, 17+8,
3456 0+12, 16+12, 1+12, 17+12);
3457}
3458
Adam Nemet0d5bb552014-07-28 17:14:40 +00003459/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003460
Michael Kupersteine45af542015-06-30 13:36:19 +00003461static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003462_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003463{
3464 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3465 (__v16si) __B,
3466 (__mmask16) -1);
3467}
3468
Michael Kupersteine45af542015-06-30 13:36:19 +00003469static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003470_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003471{
3472 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3473 (__v8di) __B,
3474 (__mmask8) -1);
3475}
3476
Adam Nemet0d5bb552014-07-28 17:14:40 +00003477/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003478
Michael Kupersteine45af542015-06-30 13:36:19 +00003479static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003480_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003481{
3482 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
3483 (__v16si)
3484 _mm512_setzero_si512 (),
3485 (__mmask16) __U);
3486}
3487
Michael Kupersteine45af542015-06-30 13:36:19 +00003488static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003489_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003490{
3491 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
3492 (__v8di)
3493 _mm512_setzero_si512 (),
3494 (__mmask8) __U);
3495}
3496
Michael Kupersteine45af542015-06-30 13:36:19 +00003497static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003498_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003499{
3500 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
3501 (__v16sf)
3502 _mm512_setzero_ps (),
3503 (__mmask16) __U);
3504}
3505
Michael Kupersteine45af542015-06-30 13:36:19 +00003506static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003507_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003508{
3509 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
3510 (__v8df)
3511 _mm512_setzero_pd (),
3512 (__mmask8) __U);
3513}
3514
Michael Kupersteine45af542015-06-30 13:36:19 +00003515static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003516_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
3517{
3518 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
3519 (__v16sf)
3520 _mm512_setzero_ps (),
3521 (__mmask16) __U);
3522}
3523
Michael Kupersteine45af542015-06-30 13:36:19 +00003524static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003525_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
3526{
3527 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
3528 (__v8df)
3529 _mm512_setzero_pd (),
3530 (__mmask8) __U);
3531}
3532
Michael Kupersteine45af542015-06-30 13:36:19 +00003533static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003534_mm512_loadu_pd(double const *__p)
3535{
3536 struct __loadu_pd {
3537 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003538 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003539 return ((struct __loadu_pd*)__p)->__v;
3540}
3541
Michael Kupersteine45af542015-06-30 13:36:19 +00003542static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003543_mm512_loadu_ps(float const *__p)
3544{
3545 struct __loadu_ps {
3546 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003547 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003548 return ((struct __loadu_ps*)__p)->__v;
3549}
3550
Michael Kupersteine45af542015-06-30 13:36:19 +00003551static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003552_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003553{
3554 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3555 (__v16sf)
3556 _mm512_setzero_ps (),
3557 (__mmask16) -1);
3558}
3559
Michael Kupersteine45af542015-06-30 13:36:19 +00003560static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003561_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003562{
3563 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
3564 (__v8df)
3565 _mm512_setzero_pd (),
3566 (__mmask8) -1);
3567}
3568
Adam Nemet0d5bb552014-07-28 17:14:40 +00003569/* SIMD store ops */
3570
Michael Kupersteine45af542015-06-30 13:36:19 +00003571static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003572_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003573{
3574 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
3575 (__mmask8) __U);
3576}
3577
Michael Kupersteine45af542015-06-30 13:36:19 +00003578static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003579_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003580{
3581 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
3582 (__mmask16) __U);
3583}
3584
Michael Kupersteine45af542015-06-30 13:36:19 +00003585static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003586_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003587{
3588 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
3589}
3590
Michael Kupersteine45af542015-06-30 13:36:19 +00003591static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003592_mm512_storeu_pd(void *__P, __m512d __A)
3593{
3594 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
3595}
3596
Michael Kupersteine45af542015-06-30 13:36:19 +00003597static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003598_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003599{
3600 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
3601 (__mmask16) __U);
3602}
3603
Michael Kupersteine45af542015-06-30 13:36:19 +00003604static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003605_mm512_storeu_ps(void *__P, __m512 __A)
3606{
3607 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
3608}
3609
Michael Kupersteine45af542015-06-30 13:36:19 +00003610static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003611_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00003612{
Adam Nemetc0cff242015-01-16 18:51:50 +00003613 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00003614}
3615
Michael Kupersteine45af542015-06-30 13:36:19 +00003616static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003617_mm512_store_pd(void *__P, __m512d __A)
3618{
3619 *(__m512d*)__P = __A;
3620}
3621
Michael Kupersteine45af542015-06-30 13:36:19 +00003622static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003623_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
3624{
3625 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
3626 (__mmask16) __U);
3627}
3628
Michael Kupersteine45af542015-06-30 13:36:19 +00003629static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003630_mm512_store_ps(void *__P, __m512 __A)
3631{
3632 *(__m512*)__P = __A;
3633}
3634
Adam Nemet2db1d2f2014-07-30 16:51:27 +00003635/* Mask ops */
3636
Michael Kupersteine45af542015-06-30 13:36:19 +00003637static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00003638_mm512_knot(__mmask16 __M)
3639{
3640 return __builtin_ia32_knothi(__M);
3641}
3642
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003643/* Integer compare */
3644
Michael Kupersteine45af542015-06-30 13:36:19 +00003645static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003646_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
3647 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
3648 (__mmask16)-1);
3649}
3650
Michael Kupersteine45af542015-06-30 13:36:19 +00003651static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003652_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3653 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
3654 __u);
3655}
3656
Michael Kupersteine45af542015-06-30 13:36:19 +00003657static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003658_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
3659 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
3660 (__mmask16)-1);
3661}
3662
Michael Kupersteine45af542015-06-30 13:36:19 +00003663static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003664_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3665 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
3666 __u);
3667}
3668
Michael Kupersteine45af542015-06-30 13:36:19 +00003669static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003670_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3671 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3672 __u);
3673}
3674
Michael Kupersteine45af542015-06-30 13:36:19 +00003675static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003676_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
3677 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3678 (__mmask8)-1);
3679}
3680
Michael Kupersteine45af542015-06-30 13:36:19 +00003681static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003682_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
3683 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3684 (__mmask8)-1);
3685}
3686
Michael Kupersteine45af542015-06-30 13:36:19 +00003687static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003688_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3689 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3690 __u);
3691}
3692
Michael Kupersteine45af542015-06-30 13:36:19 +00003693static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003694_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
3695 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3696 (__mmask16)-1);
3697}
3698
Michael Kupersteine45af542015-06-30 13:36:19 +00003699static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003700_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3701 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3702 __u);
3703}
3704
Michael Kupersteine45af542015-06-30 13:36:19 +00003705static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003706_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
3707 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3708 (__mmask16)-1);
3709}
3710
Michael Kupersteine45af542015-06-30 13:36:19 +00003711static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003712_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3713 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3714 __u);
3715}
3716
Michael Kupersteine45af542015-06-30 13:36:19 +00003717static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003718_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
3719 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3720 (__mmask8)-1);
3721}
3722
Michael Kupersteine45af542015-06-30 13:36:19 +00003723static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003724_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3725 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3726 __u);
3727}
3728
Michael Kupersteine45af542015-06-30 13:36:19 +00003729static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003730_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
3731 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3732 (__mmask8)-1);
3733}
3734
Michael Kupersteine45af542015-06-30 13:36:19 +00003735static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003736_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3737 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3738 __u);
3739}
3740
Michael Kupersteine45af542015-06-30 13:36:19 +00003741static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003742_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
3743 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3744 (__mmask16)-1);
3745}
3746
Michael Kupersteine45af542015-06-30 13:36:19 +00003747static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003748_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3749 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3750 __u);
3751}
3752
Michael Kupersteine45af542015-06-30 13:36:19 +00003753static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003754_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
3755 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3756 (__mmask16)-1);
3757}
3758
Michael Kupersteine45af542015-06-30 13:36:19 +00003759static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003760_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3761 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3762 __u);
3763}
3764
Michael Kupersteine45af542015-06-30 13:36:19 +00003765static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003766_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3767 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3768 __u);
3769}
3770
Michael Kupersteine45af542015-06-30 13:36:19 +00003771static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003772_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
3773 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3774 (__mmask8)-1);
3775}
3776
Michael Kupersteine45af542015-06-30 13:36:19 +00003777static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003778_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
3779 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3780 (__mmask8)-1);
3781}
3782
Michael Kupersteine45af542015-06-30 13:36:19 +00003783static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003784_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3785 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3786 __u);
3787}
3788
Michael Kupersteine45af542015-06-30 13:36:19 +00003789static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003790_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
3791 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3792 (__mmask16)-1);
3793}
3794
Michael Kupersteine45af542015-06-30 13:36:19 +00003795static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003796_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3797 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3798 __u);
3799}
3800
Michael Kupersteine45af542015-06-30 13:36:19 +00003801static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003802_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
3803 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3804 (__mmask16)-1);
3805}
3806
Michael Kupersteine45af542015-06-30 13:36:19 +00003807static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003808_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3809 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3810 __u);
3811}
3812
Michael Kupersteine45af542015-06-30 13:36:19 +00003813static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003814_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
3815 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3816 (__mmask8)-1);
3817}
3818
Michael Kupersteine45af542015-06-30 13:36:19 +00003819static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003820_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3821 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3822 __u);
3823}
3824
Michael Kupersteine45af542015-06-30 13:36:19 +00003825static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003826_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
3827 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3828 (__mmask8)-1);
3829}
3830
Michael Kupersteine45af542015-06-30 13:36:19 +00003831static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003832_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3833 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3834 __u);
3835}
3836
Michael Kupersteine45af542015-06-30 13:36:19 +00003837static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003838_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
3839 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3840 (__mmask16)-1);
3841}
3842
Michael Kupersteine45af542015-06-30 13:36:19 +00003843static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003844_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3845 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3846 __u);
3847}
3848
Michael Kupersteine45af542015-06-30 13:36:19 +00003849static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003850_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
3851 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3852 (__mmask16)-1);
3853}
3854
Michael Kupersteine45af542015-06-30 13:36:19 +00003855static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003856_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3857 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3858 __u);
3859}
3860
Michael Kupersteine45af542015-06-30 13:36:19 +00003861static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003862_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
3863 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3864 (__mmask8)-1);
3865}
3866
Michael Kupersteine45af542015-06-30 13:36:19 +00003867static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003868_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3869 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3870 __u);
3871}
3872
Michael Kupersteine45af542015-06-30 13:36:19 +00003873static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003874_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
3875 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3876 (__mmask8)-1);
3877}
3878
Michael Kupersteine45af542015-06-30 13:36:19 +00003879static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003880_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3881 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3882 __u);
3883}
3884
Michael Kupersteine45af542015-06-30 13:36:19 +00003885static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003886_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
3887 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3888 (__mmask16)-1);
3889}
3890
Michael Kupersteine45af542015-06-30 13:36:19 +00003891static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003892_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3893 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3894 __u);
3895}
3896
Michael Kupersteine45af542015-06-30 13:36:19 +00003897static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003898_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
3899 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3900 (__mmask16)-1);
3901}
3902
Michael Kupersteine45af542015-06-30 13:36:19 +00003903static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003904_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3905 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3906 __u);
3907}
3908
Michael Kupersteine45af542015-06-30 13:36:19 +00003909static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003910_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3911 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3912 (__mmask8)-1);
3913}
3914
Michael Kupersteine45af542015-06-30 13:36:19 +00003915static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003916_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3917 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3918 __u);
3919}
3920
Michael Kupersteine45af542015-06-30 13:36:19 +00003921static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003922_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3923 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3924 (__mmask8)-1);
3925}
3926
Michael Kupersteine45af542015-06-30 13:36:19 +00003927static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003928_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3929 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3930 __u);
3931}
3932
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003933static __inline__ __m512i __DEFAULT_FN_ATTRS
3934_mm512_cvtepi8_epi32 (__m128i __A)
3935{
3936 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3937 (__v16si)
3938 _mm512_setzero_si512 (),
3939 (__mmask16) -1);
3940}
3941
3942static __inline__ __m512i __DEFAULT_FN_ATTRS
3943_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3944{
3945 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3946 (__v16si) __W,
3947 (__mmask16) __U);
3948}
3949
3950static __inline__ __m512i __DEFAULT_FN_ATTRS
3951_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
3952{
3953 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3954 (__v16si)
3955 _mm512_setzero_si512 (),
3956 (__mmask16) __U);
3957}
3958
3959static __inline__ __m512i __DEFAULT_FN_ATTRS
3960_mm512_cvtepi8_epi64 (__m128i __A)
3961{
3962 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3963 (__v8di)
3964 _mm512_setzero_si512 (),
3965 (__mmask8) -1);
3966}
3967
3968static __inline__ __m512i __DEFAULT_FN_ATTRS
3969_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3970{
3971 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3972 (__v8di) __W,
3973 (__mmask8) __U);
3974}
3975
3976static __inline__ __m512i __DEFAULT_FN_ATTRS
3977_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
3978{
3979 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3980 (__v8di)
3981 _mm512_setzero_si512 (),
3982 (__mmask8) __U);
3983}
3984
3985static __inline__ __m512i __DEFAULT_FN_ATTRS
3986_mm512_cvtepi32_epi64 (__m256i __X)
3987{
3988 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3989 (__v8di)
3990 _mm512_setzero_si512 (),
3991 (__mmask8) -1);
3992}
3993
3994static __inline__ __m512i __DEFAULT_FN_ATTRS
3995_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3996{
3997 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3998 (__v8di) __W,
3999 (__mmask8) __U);
4000}
4001
4002static __inline__ __m512i __DEFAULT_FN_ATTRS
4003_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4004{
4005 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4006 (__v8di)
4007 _mm512_setzero_si512 (),
4008 (__mmask8) __U);
4009}
4010
4011static __inline__ __m512i __DEFAULT_FN_ATTRS
4012_mm512_cvtepi16_epi32 (__m256i __A)
4013{
4014 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4015 (__v16si)
4016 _mm512_setzero_si512 (),
4017 (__mmask16) -1);
4018}
4019
4020static __inline__ __m512i __DEFAULT_FN_ATTRS
4021_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4022{
4023 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4024 (__v16si) __W,
4025 (__mmask16) __U);
4026}
4027
4028static __inline__ __m512i __DEFAULT_FN_ATTRS
4029_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4030{
4031 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4032 (__v16si)
4033 _mm512_setzero_si512 (),
4034 (__mmask16) __U);
4035}
4036
4037static __inline__ __m512i __DEFAULT_FN_ATTRS
4038_mm512_cvtepi16_epi64 (__m128i __A)
4039{
4040 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4041 (__v8di)
4042 _mm512_setzero_si512 (),
4043 (__mmask8) -1);
4044}
4045
4046static __inline__ __m512i __DEFAULT_FN_ATTRS
4047_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4048{
4049 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4050 (__v8di) __W,
4051 (__mmask8) __U);
4052}
4053
4054static __inline__ __m512i __DEFAULT_FN_ATTRS
4055_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4056{
4057 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4058 (__v8di)
4059 _mm512_setzero_si512 (),
4060 (__mmask8) __U);
4061}
4062
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004063static __inline__ __m512i __DEFAULT_FN_ATTRS
4064_mm512_cvtepu8_epi32 (__m128i __A)
4065{
4066 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4067 (__v16si)
4068 _mm512_setzero_si512 (),
4069 (__mmask16) -1);
4070}
4071
4072static __inline__ __m512i __DEFAULT_FN_ATTRS
4073_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4074{
4075 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4076 (__v16si) __W,
4077 (__mmask16) __U);
4078}
4079
4080static __inline__ __m512i __DEFAULT_FN_ATTRS
4081_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4082{
4083 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4084 (__v16si)
4085 _mm512_setzero_si512 (),
4086 (__mmask16) __U);
4087}
4088
4089static __inline__ __m512i __DEFAULT_FN_ATTRS
4090_mm512_cvtepu8_epi64 (__m128i __A)
4091{
4092 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4093 (__v8di)
4094 _mm512_setzero_si512 (),
4095 (__mmask8) -1);
4096}
4097
4098static __inline__ __m512i __DEFAULT_FN_ATTRS
4099_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4100{
4101 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4102 (__v8di) __W,
4103 (__mmask8) __U);
4104}
4105
4106static __inline__ __m512i __DEFAULT_FN_ATTRS
4107_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4108{
4109 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4110 (__v8di)
4111 _mm512_setzero_si512 (),
4112 (__mmask8) __U);
4113}
4114
4115static __inline__ __m512i __DEFAULT_FN_ATTRS
4116_mm512_cvtepu32_epi64 (__m256i __X)
4117{
4118 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4119 (__v8di)
4120 _mm512_setzero_si512 (),
4121 (__mmask8) -1);
4122}
4123
4124static __inline__ __m512i __DEFAULT_FN_ATTRS
4125_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4126{
4127 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4128 (__v8di) __W,
4129 (__mmask8) __U);
4130}
4131
4132static __inline__ __m512i __DEFAULT_FN_ATTRS
4133_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4134{
4135 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4136 (__v8di)
4137 _mm512_setzero_si512 (),
4138 (__mmask8) __U);
4139}
4140
4141static __inline__ __m512i __DEFAULT_FN_ATTRS
4142_mm512_cvtepu16_epi32 (__m256i __A)
4143{
4144 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4145 (__v16si)
4146 _mm512_setzero_si512 (),
4147 (__mmask16) -1);
4148}
4149
4150static __inline__ __m512i __DEFAULT_FN_ATTRS
4151_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4152{
4153 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4154 (__v16si) __W,
4155 (__mmask16) __U);
4156}
4157
4158static __inline__ __m512i __DEFAULT_FN_ATTRS
4159_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4160{
4161 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4162 (__v16si)
4163 _mm512_setzero_si512 (),
4164 (__mmask16) __U);
4165}
4166
4167static __inline__ __m512i __DEFAULT_FN_ATTRS
4168_mm512_cvtepu16_epi64 (__m128i __A)
4169{
4170 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4171 (__v8di)
4172 _mm512_setzero_si512 (),
4173 (__mmask8) -1);
4174}
4175
4176static __inline__ __m512i __DEFAULT_FN_ATTRS
4177_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4178{
4179 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4180 (__v8di) __W,
4181 (__mmask8) __U);
4182}
4183
4184static __inline__ __m512i __DEFAULT_FN_ATTRS
4185_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4186{
4187 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4188 (__v8di)
4189 _mm512_setzero_si512 (),
4190 (__mmask8) __U);
4191}
4192
Michael Zuckermane98cc742016-02-23 15:59:47 +00004193static __inline__ __m512i __DEFAULT_FN_ATTRS
4194_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4195{
4196 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4197 (__v16si) __B,
4198 (__v16si)
4199 _mm512_setzero_si512 (),
4200 (__mmask16) -1);
4201}
4202
4203static __inline__ __m512i __DEFAULT_FN_ATTRS
4204_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4205{
4206 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4207 (__v16si) __B,
4208 (__v16si) __W,
4209 (__mmask16) __U);
4210}
4211
4212static __inline__ __m512i __DEFAULT_FN_ATTRS
4213_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4214{
4215 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4216 (__v16si) __B,
4217 (__v16si)
4218 _mm512_setzero_si512 (),
4219 (__mmask16) __U);
4220}
4221
4222static __inline__ __m512i __DEFAULT_FN_ATTRS
4223_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4224{
4225 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4226 (__v8di) __B,
4227 (__v8di)
4228 _mm512_setzero_si512 (),
4229 (__mmask8) -1);
4230}
4231
4232static __inline__ __m512i __DEFAULT_FN_ATTRS
4233_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4234{
4235 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4236 (__v8di) __B,
4237 (__v8di) __W,
4238 (__mmask8) __U);
4239}
4240
4241static __inline__ __m512i __DEFAULT_FN_ATTRS
4242_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4243{
4244 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4245 (__v8di) __B,
4246 (__v8di)
4247 _mm512_setzero_si512 (),
4248 (__mmask8) __U);
4249}
4250
4251
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004252
Craig Topper4cac1c22015-01-25 23:30:07 +00004253#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004254 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4255 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004256 (__mmask16)-1); })
4257
4258#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004259 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4260 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004261 (__mmask16)-1); })
4262
4263#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004264 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4265 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004266 (__mmask8)-1); })
4267
4268#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004269 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4270 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004271 (__mmask8)-1); })
4272
4273#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004274 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4275 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004276 (__mmask16)(m)); })
4277
4278#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004279 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4280 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004281 (__mmask16)(m)); })
4282
4283#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004284 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4285 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004286 (__mmask8)(m)); })
4287
4288#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004289 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4290 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004291 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004292
Michael Zuckerman38a27272016-02-22 09:05:41 +00004293#define _mm512_rol_epi32(a, b) __extension__ ({ \
4294 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4295 (__v16si)\
4296 _mm512_setzero_si512 (),\
4297 (__mmask16) -1); })
4298
4299#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
4300 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4301 (__v16si) (W),\
4302 (__mmask16) (U)); })
4303
4304#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
4305 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4306 (__v16si)\
4307 _mm512_setzero_si512 (),\
4308 (__mmask16) (U)); })
4309
4310#define _mm512_rol_epi64(a, b) __extension__ ({ \
4311 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4312 (__v8di)\
4313 _mm512_setzero_si512 (),\
4314 (__mmask8) -1); })
4315
4316#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
4317 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4318 (__v8di) (W),\
4319 (__mmask8) (U)); })
4320
4321#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
4322 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4323 (__v8di)\
4324 _mm512_setzero_si512 (),\
4325 (__mmask8) (U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004326static __inline__ __m512i __DEFAULT_FN_ATTRS
4327_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4328{
4329 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4330 (__v16si) __B,
4331 (__v16si)
4332 _mm512_setzero_si512 (),
4333 (__mmask16) -1);
4334}
4335
4336static __inline__ __m512i __DEFAULT_FN_ATTRS
4337_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4338{
4339 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4340 (__v16si) __B,
4341 (__v16si) __W,
4342 (__mmask16) __U);
4343}
4344
4345static __inline__ __m512i __DEFAULT_FN_ATTRS
4346_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4347{
4348 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4349 (__v16si) __B,
4350 (__v16si)
4351 _mm512_setzero_si512 (),
4352 (__mmask16) __U);
4353}
4354
4355static __inline__ __m512i __DEFAULT_FN_ATTRS
4356_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4357{
4358 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4359 (__v8di) __B,
4360 (__v8di)
4361 _mm512_setzero_si512 (),
4362 (__mmask8) -1);
4363}
4364
4365static __inline__ __m512i __DEFAULT_FN_ATTRS
4366_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4367{
4368 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4369 (__v8di) __B,
4370 (__v8di) __W,
4371 (__mmask8) __U);
4372}
4373
4374static __inline__ __m512i __DEFAULT_FN_ATTRS
4375_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4376{
4377 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4378 (__v8di) __B,
4379 (__v8di)
4380 _mm512_setzero_si512 (),
4381 (__mmask8) __U);
4382}
4383
4384#define _mm512_ror_epi32( __A, __B) __extension__ ({ \
4385__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4386 (__v16si)\
4387 _mm512_setzero_si512 (),\
4388 (__mmask16) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004389})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004390
4391#define _mm512_mask_ror_epi32( __W, __U, __A, __B) __extension__ ({ \
4392__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4393 (__v16si)( __W),\
4394 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004395})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004396
4397#define _mm512_maskz_ror_epi32( __U, __A, __B) __extension__ ({ \
4398__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4399 (__v16si)\
4400 _mm512_setzero_si512 (),\
4401 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004402})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004403
4404#define _mm512_ror_epi64( __A, __B) __extension__ ({ \
4405__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4406 (__v8di)\
4407 _mm512_setzero_si512 (),\
4408 (__mmask8) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004409})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004410
4411#define _mm512_mask_ror_epi64( __W, __U, __A, __B) __extension__ ({ \
4412__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4413 (__v8di)( __W),\
4414 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004415})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004416
4417#define _mm512_maskz_ror_epi64( __U, __A, __B) __extension__ ({ \
4418__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4419 (__v8di)\
4420 _mm512_setzero_si512 (),\
4421 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004422})
Michael Zuckerman38a27272016-02-22 09:05:41 +00004423
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004424#define _mm512_slli_epi32( __A, __B) __extension__ ({ \
4425__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
4426 (__v16si)\
4427 _mm512_setzero_si512 (),\
4428 (__mmask16) -1);\
4429})
4430
4431#define _mm512_mask_slli_epi32( __W, __U, __A ,__B) __extension__ ({ \
4432__builtin_ia32_pslldi512_mask ((__v16si) (__A), (__B),\
4433 (__v16si)( __W),\
4434 (__mmask16)( __U));\
4435})
4436
4437#define _mm512_maskz_slli_epi32( __U, __A, __B) __extension__ ({ \
4438__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
4439 (__v16si)\
4440 _mm512_setzero_si512 (),\
4441 (__mmask16)( __U));\
4442})
4443
4444#define _mm512_slli_epi64( __A, __B) __extension__ ({ \
4445__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
4446 (__v8di)\
4447 _mm512_setzero_si512 (),\
4448 (__mmask8) -1);\
4449})
4450
4451#define _mm512_mask_slli_epi64( __W, __U, __A ,__B) __extension__ ({ \
4452__builtin_ia32_psllqi512_mask ((__v8di) (__A), (__B),\
4453 (__v8di)( __W),\
4454 (__mmask8)( __U));\
4455})
4456
4457#define _mm512_maskz_slli_epi64( __U, __A, __B) __extension__ ({ \
4458__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
4459 (__v8di)\
4460 _mm512_setzero_si512 (),\
4461 (__mmask8)( __U));\
4462})
4463
Michael Zuckerman38a27272016-02-22 09:05:41 +00004464
Michael Zuckermand176d742016-03-01 17:49:03 +00004465
4466#define _mm512_srli_epi32( __A, __B) __extension__ ({ \
4467__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4468 (__v16si)\
4469 _mm512_setzero_si512 (),\
4470 (__mmask16) -1);\
4471})
4472
4473#define _mm512_mask_srli_epi32( __W, __U, __A, __B) __extension__ ({ \
4474__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4475 (__v16si)( __W),\
4476 (__mmask16)( __U));\
4477})
4478
4479#define _mm512_maskz_srli_epi32( __U, __A, __B) __extension__ ({ \
4480__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4481 (__v16si)\
4482 _mm512_setzero_si512 (),\
4483 (__mmask16)( __U));\
4484})
4485
4486#define _mm512_srli_epi64( __A, __B) __extension__ ({ \
4487__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4488 (__v8di)\
4489 _mm512_setzero_si512 (),\
4490 (__mmask8) -1);\
4491})
4492
4493#define _mm512_mask_srli_epi64( __W, __U, __A, __B) __extension__ ({ \
4494__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4495 (__v8di)( __W),\
4496 (__mmask8)( __U));\
4497})
4498
4499#define _mm512_maskz_srli_epi64( __U, __A, __B) __extension__ ({ \
4500__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4501 (__v8di)\
4502 _mm512_setzero_si512 (),\
4503 (__mmask8)( __U));\
4504})
4505
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004506static __inline__ __m512i __DEFAULT_FN_ATTRS
4507_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4508{
4509 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4510 (__v16si) __W,
4511 (__mmask16) __U);
4512}
4513
4514static __inline__ __m512i __DEFAULT_FN_ATTRS
4515_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4516{
4517 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4518 (__v16si)
4519 _mm512_setzero_si512 (),
4520 (__mmask16) __U);
4521}
4522
4523static __inline__ void __DEFAULT_FN_ATTRS
4524_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
4525{
4526 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
4527 (__mmask16) __U);
4528}
4529
4530static __inline__ __m512i __DEFAULT_FN_ATTRS
4531_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
4532{
4533 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4534 (__v8di) __W,
4535 (__mmask8) __U);
4536}
4537
4538static __inline__ __m512i __DEFAULT_FN_ATTRS
4539_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
4540{
4541 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4542 (__v8di)
4543 _mm512_setzero_si512 (),
4544 (__mmask8) __U);
4545}
4546
4547static __inline__ __m512i __DEFAULT_FN_ATTRS
4548_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4549{
4550 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4551 (__v8di) __W,
4552 (__mmask8) __U);
4553}
4554
4555static __inline__ __m512i __DEFAULT_FN_ATTRS
4556_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
4557{
4558 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4559 (__v8di)
4560 _mm512_setzero_si512 (),
4561 (__mmask8) __U);
4562}
4563
4564static __inline__ void __DEFAULT_FN_ATTRS
4565_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
4566{
4567 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
4568 (__mmask8) __U);
4569}
4570
4571
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00004572
4573static __inline__ __m512d __DEFAULT_FN_ATTRS
4574_mm512_movedup_pd (__m512d __A)
4575{
4576 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4577 (__v8df)
4578 _mm512_undefined_pd (),
4579 (__mmask8) -1);
4580}
4581
4582static __inline__ __m512d __DEFAULT_FN_ATTRS
4583_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
4584{
4585 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4586 (__v8df) __W,
4587 (__mmask8) __U);
4588}
4589
4590static __inline__ __m512d __DEFAULT_FN_ATTRS
4591_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
4592{
4593 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4594 (__v8df)
4595 _mm512_setzero_pd (),
4596 (__mmask8) __U);
4597}
4598
Michael Zuckermandef78752016-03-28 12:23:09 +00004599#define _mm512_fixupimm_round_pd( __A, __B, __C, __imm, __R) __extension__ ({ \
4600__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4601 (__v8df)( __B),\
4602 (__v8di)( __C),\
4603 (__imm),\
4604 (__mmask8) -1, (__R));\
4605})
4606
4607#define _mm512_mask_fixupimm_round_pd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4608__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4609 (__v8df)( __B),\
4610 (__v8di)( __C),\
4611 (__imm),\
4612 (__mmask8)( __U), (__R));\
4613})
4614
4615#define _mm512_fixupimm_pd( __A, __B, __C, __imm) __extension__ ({ \
4616__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4617 (__v8df)( __B),\
4618 (__v8di)( __C),\
4619 ( __imm),\
4620 (__mmask8) -1,\
4621 _MM_FROUND_CUR_DIRECTION);\
4622})
4623
4624#define _mm512_mask_fixupimm_pd( __A, __U, __B, __C, __imm) __extension__ ({ \
4625__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4626 (__v8df)( __B),\
4627 (__v8di)( __C),\
4628 ( __imm),\
4629 (__mmask8)( __U),\
4630 _MM_FROUND_CUR_DIRECTION);\
4631})
4632
4633#define _mm512_maskz_fixupimm_round_pd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4634__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
4635 (__v8df)( __B),\
4636 (__v8di)( __C),\
4637 (__imm),\
4638 (__mmask8)( __U), (__R));\
4639})
4640
4641#define _mm512_maskz_fixupimm_pd( __U, __A, __B, __C, __imm) __extension__ ({ \
4642__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
4643 (__v8df)( __B),\
4644 (__v8di)( __C),\
4645 ( __imm),\
4646 (__mmask8)( __U),\
4647 _MM_FROUND_CUR_DIRECTION);\
4648})
4649
4650#define _mm512_fixupimm_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
4651__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4652 (__v16sf)( __B),\
4653 (__v16si)( __C),\
4654 (__imm),\
4655 (__mmask16) -1, (__R));\
4656})
4657
4658#define _mm512_mask_fixupimm_round_ps( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4659__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4660 (__v16sf)( __B),\
4661 (__v16si)( __C),\
4662 (__imm),\
4663 (__mmask16)( __U), (__R));\
4664})
4665
4666#define _mm512_fixupimm_ps( __A, __B, __C, __imm) __extension__ ({ \
4667__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4668 (__v16sf)( __B),\
4669 (__v16si)( __C),\
4670 ( __imm),\
4671 (__mmask16) -1,\
4672 _MM_FROUND_CUR_DIRECTION);\
4673})
4674
4675#define _mm512_mask_fixupimm_ps( __A, __U, __B, __C, __imm) __extension__ ({ \
4676__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4677 (__v16sf)( __B),\
4678 (__v16si)( __C),\
4679 ( __imm),\
4680 (__mmask16)( __U),\
4681 _MM_FROUND_CUR_DIRECTION);\
4682})
4683
4684#define _mm512_maskz_fixupimm_round_ps( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4685__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4686 (__v16sf)( __B),\
4687 (__v16si)( __C),\
4688 (__imm),\
4689 (__mmask16)( __U), (__R));\
4690})
4691
4692#define _mm512_maskz_fixupimm_ps( __U, __A, __B, __C, __imm) __extension__ ({ \
4693__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4694 (__v16sf)( __B),\
4695 (__v16si)( __C),\
4696 ( __imm),\
4697 (__mmask16)( __U),\
4698 _MM_FROUND_CUR_DIRECTION);\
4699})
4700
4701#define _mm_fixupimm_round_sd( __A, __B, __C, __imm, __R) __extension__ ({ \
4702__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4703 (__v2df)( __B),\
4704 (__v2di)( __C), __imm,\
4705 (__mmask8) -1, (__R));\
4706})
4707
4708#define _mm_mask_fixupimm_round_sd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4709__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4710 (__v2df)( __B),\
4711 (__v2di)( __C), __imm,\
4712 (__mmask8)( __U), (__R));\
4713})
4714
4715#define _mm_fixupimm_sd( __A, __B, __C, __imm) __extension__ ({ \
4716__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4717 (__v2df)( __B),\
4718 (__v2di)( __C),( __imm),\
4719 (__mmask8) -1,\
4720 _MM_FROUND_CUR_DIRECTION);\
4721})
4722
4723#define _mm_mask_fixupimm_sd( __A, __U, __B, __C, __imm) __extension__ ({ \
4724__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4725 (__v2df)( __B),\
4726 (__v2di)( __C),( __imm),\
4727 (__mmask8)( __U),\
4728 _MM_FROUND_CUR_DIRECTION);\
4729})
4730
4731#define _mm_maskz_fixupimm_round_sd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4732__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4733 (__v2df)( __B),\
4734 (__v2di)( __C),\
4735 __imm,\
4736 (__mmask8)( __U), (__R));\
4737})
4738
4739#define _mm_maskz_fixupimm_sd( __U, __A, __B, __C, __imm) __extension__ ({ \
4740__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4741 (__v2df)( __B),\
4742 (__v2di)( __C),\
4743 ( __imm),\
4744 (__mmask8)( __U),\
4745 _MM_FROUND_CUR_DIRECTION);\
4746})
4747
4748#define _mm_fixupimm_round_ss( __A, __B, __C, __imm, __R) __extension__ ({ \
4749__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4750 (__v4sf)( __B),\
4751 (__v4si)( __C), (__imm),\
4752 (__mmask8) -1, (__R));\
4753})
4754
4755#define _mm_mask_fixupimm_round_ss( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4756__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4757 (__v4sf)( __B),\
4758 (__v4si)( __C), (__imm),\
4759 (__mmask8)( __U), (__R));\
4760})
4761
4762#define _mm_fixupimm_ss( __A, __B, __C, __imm) __extension__ ({ \
4763__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4764 (__v4sf)( __B),\
4765 (__v4si)( __C),( __imm),\
4766 (__mmask8) -1,\
4767 _MM_FROUND_CUR_DIRECTION);\
4768})
4769
4770#define _mm_mask_fixupimm_ss( __A, __U, __B, __C, __imm) __extension__ ({ \
4771__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4772 (__v4sf)( __B),\
4773 (__v4si)( __C),( __imm),\
4774 (__mmask8)( __U),\
4775 _MM_FROUND_CUR_DIRECTION);\
4776})
4777
4778#define _mm_maskz_fixupimm_round_ss( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4779__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4780 (__v4sf)( __B),\
4781 (__v4si)( __C), (__imm),\
4782 (__mmask8)( __U), (__R));\
4783})
4784
4785#define _mm_maskz_fixupimm_ss( __U, __A, __B, __C, __imm) __extension__ ({ \
4786__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4787 (__v4sf)( __B),\
4788 (__v4si)( __C),( __imm),\
4789 (__mmask8)( __U),\
4790 _MM_FROUND_CUR_DIRECTION);\
4791})
4792
4793#define _mm_getexp_round_sd( __A, __B ,__R) __extension__ ({ \
4794__builtin_ia32_getexpsd128_round_mask ((__v2df)(__A),\
4795 (__v2df)( __B), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4796 ( __R));\
4797})
4798
4799
4800static __inline__ __m128d __DEFAULT_FN_ATTRS
4801_mm_getexp_sd (__m128d __A, __m128d __B)
4802{
4803 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
4804 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4805}
4806
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004807static __inline__ __m128d __DEFAULT_FN_ATTRS
4808_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4809{
4810 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4811 (__v2df) __B,
4812 (__v2df) __W,
4813 (__mmask8) __U,
4814 _MM_FROUND_CUR_DIRECTION);
4815}
4816
4817#define _mm_mask_getexp_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
4818__builtin_ia32_getexpsd128_round_mask ((__v2df) __A,\
4819 (__v2df) __B,\
4820 (__v2df) __W,\
4821 (__mmask8) __U,\
4822 __R);\
4823})
4824
4825static __inline__ __m128d __DEFAULT_FN_ATTRS
4826_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
4827{
4828 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4829 (__v2df) __B,
4830 (__v2df) _mm_setzero_pd (),
4831 (__mmask8) __U,
4832 _MM_FROUND_CUR_DIRECTION);
4833}
4834
4835#define _mm_maskz_getexp_round_sd( __U, __A, __B, __R) __extension__ ({\
4836__builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,\
4837 (__v2df) __B,\
4838 (__v2df) _mm_setzero_pd (),\
4839 (__mmask8) __U,\
4840 __R);\
4841})
4842
Michael Zuckermandef78752016-03-28 12:23:09 +00004843#define _mm_getexp_round_ss( __A, __B, __R) __extension__ ({ \
4844__builtin_ia32_getexpss128_round_mask ((__v4sf)( __A),\
4845 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4846 ( __R));\
4847})
4848
4849static __inline__ __m128 __DEFAULT_FN_ATTRS
4850_mm_getexp_ss (__m128 __A, __m128 __B)
4851{
4852 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4853 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4854}
4855
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004856static __inline__ __m128d __DEFAULT_FN_ATTRS
4857_mm_mask_getexp_ss (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4858{
4859 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4860 (__v4sf) __B,
4861 (__v4sf) __W,
4862 (__mmask8) __U,
4863 _MM_FROUND_CUR_DIRECTION);
4864}
4865
4866#define _mm_mask_getexp_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
4867__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4868 (__v4sf) __B,\
4869 (__v4sf) __W,\
4870 (__mmask8) __U,\
4871 __R);\
4872})
4873
4874static __inline__ __m128d __DEFAULT_FN_ATTRS
4875_mm_maskz_getexp_ss (__mmask8 __U, __m128d __A, __m128d __B)
4876{
4877 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4878 (__v4sf) __B,
4879 (__v4sf) _mm_setzero_pd (),
4880 (__mmask8) __U,
4881 _MM_FROUND_CUR_DIRECTION);
4882}
4883
4884#define _mm_maskz_getexp_round_ss( __U, __A, __B, __R) __extension__ ({\
4885__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4886 (__v4sf) __B,\
4887 (__v4sf) _mm_setzero_ps (),\
4888 (__mmask8) __U,\
4889 __R);\
4890})
4891
Michael Zuckermandef78752016-03-28 12:23:09 +00004892#define _mm_getmant_round_sd( __A, __B, __C, __D, __R) __extension__ ({ \
4893__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4894 (__v2df)( __B),\
4895 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4896 ( __R));\
4897})
4898
4899#define _mm_getmant_sd( __A, __B, __C, __D) __extension__ ({ \
4900__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4901 (__v2df)( __B),\
4902 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4903 _MM_FROUND_CUR_DIRECTION);\
4904})
4905
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004906#define _mm_mask_getmant_sd( __W, __U, __A, __B, __C, __D) __extension__ ({\
4907__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4908 (__v2df) __B,\
4909 (( __D) << 2) |( __C),\
4910 (__v2df) __W,\
4911 (__mmask8) __U,\
4912 _MM_FROUND_CUR_DIRECTION);\
4913})
4914
4915#define _mm_mask_getmant_round_sd( __W, __U, __A, __B, __C, __D, __R)({\
4916__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4917 (__v2df) __B,\
4918 (( __D) << 2) |( __C),\
4919 (__v2df) __W,\
4920 (__mmask8) __U,\
4921 __R);\
4922})
4923
4924#define _mm_maskz_getmant_sd( __U, __A, __B, __C, __D) __extension__ ({\
4925__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4926 (__v2df) __B,\
4927 (( __D) << 2) |( __C),\
4928 (__v2df) _mm_setzero_pd (),\
4929 (__mmask8) __U,\
4930 _MM_FROUND_CUR_DIRECTION);\
4931})
4932
4933#define _mm_maskz_getmant_round_sd( __U, __A, __B, __C, __D, __R) __extension__ ({\
4934__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4935 (__v2df) __B,\
4936 (( __D) << 2) |( __C),\
4937 (__v2df) _mm_setzero_pd (),\
4938 (__mmask8) __U,\
4939 __R);\
4940})
4941
Michael Zuckermandef78752016-03-28 12:23:09 +00004942#define _mm_getmant_round_ss( __A, __B, __C, __D, __R) __extension__ ({ \
4943__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4944 (__v4sf)( __B),\
4945 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4946 ( __R));\
4947})
4948
4949#define _mm_getmant_ss(__A, __B, __C, __D) __extension__ ({ \
4950__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4951 (__v4sf)( __B),\
4952 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4953 _MM_FROUND_CUR_DIRECTION);\
4954})
4955
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004956#define _mm_mask_getmant_ss( __W, __U, __A, __B, __C, __D) __extension__ ({\
4957__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4958 (__v4sf) __B,\
4959 (( __D) << 2) |( __C),\
4960 (__v4sf) __W,\
4961 (__mmask8) __U,\
4962 _MM_FROUND_CUR_DIRECTION);\
4963})
4964
4965#define _mm_mask_getmant_round_ss( __W, __U, __A, __B, __C, __D, __R)({\
4966__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4967 (__v4sf) __B,\
4968 (( __D) << 2) |( __C),\
4969 (__v4sf) __W,\
4970 (__mmask8) __U,\
4971 __R);\
4972})
4973
4974#define _mm_maskz_getmant_ss( __U, __A, __B, __C, __D) __extension__ ({\
4975__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4976 (__v4sf) __B,\
4977 (( __D) << 2) |( __C),\
4978 (__v4sf) _mm_setzero_pd (),\
4979 (__mmask8) __U,\
4980 _MM_FROUND_CUR_DIRECTION);\
4981})
4982
4983#define _mm_maskz_getmant_round_ss( __U, __A, __B, __C, __D, __R) __extension__ ({\
4984__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4985 (__v4sf) __B,\
4986 (( __D) << 2) |( __C),\
4987 (__v4sf) _mm_setzero_ps (),\
4988 (__mmask8) __U,\
4989 __R);\
4990})
Michael Zuckermandef78752016-03-28 12:23:09 +00004991
4992static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4993_mm512_kmov (__mmask16 __A)
4994{
4995 return __A;
4996}
4997
Michael Zuckermane71d59f2016-03-07 19:15:00 +00004998#define _mm_comi_round_sd(__A, __B, __P, __R) __extension__ ({\
4999__builtin_ia32_vcomisd ((__v2df) (__A), (__v2df) (__B), ( __P), ( __R));\
5000})
5001
5002#define _mm_comi_round_ss( __A, __B, __P, __R) __extension__ ({\
5003__builtin_ia32_vcomiss ((__v4sf) (__A), (__v4sf) (__B), ( __P), ( __R));\
5004})
5005
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005006static __inline__ __m512d __DEFAULT_FN_ATTRS
5007_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5008{
5009 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5010 (__v8df) __B,
5011 (__v8df) __W,
5012 (__mmask8) __U);
5013}
Michael Zuckerman8d161992016-04-10 17:24:03 +00005014#define _mm_cvt_roundsd_si64( __A, __R) __extension__ ({ \
5015__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
5016})
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005017static __inline__ __m512i __DEFAULT_FN_ATTRS
5018_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5019 __mmask16 __U, __m512i __B)
5020{
5021 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5022 (__v16si) __I
5023 /* idx */ ,
5024 (__v16si) __B,
5025 (__mmask16) __U);
5026}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005027static __inline__ __m512i __DEFAULT_FN_ATTRS
5028_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5029{
5030 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5031 (__v16si) __B,
5032 (__v16si)
5033 _mm512_setzero_si512 (),
5034 (__mmask16) -1);
5035}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005036
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005037static __inline__ __m512i __DEFAULT_FN_ATTRS
5038_mm512_sll_epi32 (__m512i __A, __m128i __B)
5039{
5040 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5041 (__v4si) __B,
5042 (__v16si)
5043 _mm512_setzero_si512 (),
5044 (__mmask16) -1);
5045}
5046
5047static __inline__ __m512i __DEFAULT_FN_ATTRS
5048_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5049{
5050 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5051 (__v4si) __B,
5052 (__v16si) __W,
5053 (__mmask16) __U);
5054}
5055
5056static __inline__ __m512i __DEFAULT_FN_ATTRS
5057_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5058{
5059 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5060 (__v4si) __B,
5061 (__v16si)
5062 _mm512_setzero_si512 (),
5063 (__mmask16) __U);
5064}
5065
5066static __inline__ __m512i __DEFAULT_FN_ATTRS
5067_mm512_sll_epi64 (__m512i __A, __m128i __B)
5068{
5069 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5070 (__v2di) __B,
5071 (__v8di)
5072 _mm512_setzero_si512 (),
5073 (__mmask8) -1);
5074}
5075
5076static __inline__ __m512i __DEFAULT_FN_ATTRS
5077_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5078{
5079 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5080 (__v2di) __B,
5081 (__v8di) __W,
5082 (__mmask8) __U);
5083}
5084
5085static __inline__ __m512i __DEFAULT_FN_ATTRS
5086_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5087{
5088 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5089 (__v2di) __B,
5090 (__v8di)
5091 _mm512_setzero_si512 (),
5092 (__mmask8) __U);
5093}
5094
5095static __inline__ __m512i __DEFAULT_FN_ATTRS
5096_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5097{
5098 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5099 (__v16si) __Y,
5100 (__v16si)
5101 _mm512_setzero_si512 (),
5102 (__mmask16) -1);
5103}
5104
5105static __inline__ __m512i __DEFAULT_FN_ATTRS
5106_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5107{
5108 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5109 (__v16si) __Y,
5110 (__v16si) __W,
5111 (__mmask16) __U);
5112}
5113
5114static __inline__ __m512i __DEFAULT_FN_ATTRS
5115_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5116{
5117 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5118 (__v16si) __Y,
5119 (__v16si)
5120 _mm512_setzero_si512 (),
5121 (__mmask16) __U);
5122}
5123
5124static __inline__ __m512i __DEFAULT_FN_ATTRS
5125_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5126{
5127 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5128 (__v8di) __Y,
5129 (__v8di)
5130 _mm512_undefined_pd (),
5131 (__mmask8) -1);
5132}
5133
5134static __inline__ __m512i __DEFAULT_FN_ATTRS
5135_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5136{
5137 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5138 (__v8di) __Y,
5139 (__v8di) __W,
5140 (__mmask8) __U);
5141}
5142
5143static __inline__ __m512i __DEFAULT_FN_ATTRS
5144_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5145{
5146 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5147 (__v8di) __Y,
5148 (__v8di)
5149 _mm512_setzero_si512 (),
5150 (__mmask8) __U);
5151}
5152
5153static __inline__ __m512i __DEFAULT_FN_ATTRS
5154_mm512_sra_epi32 (__m512i __A, __m128i __B)
5155{
5156 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5157 (__v4si) __B,
5158 (__v16si)
5159 _mm512_setzero_si512 (),
5160 (__mmask16) -1);
5161}
5162
5163static __inline__ __m512i __DEFAULT_FN_ATTRS
5164_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5165{
5166 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5167 (__v4si) __B,
5168 (__v16si) __W,
5169 (__mmask16) __U);
5170}
5171
5172static __inline__ __m512i __DEFAULT_FN_ATTRS
5173_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5174{
5175 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5176 (__v4si) __B,
5177 (__v16si)
5178 _mm512_setzero_si512 (),
5179 (__mmask16) __U);
5180}
5181
5182static __inline__ __m512i __DEFAULT_FN_ATTRS
5183_mm512_sra_epi64 (__m512i __A, __m128i __B)
5184{
5185 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5186 (__v2di) __B,
5187 (__v8di)
5188 _mm512_setzero_si512 (),
5189 (__mmask8) -1);
5190}
5191
5192static __inline__ __m512i __DEFAULT_FN_ATTRS
5193_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5194{
5195 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5196 (__v2di) __B,
5197 (__v8di) __W,
5198 (__mmask8) __U);
5199}
5200
5201static __inline__ __m512i __DEFAULT_FN_ATTRS
5202_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5203{
5204 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5205 (__v2di) __B,
5206 (__v8di)
5207 _mm512_setzero_si512 (),
5208 (__mmask8) __U);
5209}
5210
5211static __inline__ __m512i __DEFAULT_FN_ATTRS
5212_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5213{
5214 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5215 (__v16si) __Y,
5216 (__v16si)
5217 _mm512_setzero_si512 (),
5218 (__mmask16) -1);
5219}
5220
5221static __inline__ __m512i __DEFAULT_FN_ATTRS
5222_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5223{
5224 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5225 (__v16si) __Y,
5226 (__v16si) __W,
5227 (__mmask16) __U);
5228}
5229
5230static __inline__ __m512i __DEFAULT_FN_ATTRS
5231_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5232{
5233 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5234 (__v16si) __Y,
5235 (__v16si)
5236 _mm512_setzero_si512 (),
5237 (__mmask16) __U);
5238}
5239
5240static __inline__ __m512i __DEFAULT_FN_ATTRS
5241_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5242{
5243 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5244 (__v8di) __Y,
5245 (__v8di)
5246 _mm512_setzero_si512 (),
5247 (__mmask8) -1);
5248}
5249
5250static __inline__ __m512i __DEFAULT_FN_ATTRS
5251_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5252{
5253 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5254 (__v8di) __Y,
5255 (__v8di) __W,
5256 (__mmask8) __U);
5257}
5258
5259static __inline__ __m512i __DEFAULT_FN_ATTRS
5260_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5261{
5262 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5263 (__v8di) __Y,
5264 (__v8di)
5265 _mm512_setzero_si512 (),
5266 (__mmask8) __U);
5267}
5268
5269static __inline__ __m512i __DEFAULT_FN_ATTRS
5270_mm512_srl_epi32 (__m512i __A, __m128i __B)
5271{
5272 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5273 (__v4si) __B,
5274 (__v16si)
5275 _mm512_setzero_si512 (),
5276 (__mmask16) -1);
5277}
5278
5279static __inline__ __m512i __DEFAULT_FN_ATTRS
5280_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5281{
5282 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5283 (__v4si) __B,
5284 (__v16si) __W,
5285 (__mmask16) __U);
5286}
5287
5288static __inline__ __m512i __DEFAULT_FN_ATTRS
5289_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5290{
5291 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5292 (__v4si) __B,
5293 (__v16si)
5294 _mm512_setzero_si512 (),
5295 (__mmask16) __U);
5296}
5297
5298static __inline__ __m512i __DEFAULT_FN_ATTRS
5299_mm512_srl_epi64 (__m512i __A, __m128i __B)
5300{
5301 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5302 (__v2di) __B,
5303 (__v8di)
5304 _mm512_setzero_si512 (),
5305 (__mmask8) -1);
5306}
5307
5308static __inline__ __m512i __DEFAULT_FN_ATTRS
5309_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5310{
5311 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5312 (__v2di) __B,
5313 (__v8di) __W,
5314 (__mmask8) __U);
5315}
5316
5317static __inline__ __m512i __DEFAULT_FN_ATTRS
5318_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5319{
5320 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5321 (__v2di) __B,
5322 (__v8di)
5323 _mm512_setzero_si512 (),
5324 (__mmask8) __U);
5325}
5326
5327static __inline__ __m512i __DEFAULT_FN_ATTRS
5328_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5329{
5330 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5331 (__v16si) __Y,
5332 (__v16si)
5333 _mm512_setzero_si512 (),
5334 (__mmask16) -1);
5335}
5336
5337static __inline__ __m512i __DEFAULT_FN_ATTRS
5338_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5339{
5340 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5341 (__v16si) __Y,
5342 (__v16si) __W,
5343 (__mmask16) __U);
5344}
5345
5346static __inline__ __m512i __DEFAULT_FN_ATTRS
5347_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5348{
5349 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5350 (__v16si) __Y,
5351 (__v16si)
5352 _mm512_setzero_si512 (),
5353 (__mmask16) __U);
5354}
5355
5356static __inline__ __m512i __DEFAULT_FN_ATTRS
5357_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5358{
5359 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5360 (__v8di) __Y,
5361 (__v8di)
5362 _mm512_setzero_si512 (),
5363 (__mmask8) -1);
5364}
5365
5366static __inline__ __m512i __DEFAULT_FN_ATTRS
5367_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5368{
5369 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5370 (__v8di) __Y,
5371 (__v8di) __W,
5372 (__mmask8) __U);
5373}
5374
5375static __inline__ __m512i __DEFAULT_FN_ATTRS
5376_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5377{
5378 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5379 (__v8di) __Y,
5380 (__v8di)
5381 _mm512_setzero_si512 (),
5382 (__mmask8) __U);
5383}
5384
5385#define _mm512_ternarylogic_epi32( __A, __B, __C, imm) __extension__ ({ \
5386__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
5387 (__v16si)( __B),\
5388 (__v16si)( __C),\
5389 ( imm), (__mmask16) -1);\
5390})
5391
5392#define _mm512_mask_ternarylogic_epi32( __A, __U, __B, __C, imm) __extension__ ({ \
5393__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
5394 (__v16si)( __B),\
5395 (__v16si)( __C),\
5396 ( imm), (__mmask16)( __U));\
5397})
5398
5399#define _mm512_maskz_ternarylogic_epi32( __U, __A, __B, __C, imm) __extension__ ({ \
5400__builtin_ia32_pternlogd512_maskz ((__v16si)( __A),\
5401 (__v16si)( __B),\
5402 (__v16si)( __C),\
5403 ( imm), (__mmask16)( __U));\
5404})
5405
5406#define _mm512_ternarylogic_epi64( __A, __B, __C, imm) __extension__ ({ \
5407__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
5408 (__v8di)( __B),\
5409 (__v8di)( __C),( imm),\
5410 (__mmask8) -1);\
5411})
5412
5413#define _mm512_mask_ternarylogic_epi64( __A, __U, __B, __C, imm) __extension__ ({ \
5414__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
5415 (__v8di)( __B),\
5416 (__v8di)( __C),( imm),\
5417 (__mmask8)( __U));\
5418})
5419
5420#define _mm512_maskz_ternarylogic_epi64( __U, __A, __B, __C, imm) __extension__ ({ \
5421__builtin_ia32_pternlogq512_maskz ((__v8di)( __A),\
5422 (__v8di)( __B),\
5423 (__v8di)( __C),\
5424 ( imm), (__mmask8)( __U));\
5425})
5426
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005427static __inline__ __m512d __DEFAULT_FN_ATTRS
5428_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5429{
5430 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5431 (__v8df) __B,
5432 (__v8df)
5433 _mm512_setzero_pd (),
5434 (__mmask8) __U);
5435}
5436
5437static __inline__ __m512 __DEFAULT_FN_ATTRS
5438_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5439{
5440 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5441 (__v16sf) __B,
5442 (__v16sf) __W,
5443 (__mmask16) __U);
5444}
5445
5446static __inline__ __m512 __DEFAULT_FN_ATTRS
5447_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5448{
5449 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5450 (__v16sf) __B,
5451 (__v16sf)
5452 _mm512_setzero_ps (),
5453 (__mmask16) __U);
5454}
5455
5456static __inline__ __m512d __DEFAULT_FN_ATTRS
5457_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5458{
5459 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5460 (__v8df) __B,
5461 (__v8df) __W,
5462 (__mmask8) __U);
5463}
5464
5465static __inline__ __m512d __DEFAULT_FN_ATTRS
5466_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5467{
5468 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5469 (__v8df) __B,
5470 (__v8df)
5471 _mm512_setzero_pd (),
5472 (__mmask8) __U);
5473}
5474
5475static __inline__ __m512 __DEFAULT_FN_ATTRS
5476_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5477{
5478 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5479 (__v16sf) __B,
5480 (__v16sf) __W,
5481 (__mmask16) __U);
5482}
5483
5484static __inline__ __m512 __DEFAULT_FN_ATTRS
5485_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5486{
5487 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5488 (__v16sf) __B,
5489 (__v16sf)
5490 _mm512_setzero_ps (),
5491 (__mmask16) __U);
5492}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005493
Michael Zuckerman8d161992016-04-10 17:24:03 +00005494#define _mm_cvt_roundsd_i64( __A, __R) __extension__ ({ \
5495__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
5496})
5497
5498#define _mm_cvt_roundsd_si32( __A, __R) __extension__ ({ \
5499__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
5500})
5501
5502#define _mm_cvt_roundsd_i32( __A, __R) __extension__ ({ \
5503__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
5504})
5505
5506#define _mm_cvt_roundsd_u32( __A, __R) __extension__ ({ \
5507__builtin_ia32_vcvtsd2usi32 ((__v2df)( __A),( __R));\
5508})
5509
5510static __inline__ unsigned __DEFAULT_FN_ATTRS
5511_mm_cvtsd_u32 (__m128d __A)
5512{
5513 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5514 _MM_FROUND_CUR_DIRECTION);
5515}
5516
5517#define _mm_cvt_roundsd_u64( __A, __R) __extension__ ({ \
5518__builtin_ia32_vcvtsd2usi64 ((__v2df)( __A),( __R));\
5519})
5520
5521static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5522_mm_cvtsd_u64 (__m128d __A)
5523{
5524 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5525 __A,
5526 _MM_FROUND_CUR_DIRECTION);
5527}
5528
5529#define _mm_cvt_roundss_si32( __A, __R) __extension__ ({ \
5530__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
5531})
5532
5533#define _mm_cvt_roundss_i32( __A, __R) __extension__ ({ \
5534__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
5535})
5536
5537#define _mm_cvt_roundss_si64( __A, __R) __extension__ ({ \
5538__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
5539})
5540
5541#define _mm_cvt_roundss_i64( __A, __R) __extension__ ({ \
5542__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
5543})
5544
5545#define _mm_cvt_roundss_u32( __A, __R) __extension__ ({ \
5546__builtin_ia32_vcvtss2usi32 ((__v4sf)( __A),( __R));\
5547})
5548
5549static __inline__ unsigned __DEFAULT_FN_ATTRS
5550_mm_cvtss_u32 (__m128 __A)
5551{
5552 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5553 _MM_FROUND_CUR_DIRECTION);
5554}
5555
5556#define _mm_cvt_roundss_u64( __A, __R) __extension__ ({ \
5557__builtin_ia32_vcvtss2usi64 ((__v4sf)( __A),( __R));\
5558})
5559
5560static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5561_mm_cvtss_u64 (__m128 __A)
5562{
5563 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5564 __A,
5565 _MM_FROUND_CUR_DIRECTION);
5566}
5567
5568#define _mm_cvtt_roundsd_i32( __A, __R) __extension__ ({ \
5569__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
5570})
5571
5572#define _mm_cvtt_roundsd_si32( __A, __R) __extension__ ({ \
5573__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
5574})
5575
5576static __inline__ int __DEFAULT_FN_ATTRS
5577_mm_cvttsd_i32 (__m128d __A)
5578{
5579 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
5580 _MM_FROUND_CUR_DIRECTION);
5581}
5582
5583#define _mm_cvtt_roundsd_si64( __A, __R) __extension__ ({ \
5584__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
5585})
5586
5587#define _mm_cvtt_roundsd_i64( __A, __R) __extension__ ({ \
5588__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
5589})
5590
5591static __inline__ long long __DEFAULT_FN_ATTRS
5592_mm_cvttsd_i64 (__m128d __A)
5593{
5594 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
5595 _MM_FROUND_CUR_DIRECTION);
5596}
5597
5598#define _mm_cvtt_roundsd_u32( __A, __R) __extension__ ({ \
5599__builtin_ia32_vcvttsd2usi32 ((__v2df)( __A),( __R));\
5600})
5601
5602static __inline__ unsigned __DEFAULT_FN_ATTRS
5603_mm_cvttsd_u32 (__m128d __A)
5604{
5605 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
5606 _MM_FROUND_CUR_DIRECTION);
5607}
5608
5609#define _mm_cvtt_roundsd_u64( __A, __R) __extension__ ({ \
5610__builtin_ia32_vcvttsd2usi64 ((__v2df)( __A),( __R));\
5611})
5612
5613static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5614_mm_cvttsd_u64 (__m128d __A)
5615{
5616 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
5617 __A,
5618 _MM_FROUND_CUR_DIRECTION);
5619}
5620
5621#define _mm_cvtt_roundss_i32( __A, __R) __extension__ ({ \
5622__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
5623})
5624
5625#define _mm_cvtt_roundss_si32( __A, __R) __extension__ ({ \
5626__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
5627})
5628
5629static __inline__ int __DEFAULT_FN_ATTRS
5630_mm_cvttss_i32 (__m128 __A)
5631{
5632 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
5633 _MM_FROUND_CUR_DIRECTION);
5634}
5635
5636#define _mm_cvtt_roundss_i64( __A, __R) __extension__ ({ \
5637__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
5638})
5639
5640#define _mm_cvtt_roundss_si64( __A, __R) __extension__ ({ \
5641__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
5642})
5643
5644static __inline__ long long __DEFAULT_FN_ATTRS
5645_mm_cvttss_i64 (__m128 __A)
5646{
5647 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
5648 _MM_FROUND_CUR_DIRECTION);
5649}
5650
5651#define _mm_cvtt_roundss_u32( __A, __R) __extension__ ({ \
5652__builtin_ia32_vcvttss2usi32 ((__v4sf)( __A),( __R));\
5653})
5654
5655static __inline__ unsigned __DEFAULT_FN_ATTRS
5656_mm_cvttss_u32 (__m128 __A)
5657{
5658 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
5659 _MM_FROUND_CUR_DIRECTION);
5660}
5661
5662#define _mm_cvtt_roundss_u64( __A, __R) __extension__ ({ \
5663__builtin_ia32_vcvttss2usi64 ((__v4sf)( __A),( __R));\
5664})
5665
5666static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5667_mm_cvttss_u64 (__m128 __A)
5668{
5669 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
5670 __A,
5671 _MM_FROUND_CUR_DIRECTION);
5672}
5673
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005674static __inline__ __m512d __DEFAULT_FN_ATTRS
5675_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
5676 __m512d __B)
5677{
5678 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
5679 (__v8di) __I
5680 /* idx */ ,
5681 (__v8df) __B,
5682 (__mmask8) __U);
5683}
5684
5685static __inline__ __m512 __DEFAULT_FN_ATTRS
5686_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
5687 __m512 __B)
5688{
5689 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
5690 (__v16si) __I
5691 /* idx */ ,
5692 (__v16sf) __B,
5693 (__mmask16) __U);
5694}
5695
5696static __inline__ __m512i __DEFAULT_FN_ATTRS
5697_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
5698 __mmask8 __U, __m512i __B)
5699{
5700 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
5701 (__v8di) __I
5702 /* idx */ ,
5703 (__v8di) __B,
5704 (__mmask8) __U);
5705}
5706
5707#define _mm512_permute_pd( __X, __C) __extension__ ({ \
5708__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5709 (__v8df)\
5710 _mm512_undefined_pd (),\
5711 (__mmask8) -1);\
5712})
5713
5714#define _mm512_mask_permute_pd( __W, __U, __X, __C) __extension__ ({ \
5715__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5716 (__v8df)( __W),\
5717 (__mmask8)( __U));\
5718})
5719
5720#define _mm512_maskz_permute_pd( __U, __X, __C) __extension__ ({ \
5721__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5722 (__v8df)\
5723 _mm512_setzero_pd (),\
5724 (__mmask8)( __U));\
5725})
5726
5727#define _mm512_permute_ps( __X, __C) __extension__ ({ \
5728__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5729 (__v16sf)\
5730 _mm512_undefined_ps (),\
5731 (__mmask16) -1);\
5732})
5733
5734#define _mm512_mask_permute_ps( __W, __U, __X, __C) __extension__ ({ \
5735__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5736 (__v16sf)( __W),\
5737 (__mmask16)( __U));\
5738})
5739
5740#define _mm512_maskz_permute_ps( __U, __X, __C) __extension__ ({ \
5741__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5742 (__v16sf)\
5743 _mm512_setzero_ps (),\
5744 (__mmask16)( __U));\
5745})
5746
5747static __inline__ __m512d __DEFAULT_FN_ATTRS
5748_mm512_permutevar_pd (__m512d __A, __m512i __C)
5749{
5750 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5751 (__v8di) __C,
5752 (__v8df)
5753 _mm512_undefined_pd (),
5754 (__mmask8) -1);
5755}
5756
5757static __inline__ __m512d __DEFAULT_FN_ATTRS
5758_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
5759{
5760 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5761 (__v8di) __C,
5762 (__v8df) __W,
5763 (__mmask8) __U);
5764}
5765
5766static __inline__ __m512d __DEFAULT_FN_ATTRS
5767_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
5768{
5769 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5770 (__v8di) __C,
5771 (__v8df)
5772 _mm512_setzero_pd (),
5773 (__mmask8) __U);
5774}
5775
5776static __inline__ __m512 __DEFAULT_FN_ATTRS
5777_mm512_permutevar_ps (__m512 __A, __m512i __C)
5778{
5779 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5780 (__v16si) __C,
5781 (__v16sf)
5782 _mm512_undefined_ps (),
5783 (__mmask16) -1);
5784}
5785
5786static __inline__ __m512 __DEFAULT_FN_ATTRS
5787_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
5788{
5789 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5790 (__v16si) __C,
5791 (__v16sf) __W,
5792 (__mmask16) __U);
5793}
5794
5795static __inline__ __m512 __DEFAULT_FN_ATTRS
5796_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
5797{
5798 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5799 (__v16si) __C,
5800 (__v16sf)
5801 _mm512_setzero_ps (),
5802 (__mmask16) __U);
5803}
5804
5805static __inline__ __m512i __DEFAULT_FN_ATTRS
5806_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
5807 __m512i __I, __m512i __B)
5808{
5809 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
5810 /* idx */ ,
5811 (__v16si) __A,
5812 (__v16si) __B,
5813 (__mmask16) __U);
5814}
5815
5816static __inline__ __m512d __DEFAULT_FN_ATTRS
5817_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
5818 __m512d __B)
5819{
5820 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
5821 /* idx */ ,
5822 (__v8df) __A,
5823 (__v8df) __B,
5824 (__mmask8) __U);
5825}
5826
5827static __inline__ __m512 __DEFAULT_FN_ATTRS
5828_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
5829 __m512 __B)
5830{
5831 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
5832 /* idx */ ,
5833 (__v16sf) __A,
5834 (__v16sf) __B,
5835 (__mmask16) __U);
5836}
5837
5838static __inline__ __m512i __DEFAULT_FN_ATTRS
5839_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
5840 __m512i __I, __m512i __B)
5841{
5842 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
5843 /* idx */ ,
5844 (__v8di) __A,
5845 (__v8di) __B,
5846 (__mmask8) __U);
5847}
5848
Michael Zuckerman07525092016-04-11 10:22:07 +00005849static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5850_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
5851{
5852 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5853 (__v16si) __B,
5854 (__mmask16) -1);
5855}
5856
5857static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5858_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5859{
5860 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5861 (__v16si) __B, __U);
5862}
5863
5864static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5865_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
5866{
5867 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5868 (__v8di) __B,
5869 (__mmask8) -1);
5870}
5871
5872static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5873_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5874{
5875 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5876 (__v8di) __B, __U);
5877}
5878
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00005879#define _mm512_cvtt_roundpd_epu32( __A, __R) __extension__ ({ \
5880__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
5881 (__v8si)\
5882 _mm256_undefined_si256 (),\
5883 (__mmask8) -1,( __R));\
5884})
5885
5886#define _mm512_mask_cvtt_roundpd_epu32( __W, __U, __A, __R) __extension__ ({ \
5887__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
5888 (__v8si)( __W),\
5889 (__mmask8)( __U),( __R));\
5890})
5891
5892#define _mm512_maskz_cvtt_roundpd_epu32( __U, __A, __R) __extension__ ({ \
5893__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
5894 (__v8si)\
5895 _mm256_setzero_si256 (),\
5896 (__mmask8)( __U),( __R));\
5897})
5898
5899static __inline__ __m256i __DEFAULT_FN_ATTRS
5900_mm512_cvttpd_epu32 (__m512d __A)
5901{
5902 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
5903 (__v8si)
5904 _mm256_undefined_si256 (),
5905 (__mmask8) -1,
5906 _MM_FROUND_CUR_DIRECTION);
5907}
5908
5909static __inline__ __m256i __DEFAULT_FN_ATTRS
5910_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
5911{
5912 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
5913 (__v8si) __W,
5914 (__mmask8) __U,
5915 _MM_FROUND_CUR_DIRECTION);
5916}
5917
5918static __inline__ __m256i __DEFAULT_FN_ATTRS
5919_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
5920{
5921 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
5922 (__v8si)
5923 _mm256_setzero_si256 (),
5924 (__mmask8) __U,
5925 _MM_FROUND_CUR_DIRECTION);
5926}
Michael Zuckerman07525092016-04-11 10:22:07 +00005927
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005928static __inline__ __m512i __DEFAULT_FN_ATTRS
5929_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5930 __m512i __B)
5931{
5932 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5933 (__v16si) __B,
5934 (__v16si) __W,
5935 (__mmask16) __U);
5936}
5937
5938static __inline__ __m512i __DEFAULT_FN_ATTRS
5939_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5940{
5941 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5942 (__v16si) __B,
5943 (__v16si)
5944 _mm512_setzero_si512 (),
5945 (__mmask16) __U);
5946}
5947
5948static __inline__ __m512i __DEFAULT_FN_ATTRS
5949_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
5950{
5951 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5952 (__v8di) __B,
5953 (__v8di)
5954 _mm512_setzero_si512 (),
5955 (__mmask8) -1);
5956}
5957
5958static __inline__ __m512i __DEFAULT_FN_ATTRS
5959_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5960{
5961 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5962 (__v8di) __B,
5963 (__v8di) __W,
5964 (__mmask8) __U);
5965}
5966
5967static __inline__ __m512i __DEFAULT_FN_ATTRS
5968_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5969{
5970 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5971 (__v8di) __B,
5972 (__v8di)
5973 _mm512_setzero_si512 (),
5974 (__mmask8) __U);
5975}
5976
5977static __inline__ __m512i __DEFAULT_FN_ATTRS
5978_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
5979{
5980 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5981 (__v16si) __B,
5982 (__v16si)
5983 _mm512_setzero_si512 (),
5984 (__mmask16) -1);
5985}
5986
5987static __inline__ __m512i __DEFAULT_FN_ATTRS
5988_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5989 __m512i __B)
5990{
5991 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5992 (__v16si) __B,
5993 (__v16si) __W,
5994 (__mmask16) __U);
5995}
5996
5997static __inline__ __m512i __DEFAULT_FN_ATTRS
5998_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5999{
6000 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6001 (__v16si) __B,
6002 (__v16si)
6003 _mm512_setzero_si512 (),
6004 (__mmask16) __U);
6005}
6006
6007static __inline__ __m512i __DEFAULT_FN_ATTRS
6008_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6009{
6010 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6011 (__v8di) __B,
6012 (__v8di)
6013 _mm512_setzero_si512 (),
6014 (__mmask8) -1);
6015}
6016
6017static __inline__ __m512i __DEFAULT_FN_ATTRS
6018_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6019{
6020 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6021 (__v8di) __B,
6022 (__v8di) __W,
6023 (__mmask8) __U);
6024}
6025
6026static __inline__ __m512i __DEFAULT_FN_ATTRS
6027_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6028{
6029 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6030 (__v8di) __B,
6031 (__v8di)
6032 _mm512_setzero_si512 (),
6033 (__mmask8) __U);
6034}
6035
6036#define _mm_roundscale_round_sd( __A, __B, __imm, __R) __extension__ ({ \
6037__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
6038 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6039 (__mmask8) -1,( __imm),( __R));\
6040})
6041
6042#define _mm_roundscale_sd( __A, __B, __imm) __extension__ ({ \
6043__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
6044 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6045 (__mmask8) -1, ( __imm),\
6046 _MM_FROUND_CUR_DIRECTION);\
6047})
6048
6049#define _mm_mask_roundscale_sd( __W, __U, __A, __B, __imm) __extension__ ({ \
6050__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6051 (__v2df)( __B),\
6052 (__v2df)( __W),\
6053 (__mmask8)( __U),\
6054 (__imm),\
6055 _MM_FROUND_CUR_DIRECTION);\
6056})
6057
6058#define _mm_mask_roundscale_round_sd( __W, __U, __A, __B, __I, __R) __extension__ ({ \
6059__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6060 (__v2df)( __B),\
6061 (__v2df)( __W),\
6062 (__mmask8)( __U),\
6063 __I,\
6064 __R);\
6065})
6066
6067#define _mm_maskz_roundscale_sd( __U, __A, __B, __I) __extension__ ({ \
6068__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6069 (__v2df)( __B),\
6070 (__v2df) _mm_setzero_pd (),\
6071 (__mmask8)( __U),\
6072 __I,\
6073 _MM_FROUND_CUR_DIRECTION);\
6074})
6075
6076#define _mm_maskz_roundscale_round_sd( __U, __A, __B, __I, __R) __extension__ ({ \
6077__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6078 (__v2df)( __B),\
6079 (__v2df) _mm_setzero_pd (),\
6080 (__mmask8)( __U),\
6081 __I,\
6082 __R);\
6083})
6084
6085#define _mm_roundscale_round_ss( __A, __B, __imm, __R) __extension__ ({ \
6086__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
6087 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6088 (__mmask8) -1, __imm, __R);\
6089})
6090
6091#define _mm_roundscale_ss( __A, __B, __imm) __extension__ ({ \
6092__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
6093 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6094 (__mmask8) -1, ( __imm),\
6095 _MM_FROUND_CUR_DIRECTION);\
6096})
6097
6098#define _mm_mask_roundscale_ss( __W, __U, __A, __B, __I) __extension__ ({ \
6099__builtin_ia32_rndscaless_round_mask ( (__v4sf) ( __A),\
6100 (__v4sf)( __B),\
6101 (__v4sf)( __W),\
6102 (__mmask8)( __U),\
6103 __I,\
6104 _MM_FROUND_CUR_DIRECTION);\
6105})
6106
6107#define _mm_mask_roundscale_round_ss( __W, __U, __A, __B, __I, __R) __extension__ ({ \
6108__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
6109 (__v4sf)( __B),\
6110 (__v4sf)( __W),\
6111 (__mmask8)( __U),\
6112 __I,\
6113 __R);\
6114})
6115
6116#define _mm_maskz_roundscale_ss( __U, __A, __B, __I) __extension__ ({ \
6117__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
6118 (__v4sf)( __B),\
6119 (__v4sf) _mm_setzero_ps (),\
6120 (__mmask8)( __U),\
6121 __I,\
6122 _MM_FROUND_CUR_DIRECTION);\
6123})
6124
6125#define _mm_maskz_roundscale_round_ss( __U, __A, __B, __I, __R) __extension__ ({ \
6126__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
6127 (__v4sf)( __B),\
6128 (__v4sf) _mm_setzero_ps (),\
6129 (__mmask8)( __U),\
6130 __I,\
6131 __R);\
6132})
6133
6134#define _mm512_scalef_round_pd( __A, __B, __R) __extension__ ({ \
6135__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6136 (__v8df)( __B),\
6137 (__v8df)\
6138 _mm512_undefined_pd (),\
6139 (__mmask8) -1,( __R));\
6140})
6141
6142#define _mm512_mask_scalef_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
6143__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6144 (__v8df)( __B),\
6145 (__v8df)( __W),\
6146 (__mmask8)( __U),( __R));\
6147})
6148
6149#define _mm512_maskz_scalef_round_pd( __U, __A, __B, __R) __extension__ ({ \
6150__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6151 (__v8df)( __B),\
6152 (__v8df)\
6153 _mm512_setzero_pd (),\
6154 (__mmask8)( __U),( __R));\
6155})
6156
6157static __inline__ __m512d __DEFAULT_FN_ATTRS
6158_mm512_scalef_pd (__m512d __A, __m512d __B)
6159{
6160 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6161 (__v8df) __B,
6162 (__v8df)
6163 _mm512_undefined_pd (),
6164 (__mmask8) -1,
6165 _MM_FROUND_CUR_DIRECTION);
6166}
6167
6168static __inline__ __m512d __DEFAULT_FN_ATTRS
6169_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6170{
6171 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6172 (__v8df) __B,
6173 (__v8df) __W,
6174 (__mmask8) __U,
6175 _MM_FROUND_CUR_DIRECTION);
6176}
6177
6178static __inline__ __m512d __DEFAULT_FN_ATTRS
6179_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6180{
6181 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6182 (__v8df) __B,
6183 (__v8df)
6184 _mm512_setzero_pd (),
6185 (__mmask8) __U,
6186 _MM_FROUND_CUR_DIRECTION);
6187}
6188
6189#define _mm512_scalef_round_ps( __A, __B, __R) __extension__ ({ \
6190__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6191 (__v16sf)( __B),\
6192 (__v16sf)\
6193 _mm512_undefined_ps (),\
6194 (__mmask16) -1,( __R));\
6195})
6196
6197#define _mm512_mask_scalef_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
6198__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6199 (__v16sf)( __B),\
6200 (__v16sf)( __W),\
6201 (__mmask16)( __U),( __R));\
6202})
6203
6204#define _mm512_maskz_scalef_round_ps( __U, __A, __B, __R) __extension__ ({ \
6205__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6206 (__v16sf)( __B),\
6207 (__v16sf)\
6208 _mm512_setzero_ps (),\
6209 (__mmask16)( __U),( __R));\
6210})
6211
6212static __inline__ __m512 __DEFAULT_FN_ATTRS
6213_mm512_scalef_ps (__m512 __A, __m512 __B)
6214{
6215 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6216 (__v16sf) __B,
6217 (__v16sf)
6218 _mm512_undefined_ps (),
6219 (__mmask16) -1,
6220 _MM_FROUND_CUR_DIRECTION);
6221}
6222
6223static __inline__ __m512 __DEFAULT_FN_ATTRS
6224_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6225{
6226 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6227 (__v16sf) __B,
6228 (__v16sf) __W,
6229 (__mmask16) __U,
6230 _MM_FROUND_CUR_DIRECTION);
6231}
6232
6233static __inline__ __m512 __DEFAULT_FN_ATTRS
6234_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6235{
6236 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6237 (__v16sf) __B,
6238 (__v16sf)
6239 _mm512_setzero_ps (),
6240 (__mmask16) __U,
6241 _MM_FROUND_CUR_DIRECTION);
6242}
6243
6244#define _mm_scalef_round_sd( __A, __B, __R) __extension__ ({ \
6245__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6246 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6247 (__mmask8) -1,\
6248 ( __R));\
6249})
6250
6251static __inline__ __m128d __DEFAULT_FN_ATTRS
6252_mm_scalef_sd (__m128d __A, __m128d __B)
6253{
6254 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6255 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6256 (__mmask8) -1,
6257 _MM_FROUND_CUR_DIRECTION);
6258}
6259
6260static __inline__ __m128d __DEFAULT_FN_ATTRS
6261_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6262{
6263 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6264 (__v2df) __B,
6265 (__v2df) __W,
6266 (__mmask8) __U,
6267 _MM_FROUND_CUR_DIRECTION);
6268}
6269
6270#define _mm_mask_scalef_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
6271__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6272 (__v2df)( __B), (__v2df) __W,\
6273 (__mmask8) __U,\
6274 ( __R));\
6275})
6276
6277static __inline__ __m128d __DEFAULT_FN_ATTRS
6278_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
6279{
6280 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6281 (__v2df) __B,
6282 (__v2df) _mm_setzero_pd (),
6283 (__mmask8) __U,
6284 _MM_FROUND_CUR_DIRECTION);
6285}
6286
6287#define _mm_maskz_scalef_round_sd( __U, __A, __B, __R) __extension__ ({ \
6288__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6289 (__v2df)( __B), (__v2df) _mm_setzero_pd (),\
6290 (__mmask8) __U,\
6291 ( __R));\
6292})
6293
6294#define _mm_scalef_round_ss( __A, __B, __R) __extension__ ({ \
6295__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6296 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6297 (__mmask8) -1,\
6298 ( __R));\
6299})
6300
6301static __inline__ __m128 __DEFAULT_FN_ATTRS
6302_mm_scalef_ss (__m128 __A, __m128 __B)
6303{
6304 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6305 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6306 (__mmask8) -1,
6307 _MM_FROUND_CUR_DIRECTION);
6308}
6309
6310static __inline__ __m128 __DEFAULT_FN_ATTRS
6311_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6312{
6313 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6314 (__v4sf) __B,
6315 (__v4sf) __W,
6316 (__mmask8) __U,
6317 _MM_FROUND_CUR_DIRECTION);
6318}
6319
6320#define _mm_mask_scalef_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
6321__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6322 (__v4sf)( __B), (__v4sf) __W,\
6323 (__mmask8) __U,\
6324 ( __R));\
6325})
6326
6327static __inline__ __m128 __DEFAULT_FN_ATTRS
6328_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
6329{
6330 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6331 (__v4sf) __B,
6332 (__v4sf) _mm_setzero_ps (),
6333 (__mmask8) __U,
6334 _MM_FROUND_CUR_DIRECTION);
6335}
6336
6337#define _mm_maskz_scalef_round_ss( __U, __A, __B, __R) __extension__ ({ \
6338__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6339 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6340 (__mmask8) __U,\
6341 _MM_FROUND_CUR_DIRECTION);\
6342})
6343
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006344static __inline__ __m512i __DEFAULT_FN_ATTRS
6345_mm512_srai_epi32 (__m512i __A, unsigned int __B)
6346{
6347 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
6348 (__v16si)
6349 _mm512_setzero_si512 (),
6350 (__mmask16) -1);
6351}
6352
6353#define _mm512_mask_srai_epi32( __W, __U, __A, __B) __extension__ ({ \
6354__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
6355 (__v16si)( __W),\
6356 (__mmask16)( __U));\
6357})
6358
6359#define _mm512_maskz_srai_epi32( __U, __A, __B) __extension__ ({ \
6360__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
6361 (__v16si)\
6362 _mm512_setzero_si512 (),\
6363 (__mmask16)( __U));\
6364})
6365
6366#define _mm512_srai_epi64( __A, __B) __extension__ ({ \
6367__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6368 (__v8di)\
6369 _mm512_setzero_si512 (),\
6370 (__mmask8) -1);\
6371})
6372
6373#define _mm512_mask_srai_epi64( __W, __U, __A, __B) __extension__ ({ \
6374__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6375 (__v8di)( __W),\
6376 (__mmask8)( __U));\
6377})
6378
6379#define _mm512_maskz_srai_epi64( __U, __A, __B) __extension__ ({ \
6380__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6381 (__v8di)\
6382 _mm512_setzero_si512 (),\
6383 (__mmask8)( __U));\
6384})
6385
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006386#define _mm512_shuffle_f32x4( __A, __B, __imm) __extension__ ({ \
6387__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6388 (__v16sf)( __B),( __imm),\
6389 (__v16sf)\
6390 _mm512_undefined_ps (),\
6391 (__mmask16) -1);\
6392})
6393
6394#define _mm512_mask_shuffle_f32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6395__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6396 (__v16sf)( __B),( __imm),\
6397 (__v16sf)( __W),\
6398 (__mmask16)( __U));\
6399})
6400
6401#define _mm512_maskz_shuffle_f32x4( __U, __A, __B, __imm) __extension__ ({ \
6402__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6403 (__v16sf)( __B),( __imm),\
6404 (__v16sf)\
6405 _mm512_setzero_ps (),\
6406 (__mmask16)( __U));\
6407})
6408
6409#define _mm512_shuffle_f64x2( __A, __B, __imm) __extension__ ({ \
6410__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6411 (__v8df)( __B),( __imm),\
6412 (__v8df)\
6413 _mm512_undefined_pd (),\
6414 (__mmask8) -1);\
6415})
6416
6417#define _mm512_mask_shuffle_f64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
6418__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6419 (__v8df)( __B),( __imm),\
6420 (__v8df)( __W),\
6421 (__mmask8)( __U));\
6422})
6423
6424#define _mm512_maskz_shuffle_f64x2( __U, __A, __B, __imm) __extension__ ({ \
6425__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6426 (__v8df)( __B),( __imm),\
6427 (__v8df)\
6428 _mm512_setzero_pd (),\
6429 (__mmask8)( __U));\
6430})
6431
6432#define _mm512_shuffle_i32x4( __A, __B, __imm) __extension__ ({ \
6433__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6434 (__v16si)( __B),\
6435 ( __imm),\
6436 (__v16si)\
6437 _mm512_setzero_si512 (),\
6438 (__mmask16) -1);\
6439})
6440
6441#define _mm512_mask_shuffle_i32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6442__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6443 (__v16si)( __B),\
6444 ( __imm),\
6445 (__v16si)( __W),\
6446 (__mmask16)( __U));\
6447})
6448
6449#define _mm512_maskz_shuffle_i32x4( __U, __A, __B, __imm) __extension__ ({ \
6450__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6451 (__v16si)( __B),\
6452 ( __imm),\
6453 (__v16si)\
6454 _mm512_setzero_si512 (),\
6455 (__mmask16)( __U));\
6456})
6457
6458#define _mm512_shuffle_i64x2( __A, __B, __imm) __extension__ ({ \
6459__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6460 (__v8di)( __B),( __imm),\
6461 (__v8di)\
6462 _mm512_setzero_si512 (),\
6463 (__mmask8) -1);\
6464})
6465
6466#define _mm512_mask_shuffle_i64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
6467__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6468 (__v8di)( __B),( __imm),\
6469 (__v8di)( __W),\
6470 (__mmask8)( __U));\
6471})
6472
6473#define _mm512_maskz_shuffle_i64x2( __U, __A, __B, __imm) __extension__ ({ \
6474__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6475 (__v8di)( __B),( __imm),\
6476 (__v8di)\
6477 _mm512_setzero_si512 (),\
6478 (__mmask8)( __U));\
6479})
6480
6481#define _mm512_shuffle_pd( __M, __V, __imm) __extension__ ({ \
6482__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6483 (__v8df)( __V),( __imm),\
6484 (__v8df)\
6485 _mm512_undefined_pd (),\
6486 (__mmask8) -1);\
6487})
6488
6489#define _mm512_mask_shuffle_pd( __W, __U, __M, __V, __imm) __extension__ ({ \
6490__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6491 (__v8df)( __V),( __imm),\
6492 (__v8df)( __W),\
6493 (__mmask8)( __U));\
6494})
6495
6496#define _mm512_maskz_shuffle_pd( __U, __M, __V, __imm) __extension__ ({ \
6497__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6498 (__v8df)( __V),( __imm),\
6499 (__v8df)\
6500 _mm512_setzero_pd (),\
6501 (__mmask8)( __U));\
6502})
6503
6504#define _mm512_shuffle_ps( __M, __V, __imm) __extension__ ({ \
6505__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6506 (__v16sf)( __V),( __imm),\
6507 (__v16sf)\
6508 _mm512_undefined_ps (),\
6509 (__mmask16) -1);\
6510})
6511
6512#define _mm512_mask_shuffle_ps( __W, __U, __M, __V, __imm) __extension__ ({ \
6513__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6514 (__v16sf)( __V),( __imm),\
6515 (__v16sf)( __W),\
6516 (__mmask16)( __U));\
6517})
6518
6519#define _mm512_maskz_shuffle_ps( __U, __M, __V, __imm) __extension__ ({ \
6520__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6521 (__v16sf)( __V),( __imm),\
6522 (__v16sf)\
6523 _mm512_setzero_ps (),\
6524 (__mmask16)( __U));\
6525})
6526
6527#define _mm_sqrt_round_sd( __A, __B, __R) __extension__ ({ \
6528__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6529 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
6530 (__mmask8) -1,\
6531 ( __R));\
6532})
6533
6534static __inline__ __m128d __DEFAULT_FN_ATTRS
6535_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6536{
6537 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6538 (__v2df) __A,
6539 (__v2df) __W,
6540 (__mmask8) __U,
6541 _MM_FROUND_CUR_DIRECTION);
6542}
6543
6544#define _mm_mask_sqrt_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
6545__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6546 (__v2df)( __A),(__v2df) __W,\
6547 (__mmask8) __U,\
6548 ( __R));\
6549})
6550
6551static __inline__ __m128d __DEFAULT_FN_ATTRS
6552_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
6553{
6554 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6555 (__v2df) __A,
6556 (__v2df) _mm_setzero_pd (),
6557 (__mmask8) __U,
6558 _MM_FROUND_CUR_DIRECTION);
6559}
6560
6561#define _mm_maskz_sqrt_round_sd( __U, __A, __B, __R) __extension__ ({ \
6562__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6563 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
6564 (__mmask8) __U,\
6565 ( __R));\
6566})
6567
6568#define _mm_sqrt_round_ss( __A, __B, __R) __extension__ ({ \
6569__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6570 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
6571 (__mmask8) -1,\
6572 ( __R));\
6573})
6574
6575static __inline__ __m128 __DEFAULT_FN_ATTRS
6576_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6577{
6578 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6579 (__v4sf) __A,
6580 (__v4sf) __W,
6581 (__mmask8) __U,
6582 _MM_FROUND_CUR_DIRECTION);
6583}
6584
6585#define _mm_mask_sqrt_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
6586__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6587 (__v4sf)( __A),(__v4sf) __W,\
6588 (__mmask8) __U,\
6589 ( __R));\
6590})
6591
6592static __inline__ __m128 __DEFAULT_FN_ATTRS
6593_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
6594{
6595 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6596 (__v4sf) __B,
6597 (__v4sf) _mm_setzero_ps (),
6598 (__mmask8) __U,
6599 _MM_FROUND_CUR_DIRECTION);
6600}
6601
6602#define _mm_maskz_sqrt_round_ss( __U, __A, __B, __R) __extension__ ({ \
6603__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6604 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
6605 (__mmask8) __U,\
6606 __R);\
6607})
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006608
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006609static __inline__ __m512 __DEFAULT_FN_ATTRS
6610_mm512_broadcast_f32x4 (__m128 __A)
6611{
6612 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6613 (__v16sf)
6614 _mm512_undefined_ps (),
6615 (__mmask16) -1);
6616}
6617
6618static __inline__ __m512 __DEFAULT_FN_ATTRS
6619_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6620{
6621 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6622 (__v16sf) __O,
6623 __M);
6624}
6625
6626static __inline__ __m512 __DEFAULT_FN_ATTRS
6627_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6628{
6629 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6630 (__v16sf)
6631 _mm512_setzero_ps (),
6632 __M);
6633}
6634
6635static __inline__ __m512d __DEFAULT_FN_ATTRS
6636_mm512_broadcast_f64x4 (__m256d __A)
6637{
6638 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6639 (__v8df)
6640 _mm512_undefined_pd (),
6641 (__mmask8) -1);
6642}
6643
6644static __inline__ __m512d __DEFAULT_FN_ATTRS
6645_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6646{
6647 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6648 (__v8df) __O,
6649 __M);
6650}
6651
6652static __inline__ __m512d __DEFAULT_FN_ATTRS
6653_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6654{
6655 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6656 (__v8df)
6657 _mm512_setzero_pd (),
6658 __M);
6659}
6660
6661static __inline__ __m512i __DEFAULT_FN_ATTRS
6662_mm512_broadcast_i32x4 (__m128i __A)
6663{
6664 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6665 (__v16si)
6666 _mm512_undefined_epi32 (),
6667 (__mmask16) -1);
6668}
6669
6670static __inline__ __m512i __DEFAULT_FN_ATTRS
6671_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
6672{
6673 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6674 (__v16si) __O,
6675 __M);
6676}
6677
6678static __inline__ __m512i __DEFAULT_FN_ATTRS
6679_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
6680{
6681 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6682 (__v16si)
6683 _mm512_setzero_si512 (),
6684 __M);
6685}
6686
6687static __inline__ __m512i __DEFAULT_FN_ATTRS
6688_mm512_broadcast_i64x4 (__m256i __A)
6689{
6690 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6691 (__v8di)
6692 _mm512_undefined_epi32 (),
6693 (__mmask8) -1);
6694}
6695
6696static __inline__ __m512i __DEFAULT_FN_ATTRS
6697_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
6698{
6699 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6700 (__v8di) __O,
6701 __M);
6702}
6703
6704static __inline__ __m512i __DEFAULT_FN_ATTRS
6705_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
6706{
6707 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6708 (__v8di)
6709 _mm512_setzero_si512 (),
6710 __M);
6711}
6712
6713static __inline__ __m512d __DEFAULT_FN_ATTRS
6714_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
6715{
6716 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6717 (__v8df) __O, __M);
6718}
6719
6720static __inline__ __m512d __DEFAULT_FN_ATTRS
6721_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6722{
6723 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6724 (__v8df)
6725 _mm512_setzero_pd (),
6726 __M);
6727}
6728
6729static __inline__ __m512 __DEFAULT_FN_ATTRS
6730_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
6731{
6732 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6733 (__v16sf) __O, __M);
6734}
6735
6736static __inline__ __m512 __DEFAULT_FN_ATTRS
6737_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
6738{
6739 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6740 (__v16sf)
6741 _mm512_setzero_ps (),
6742 __M);
6743}
6744
Michael Zuckermane1680612016-04-13 15:02:04 +00006745static __inline__ __m128i __DEFAULT_FN_ATTRS
6746_mm512_cvtsepi32_epi8 (__m512i __A)
6747{
6748 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6749 (__v16qi) _mm_undefined_si128 (),
6750 (__mmask16) -1);
6751}
6752
6753static __inline__ __m128i __DEFAULT_FN_ATTRS
6754_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6755{
6756 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6757 (__v16qi) __O, __M);
6758}
6759
6760static __inline__ __m128i __DEFAULT_FN_ATTRS
6761_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
6762{
6763 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6764 (__v16qi) _mm_setzero_si128 (),
6765 __M);
6766}
6767
6768static __inline__ void __DEFAULT_FN_ATTRS
6769_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6770{
6771 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6772}
6773
6774static __inline__ __m256i __DEFAULT_FN_ATTRS
6775_mm512_cvtsepi32_epi16 (__m512i __A)
6776{
6777 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6778 (__v16hi) _mm256_undefined_si256 (),
6779 (__mmask16) -1);
6780}
6781
6782static __inline__ __m256i __DEFAULT_FN_ATTRS
6783_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6784{
6785 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6786 (__v16hi) __O, __M);
6787}
6788
6789static __inline__ __m256i __DEFAULT_FN_ATTRS
6790_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
6791{
6792 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6793 (__v16hi) _mm256_setzero_si256 (),
6794 __M);
6795}
6796
6797static __inline__ void __DEFAULT_FN_ATTRS
6798_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6799{
6800 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6801}
6802
6803static __inline__ __m128i __DEFAULT_FN_ATTRS
6804_mm512_cvtsepi64_epi8 (__m512i __A)
6805{
6806 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6807 (__v16qi) _mm_undefined_si128 (),
6808 (__mmask8) -1);
6809}
6810
6811static __inline__ __m128i __DEFAULT_FN_ATTRS
6812_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6813{
6814 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6815 (__v16qi) __O, __M);
6816}
6817
6818static __inline__ __m128i __DEFAULT_FN_ATTRS
6819_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
6820{
6821 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6822 (__v16qi) _mm_setzero_si128 (),
6823 __M);
6824}
6825
6826static __inline__ void __DEFAULT_FN_ATTRS
6827_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6828{
6829 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6830}
6831
6832static __inline__ __m256i __DEFAULT_FN_ATTRS
6833_mm512_cvtsepi64_epi32 (__m512i __A)
6834{
6835 __v8si __O;
6836 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6837 (__v8si) _mm256_undefined_si256 (),
6838 (__mmask8) -1);
6839}
6840
6841static __inline__ __m256i __DEFAULT_FN_ATTRS
6842_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6843{
6844 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6845 (__v8si) __O, __M);
6846}
6847
6848static __inline__ __m256i __DEFAULT_FN_ATTRS
6849_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
6850{
6851 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6852 (__v8si) _mm256_setzero_si256 (),
6853 __M);
6854}
6855
6856static __inline__ void __DEFAULT_FN_ATTRS
6857_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
6858{
6859 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
6860}
6861
6862static __inline__ __m128i __DEFAULT_FN_ATTRS
6863_mm512_cvtsepi64_epi16 (__m512i __A)
6864{
6865 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6866 (__v8hi) _mm_undefined_si128 (),
6867 (__mmask8) -1);
6868}
6869
6870static __inline__ __m128i __DEFAULT_FN_ATTRS
6871_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6872{
6873 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6874 (__v8hi) __O, __M);
6875}
6876
6877static __inline__ __m128i __DEFAULT_FN_ATTRS
6878_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
6879{
6880 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6881 (__v8hi) _mm_setzero_si128 (),
6882 __M);
6883}
6884
6885static __inline__ void __DEFAULT_FN_ATTRS
6886_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
6887{
6888 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
6889}
6890
Michael Zuckermand8715312016-04-14 06:48:09 +00006891static __inline__ __m128i __DEFAULT_FN_ATTRS
6892_mm512_cvtusepi32_epi8 (__m512i __A)
6893{
6894 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6895 (__v16qi) _mm_undefined_si128 (),
6896 (__mmask16) -1);
6897}
6898
6899static __inline__ __m128i __DEFAULT_FN_ATTRS
6900_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6901{
6902 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6903 (__v16qi) __O,
6904 __M);
6905}
6906
6907static __inline__ __m128i __DEFAULT_FN_ATTRS
6908_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
6909{
6910 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6911 (__v16qi) _mm_setzero_si128 (),
6912 __M);
6913}
6914
6915static __inline__ void __DEFAULT_FN_ATTRS
6916_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6917{
6918 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6919}
6920
6921static __inline__ __m256i __DEFAULT_FN_ATTRS
6922_mm512_cvtusepi32_epi16 (__m512i __A)
6923{
6924 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6925 (__v16hi) _mm256_undefined_si256 (),
6926 (__mmask16) -1);
6927}
6928
6929static __inline__ __m256i __DEFAULT_FN_ATTRS
6930_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6931{
6932 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6933 (__v16hi) __O,
6934 __M);
6935}
6936
6937static __inline__ __m256i __DEFAULT_FN_ATTRS
6938_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
6939{
6940 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6941 (__v16hi) _mm256_setzero_si256 (),
6942 __M);
6943}
6944
6945static __inline__ void __DEFAULT_FN_ATTRS
6946_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6947{
6948 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6949}
6950
6951static __inline__ __m128i __DEFAULT_FN_ATTRS
6952_mm512_cvtusepi64_epi8 (__m512i __A)
6953{
6954 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6955 (__v16qi) _mm_undefined_si128 (),
6956 (__mmask8) -1);
6957}
6958
6959static __inline__ __m128i __DEFAULT_FN_ATTRS
6960_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6961{
6962 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6963 (__v16qi) __O,
6964 __M);
6965}
6966
6967static __inline__ __m128i __DEFAULT_FN_ATTRS
6968_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
6969{
6970 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6971 (__v16qi) _mm_setzero_si128 (),
6972 __M);
6973}
6974
6975static __inline__ void __DEFAULT_FN_ATTRS
6976_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6977{
6978 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6979}
6980
6981static __inline__ __m256i __DEFAULT_FN_ATTRS
6982_mm512_cvtusepi64_epi32 (__m512i __A)
6983{
6984 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6985 (__v8si) _mm256_undefined_si256 (),
6986 (__mmask8) -1);
6987}
6988
6989static __inline__ __m256i __DEFAULT_FN_ATTRS
6990_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6991{
6992 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6993 (__v8si) __O, __M);
6994}
6995
6996static __inline__ __m256i __DEFAULT_FN_ATTRS
6997_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
6998{
6999 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7000 (__v8si) _mm256_setzero_si256 (),
7001 __M);
7002}
7003
7004static __inline__ void __DEFAULT_FN_ATTRS
7005_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7006{
7007 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7008}
7009
7010static __inline__ __m128i __DEFAULT_FN_ATTRS
7011_mm512_cvtusepi64_epi16 (__m512i __A)
7012{
7013 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7014 (__v8hi) _mm_undefined_si128 (),
7015 (__mmask8) -1);
7016}
7017
7018static __inline__ __m128i __DEFAULT_FN_ATTRS
7019_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7020{
7021 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7022 (__v8hi) __O, __M);
7023}
7024
7025static __inline__ __m128i __DEFAULT_FN_ATTRS
7026_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7027{
7028 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7029 (__v8hi) _mm_setzero_si128 (),
7030 __M);
7031}
7032
7033static __inline__ void __DEFAULT_FN_ATTRS
7034_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7035{
7036 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7037}
7038
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007039static __inline__ __m128i __DEFAULT_FN_ATTRS
7040_mm512_cvtepi32_epi8 (__m512i __A)
7041{
7042 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7043 (__v16qi) _mm_undefined_si128 (),
7044 (__mmask16) -1);
7045}
7046
7047static __inline__ __m128i __DEFAULT_FN_ATTRS
7048_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7049{
7050 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7051 (__v16qi) __O, __M);
7052}
7053
7054static __inline__ __m128i __DEFAULT_FN_ATTRS
7055_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7056{
7057 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7058 (__v16qi) _mm_setzero_si128 (),
7059 __M);
7060}
7061
7062static __inline__ void __DEFAULT_FN_ATTRS
7063_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7064{
7065 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7066}
7067
7068static __inline__ __m256i __DEFAULT_FN_ATTRS
7069_mm512_cvtepi32_epi16 (__m512i __A)
7070{
7071 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7072 (__v16hi) _mm256_undefined_si256 (),
7073 (__mmask16) -1);
7074}
7075
7076static __inline__ __m256i __DEFAULT_FN_ATTRS
7077_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7078{
7079 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7080 (__v16hi) __O, __M);
7081}
7082
7083static __inline__ __m256i __DEFAULT_FN_ATTRS
7084_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7085{
7086 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7087 (__v16hi) _mm256_setzero_si256 (),
7088 __M);
7089}
7090
7091static __inline__ void __DEFAULT_FN_ATTRS
7092_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7093{
7094 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7095}
7096
7097static __inline__ __m128i __DEFAULT_FN_ATTRS
7098_mm512_cvtepi64_epi8 (__m512i __A)
7099{
7100 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7101 (__v16qi) _mm_undefined_si128 (),
7102 (__mmask8) -1);
7103}
7104
7105static __inline__ __m128i __DEFAULT_FN_ATTRS
7106_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7107{
7108 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7109 (__v16qi) __O, __M);
7110}
7111
7112static __inline__ __m128i __DEFAULT_FN_ATTRS
7113_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7114{
7115 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7116 (__v16qi) _mm_setzero_si128 (),
7117 __M);
7118}
7119
7120static __inline__ void __DEFAULT_FN_ATTRS
7121_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7122{
7123 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7124}
7125
7126static __inline__ __m256i __DEFAULT_FN_ATTRS
7127_mm512_cvtepi64_epi32 (__m512i __A)
7128{
7129 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7130 (__v8si) _mm256_undefined_si256 (),
7131 (__mmask8) -1);
7132}
7133
7134static __inline__ __m256i __DEFAULT_FN_ATTRS
7135_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7136{
7137 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7138 (__v8si) __O, __M);
7139}
7140
7141static __inline__ __m256i __DEFAULT_FN_ATTRS
7142_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7143{
7144 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7145 (__v8si) _mm256_setzero_si256 (),
7146 __M);
7147}
7148
7149static __inline__ void __DEFAULT_FN_ATTRS
7150_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7151{
7152 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7153}
7154
7155static __inline__ __m128i __DEFAULT_FN_ATTRS
7156_mm512_cvtepi64_epi16 (__m512i __A)
7157{
7158 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7159 (__v8hi) _mm_undefined_si128 (),
7160 (__mmask8) -1);
7161}
7162
7163static __inline__ __m128i __DEFAULT_FN_ATTRS
7164_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7165{
7166 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7167 (__v8hi) __O, __M);
7168}
7169
7170static __inline__ __m128i __DEFAULT_FN_ATTRS
7171_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7172{
7173 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7174 (__v8hi) _mm_setzero_si128 (),
7175 __M);
7176}
7177
7178static __inline__ void __DEFAULT_FN_ATTRS
7179_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7180{
7181 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7182}
7183
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007184#define _mm512_extracti32x4_epi32( __A, __imm) __extension__ ({ \
7185__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7186 (__imm),\
7187 (__v4si) _mm_undefined_si128 (),\
7188 (__mmask8) -1);\
7189})
7190
7191#define _mm512_mask_extracti32x4_epi32( __W, __U, __A, __imm) __extension__ ({ \
7192__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7193 ( __imm),\
7194 (__v4si)( __W),\
7195 (__mmask8)( __U));\
7196})
7197
7198#define _mm512_maskz_extracti32x4_epi32( __U, __A, __imm) __extension__ ({ \
7199__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7200 ( __imm),\
7201 (__v4si) _mm_setzero_si128 (),\
7202 (__mmask8)( __U));\
7203})
7204
7205#define _mm512_extracti64x4_epi64( __A, __imm) __extension__ ({ \
7206__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7207 ( __imm),\
7208 (__v4di) _mm256_undefined_si256 (),\
7209 (__mmask8) -1);\
7210})
7211
7212#define _mm512_mask_extracti64x4_epi64( __W, __U, __A, __imm) __extension__ ({ \
7213__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7214 ( __imm),\
7215 (__v4di)( __W),\
7216 (__mmask8)( __U));\
7217})
7218
7219#define _mm512_maskz_extracti64x4_epi64( __U, __A, __imm) __extension__ ({ \
7220__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7221 ( __imm),\
7222 (__v4di) _mm256_setzero_si256 (),\
7223 (__mmask8)( __U));\
7224})
7225
7226#define _mm512_insertf64x4( __A, __B, __imm) __extension__ ({ \
7227__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7228 (__v4df)( __B),\
7229 ( __imm),\
7230 (__v8df) _mm512_undefined_pd (),\
7231 (__mmask8) -1);\
7232})
7233
7234#define _mm512_mask_insertf64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7235__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7236 (__v4df)( __B),\
7237 ( __imm),\
7238 (__v8df)( __W),\
7239 (__mmask8)( __U));\
7240})
7241
7242#define _mm512_maskz_insertf64x4( __U, __A, __B, __imm) __extension__ ({ \
7243__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7244 (__v4df)( __B),\
7245 ( __imm),\
7246 (__v8df) _mm512_setzero_pd (),\
7247 (__mmask8)( __U));\
7248})
7249
7250#define _mm512_inserti64x4( __A, __B, __imm) __extension__ ({ \
7251__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7252 (__v4di)( __B),\
7253 ( __imm),\
7254 (__v8di) _mm512_setzero_si512 (),\
7255 (__mmask8) -1);\
7256})
7257
7258#define _mm512_mask_inserti64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7259__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7260 (__v4di)( __B),\
7261 ( __imm),\
7262 (__v8di)( __W),\
7263 (__mmask8)( __U));\
7264})
7265
7266#define _mm512_maskz_inserti64x4( __U, __A, __B, __imm) __extension__ ({ \
7267__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7268 (__v4di)( __B),\
7269 ( __imm),\
7270 (__v8di) _mm512_setzero_si512 (),\
7271 (__mmask8)( __U));\
7272})
7273
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007274#define _mm512_getmant_round_pd( __A, __B, __C, __R) __extension__ ({ \
7275__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7276 (__C << 2) |( __B),\
7277 (__v8df) _mm512_undefined_pd (),\
7278 (__mmask8) -1,( __R));\
7279})
7280
7281#define _mm512_mask_getmant_round_pd( __W, __U, __A, __B, __C, __R) __extension__ ({ \
7282__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7283 (__C << 2) |( __B),\
7284 (__v8df)( __W),(__mmask8)( __U),\
7285 ( __R));\
7286})
7287
7288#define _mm512_maskz_getmant_round_pd( __U, __A, __B, __C, __R) __extension__ ({ \
7289__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7290 (__C << 2) |( __B),\
7291 (__v8df) _mm512_setzero_pd (),\
7292 (__mmask8)( __U),( __R));\
7293})
7294
7295#define _mm512_getmant_pd( __A, __B, __C) __extension__ ({ \
7296__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7297 (__C << 2) |( __B),\
7298 (__v8df) _mm512_setzero_pd (),\
7299 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);\
7300})
7301
7302#define _mm512_mask_getmant_pd( __W, __U, __A, __B, __C) __extension__ ({ \
7303__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7304 (__C << 2) |( __B),\
7305 (__v8df)( __W), (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
7306})
7307
7308#define _mm512_maskz_getmant_pd( __U, __A, __B, __C) __extension__ ({ \
7309__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7310 (__C << 2) |( __B),\
7311 (__v8df) _mm512_setzero_pd (),\
7312 (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
7313})
7314
7315#define _mm512_getmant_round_ps( __A, __B, __C, __R) __extension__ ({ \
7316__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7317 (__C << 2) |( __B),\
7318 (__v16sf) _mm512_undefined_ps (),\
7319 (__mmask16) -1,( __R));\
7320})
7321
7322#define _mm512_mask_getmant_round_ps( __W, __U, __A, __B, __C, __R) __extension__ ({ \
7323__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7324 (__C << 2) |( __B),\
7325 (__v16sf)( __W),(__mmask16)( __U),\
7326 ( __R));\
7327})
7328
7329#define _mm512_maskz_getmant_round_ps( __U, __A, __B, __C, __R) __extension__ ({ \
7330__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7331 (__C << 2) |( __B),\
7332 (__v16sf) _mm512_setzero_ps (),\
7333 ( __U),( __R));\
7334})
7335
7336#define _mm512_getmant_ps( __A, __B, __C) __extension__ ({ \
7337__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7338 (__C << 2) |( __B),\
7339 (__v16sf) _mm512_undefined_ps (),\
7340 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);\
7341})
7342
7343#define _mm512_mask_getmant_ps( __W, __U, __A, __B, __C) __extension__ ({ \
7344__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7345 (__C << 2) |( __B),\
7346 (__v16sf)( __W),(__mmask16) ( __U),\
7347 _MM_FROUND_CUR_DIRECTION);\
7348})
7349
7350#define _mm512_maskz_getmant_ps( __U, __A, __B, __C) __extension__ ({ \
7351__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7352 (__C << 2) |( __B),\
7353 (__v16sf) _mm512_setzero_ps (),\
7354 (__mmask16)( __U),_MM_FROUND_CUR_DIRECTION);\
7355})
7356
7357#define _mm512_getexp_round_pd( __A, __R) __extension__ ({ \
7358__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7359 (__v8df) _mm512_undefined_pd (),\
7360 (__mmask8) -1,( __R));\
7361})
7362
7363#define _mm512_mask_getexp_round_pd( __W, __U, __A, __R) __extension__ ({ \
7364__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7365 (__v8df)( __W),\
7366 (__mmask8)( __U),( __R));\
7367})
7368
7369#define _mm512_maskz_getexp_round_pd( __U, __A, __R) __extension__ ({ \
7370__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7371 (__v8df) _mm512_setzero_pd (),\
7372 (__mmask8)( __U),( __R));\
7373})
7374
7375static __inline__ __m512d __DEFAULT_FN_ATTRS
7376_mm512_getexp_pd (__m512d __A)
7377{
7378 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7379 (__v8df) _mm512_undefined_pd (),
7380 (__mmask8) -1,
7381 _MM_FROUND_CUR_DIRECTION);
7382}
7383
7384static __inline__ __m512d __DEFAULT_FN_ATTRS
7385_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7386{
7387 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7388 (__v8df) __W,
7389 (__mmask8) __U,
7390 _MM_FROUND_CUR_DIRECTION);
7391}
7392
7393static __inline__ __m512d __DEFAULT_FN_ATTRS
7394_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7395{
7396 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7397 (__v8df) _mm512_setzero_pd (),
7398 (__mmask8) __U,
7399 _MM_FROUND_CUR_DIRECTION);
7400}
7401
7402#define _mm512_getexp_round_ps( __A, __R) __extension__ ({ \
7403__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7404 (__v16sf) _mm512_undefined_ps (),\
7405 (__mmask16) -1,( __R));\
7406})
7407
7408#define _mm512_mask_getexp_round_ps( __W, __U, __A, __R) __extension__ ({ \
7409__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7410 (__v16sf)( __W),\
7411 (__mmask16)( __U),( __R));\
7412})
7413
7414#define _mm512_maskz_getexp_round_ps( __U, __A, __R) __extension__ ({ \
7415__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7416 (__v16sf) _mm512_setzero_ps (),\
7417 (__mmask16)( __U),( __R));\
7418})
7419
7420static __inline__ __m512 __DEFAULT_FN_ATTRS
7421_mm512_getexp_ps (__m512 __A)
7422{
7423 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7424 (__v16sf) _mm512_undefined_ps (),
7425 (__mmask16) -1,
7426 _MM_FROUND_CUR_DIRECTION);
7427}
7428
7429static __inline__ __m512 __DEFAULT_FN_ATTRS
7430_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7431{
7432 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7433 (__v16sf) __W,
7434 (__mmask16) __U,
7435 _MM_FROUND_CUR_DIRECTION);
7436}
7437
7438static __inline__ __m512 __DEFAULT_FN_ATTRS
7439_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7440{
7441 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7442 (__v16sf) _mm512_setzero_ps (),
7443 (__mmask16) __U,
7444 _MM_FROUND_CUR_DIRECTION);
7445}
7446
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007447#define _mm512_i64gather_ps( __index, __addr, __scale) __extension__ ({ \
7448__builtin_ia32_gatherdiv16sf ((__v8sf) _mm256_undefined_ps (),\
7449 __addr, (__v8di) __index, (__mmask8) -1, __scale);\
7450})
7451
7452#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7453 __addr, __scale) __extension__({\
7454__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7455 __addr,(__v8di) __index, __mask, __scale);\
7456})
7457
7458#define _mm512_i64gather_epi32(__index, __addr, __scale) __extension__ ({\
7459__builtin_ia32_gatherdiv16si ((__v8si) _mm256_undefined_ps (),\
7460 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7461})
7462
7463#define _mm512_mask_i64gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7464__builtin_ia32_gatherdiv16si ((__v8si) __v1_old,\
7465 __addr, (__v8di) __index, __mask , __scale);\
7466})
7467
7468#define _mm512_i64gather_pd(__index, __addr, __scale) __extension__ ({\
7469__builtin_ia32_gatherdiv8df ((__v8df) _mm512_undefined_pd(),\
7470 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7471})
7472
7473#define _mm512_mask_i64gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7474__builtin_ia32_gatherdiv8df ((__v8df) __v1_old,\
7475 __addr, (__v8di) __index, __mask , __scale);\
7476})
7477
7478#define _mm512_i64gather_epi64(__index, __addr, __scale) __extension__ ({\
7479__builtin_ia32_gatherdiv8di ((__v8di) _mm512_undefined_pd(),\
7480 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7481})
7482
7483#define _mm512_mask_i64gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7484__builtin_ia32_gatherdiv8di ((__v8di) __v1_old,\
7485 __addr, (__v8di) __index, __mask , __scale);\
7486})
7487
7488#define _mm512_i32gather_ps(__index, __addr, __scale) __extension__ ({\
7489__builtin_ia32_gathersiv16sf ((__v16sf) _mm512_undefined_ps(),\
7490 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
7491})
7492
7493#define _mm512_mask_i32gather_ps( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7494__builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,\
7495 __addr, (__v16si) __index, __mask , __scale);\
7496})
7497
7498#define _mm512_i32gather_epi32(__index, __addr, __scale) __extension__ ({\
7499__builtin_ia32_gathersiv16si ((__v16sf) _mm512_undefined_epi32(),\
7500 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
7501})
7502
7503#define _mm512_mask_i32gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7504__builtin_ia32_gathersiv16si ((__v16sf) __v1_old,\
7505 __addr, (__v16si) __index, __mask , __scale);\
7506})
7507
7508#define _mm512_i32gather_pd(__index, __addr, __scale) __extension__ ({\
7509__builtin_ia32_gathersiv8df ((__v8df) _mm512_undefined_pd(),\
7510 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
7511})
7512
7513#define _mm512_mask_i32gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7514__builtin_ia32_gathersiv8df ((__v8df) __v1_old,\
7515 __addr, (__v8si) __index, __mask , __scale);\
7516})
7517
7518#define _mm512_i32gather_epi64(__index, __addr, __scale) __extension__ ({\
7519__builtin_ia32_gathersiv8di ((__v8di) _mm512_undefined_epi32(),\
7520 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
7521})
7522
7523#define _mm512_mask_i32gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7524__builtin_ia32_gathersiv8di ((__v8di) __v1_old,\
7525 __addr, (__v8si) __index, __mask , __scale);\
7526})
7527
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007528#define _mm512_i64scatter_ps(__addr,__index, __v1, __scale) __extension__ ({\
7529__builtin_ia32_scatterdiv16sf(__addr, (__mmask8) -1,\
7530 (__v8di) __index, (__v8sf) __v1, __scale);\
7531})
7532
7533#define _mm512_mask_i64scatter_ps(__addr, __mask,__index, __v1, __scale) __extension__ ({\
7534__builtin_ia32_scatterdiv16sf(__addr, __mask,\
7535 (__v8di) __index, (__v8sf) __v1, __scale);\
7536})
7537
7538#define _mm512_i64scatter_epi32(__addr, __index, __v1, __scale) __extension__ ({\
7539__builtin_ia32_scatterdiv16si (__addr, (__mmask8) -1,\
7540 (__v8di) __index, (__v8si) __v1, __scale);\
7541})
7542
7543#define _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, __scale) __extension__ ({\
7544__builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,\
7545 (__v8si) __v1, __scale);\
7546})
7547
7548#define _mm512_i64scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
7549__builtin_ia32_scatterdiv8df (__addr, (__mmask8) -1,\
7550 (__v8di) __index, (__v8df) __v1, __scale);\
7551})
7552
7553#define _mm512_mask_i64scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7554__builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,\
7555 (__v8df) __v1, __scale);\
7556})
7557
7558#define _mm512_i64scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
7559__builtin_ia32_scatterdiv8di (__addr, (__mmask8) -1,\
7560 (__v8di) __index, (__v8di) __v1, __scale);\
7561})
7562
7563#define _mm512_mask_i64scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7564__builtin_ia32_scatterdiv8di(__addr, __mask, (__v8di) __index,\
7565 (__v8di) __v1, __scale);\
7566})
7567
7568#define _mm512_i32scatter_ps( __addr, __index, __v1, __scale) __extension__ ({\
7569__builtin_ia32_scattersiv16sf (__addr, (__mmask16) -1,\
7570 (__v16si) __index, (__v16sf) __v1, __scale);\
7571})
7572
7573#define _mm512_mask_i32scatter_ps( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7574__builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,\
7575 (__v16sf) __v1, __scale);\
7576})
7577
7578#define _mm512_i32scatter_epi32( __addr, __index, __v1, __scale) __extension__ ({\
7579__builtin_ia32_scattersiv16si (__addr, (__mmask16) -1,\
7580 (__v16si) __index, (__v16si) __v1, __scale);\
7581})
7582
7583#define _mm512_mask_i32scatter_epi32( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7584__builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,\
7585 (__v16si) __v1, __scale);\
7586})
7587
7588#define _mm512_i32scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
7589__builtin_ia32_scattersiv8df (__addr, (__mmask8) -1,\
7590 (__v8si) __index, (__v8df) __v1, __scale);\
7591})
7592
7593#define _mm512_mask_i32scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7594__builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,\
7595 (__v8df) __v1, __scale);\
7596})
7597
7598#define _mm512_i32scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
7599__builtin_ia32_scattersiv8di (__addr, (__mmask8) -1,\
7600 (__v8si) __index, (__v8di) __v1, __scale);\
7601})
7602
7603#define _mm512_mask_i32scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7604__builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,\
7605 (__v8di) __v1, __scale);\
7606})
7607
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007608static __inline__ __m128 __DEFAULT_FN_ATTRS
7609_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7610{
7611 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7612 (__v4sf) __B,
7613 (__v4sf) __W,
7614 (__mmask8) __U,
7615 _MM_FROUND_CUR_DIRECTION);
7616}
7617
7618#define _mm_mask_fmadd_round_ss( __W, __U, __A, __B, __R) __extension__({\
7619__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
7620 (__v4sf) __B,\
7621 (__v4sf) __W,\
7622 (__mmask8) __U,\
7623 __R);\
7624})
7625
7626static __inline__ __m128 __DEFAULT_FN_ATTRS
7627_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7628{
7629 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7630 (__v4sf) __B,
7631 (__v4sf) __C,
7632 (__mmask8) __U,
7633 _MM_FROUND_CUR_DIRECTION);
7634}
7635
7636#define _mm_maskz_fmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7637__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
7638 (__v4sf) __B,\
7639 (__v4sf) __C,\
7640 (__mmask8) __U,\
7641 _MM_FROUND_CUR_DIRECTION);\
7642})
7643
7644static __inline__ __m128 __DEFAULT_FN_ATTRS
7645_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7646{
7647 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7648 (__v4sf) __X,
7649 (__v4sf) __Y,
7650 (__mmask8) __U,
7651 _MM_FROUND_CUR_DIRECTION);
7652}
7653
7654#define _mm_mask3_fmadd_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
7655__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
7656 (__v4sf) __X,\
7657 (__v4sf) __Y,\
7658 (__mmask8) __U,\
7659 __R);\
7660})
7661
7662static __inline__ __m128 __DEFAULT_FN_ATTRS
7663_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7664{
7665 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7666 (__v4sf) -(__B),
7667 (__v4sf) __W,
7668 (__mmask8) __U,
7669 _MM_FROUND_CUR_DIRECTION);
7670}
7671
7672#define _mm_mask_fmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7673__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
7674 (__v4sf) -(__B),\
7675 (__v4sf) __W,\
7676 (__mmask8) __U,\
7677 __R);\
7678})
7679
7680static __inline__ __m128 __DEFAULT_FN_ATTRS
7681_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7682{
7683 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7684 (__v4sf) __B,
7685 (__v4sf) -(__C),
7686 (__mmask8) __U,
7687 _MM_FROUND_CUR_DIRECTION);
7688}
7689
7690#define _mm_maskz_fmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7691__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
7692 (__v4sf) __B,\
7693 (__v4sf) -(__C),\
7694 (__mmask8) __U,\
7695 __R);\
7696})
7697
7698static __inline__ __m128 __DEFAULT_FN_ATTRS
7699_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7700{
7701 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7702 (__v4sf) __X,
7703 (__v4sf) -(__Y),
7704 (__mmask8) __U,
7705 _MM_FROUND_CUR_DIRECTION);
7706}
7707
7708#define _mm_mask3_fmsub_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
7709__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
7710 (__v4sf) __X,\
7711 (__v4sf) -(__Y),\
7712 (__mmask8) __U,\
7713 __R);\
7714})
7715
7716static __inline__ __m128 __DEFAULT_FN_ATTRS
7717_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7718{
7719 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),
7720 (__v4sf) __B,
7721 (__v4sf) __W,
7722 (__mmask8) __U,
7723 _MM_FROUND_CUR_DIRECTION);
7724}
7725
7726#define _mm_mask_fnmadd_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7727__builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),\
7728 (__v4sf) __B,\
7729 (__v4sf) __W,\
7730 (__mmask8) __U,\
7731 __R);\
7732})
7733
7734static __inline__ __m128 __DEFAULT_FN_ATTRS
7735_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7736{
7737 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),
7738 (__v4sf) __B,
7739 (__v4sf) __C,
7740 (__mmask8) __U,
7741 _MM_FROUND_CUR_DIRECTION);
7742}
7743
7744#define _mm_maskz_fnmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7745__builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),\
7746 (__v4sf) __B,\
7747 (__v4sf) __C,\
7748 (__mmask8) __U,\
7749 __R);\
7750})
7751
7752static __inline__ __m128 __DEFAULT_FN_ATTRS
7753_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7754{
7755 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),
7756 (__v4sf) __X,
7757 (__v4sf) __Y,
7758 (__mmask8) __U,
7759 _MM_FROUND_CUR_DIRECTION);
7760}
7761
7762#define _mm_mask3_fnmadd_round_ss( __W, __X, __Y, __U, __R) __extension__({\
7763__builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),\
7764 (__v4sf) __X,\
7765 (__v4sf) __Y,\
7766 (__mmask8) __U,\
7767 __R);\
7768})
7769
7770static __inline__ __m128 __DEFAULT_FN_ATTRS
7771_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7772{
7773 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),
7774 (__v4sf) -(__B),
7775 (__v4sf) __W,
7776 (__mmask8) __U,
7777 _MM_FROUND_CUR_DIRECTION);
7778}
7779
7780#define _mm_mask_fnmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7781__builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),\
7782 (__v4sf) -(__B),\
7783 (__v4sf) __W,\
7784 (__mmask8) __U,\
7785 __R);\
7786})
7787
7788static __inline__ __m128 __DEFAULT_FN_ATTRS
7789_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7790{
7791 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),
7792 (__v4sf) __B,
7793 (__v4sf) -(__C),
7794 (__mmask8) __U,
7795 _MM_FROUND_CUR_DIRECTION);
7796}
7797
7798#define _mm_maskz_fnmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7799__builtin_ia32_vfmaddss3_maskz((__v4sf) -(__A),\
7800 (__v4sf) __B,\
7801 (__v4sf) -(__C),\
7802 (__mmask8) __U,\
7803 _MM_FROUND_CUR_DIRECTION);\
7804})
7805
7806static __inline__ __m128 __DEFAULT_FN_ATTRS
7807_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7808{
7809 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),
7810 (__v4sf) __X,
7811 (__v4sf) -(__Y),
7812 (__mmask8) __U,
7813 _MM_FROUND_CUR_DIRECTION);
7814}
7815
7816#define _mm_mask3_fnmsub_round_ss( __W, __X, __Y, __U, __R) __extension__({\
7817__builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),\
7818 (__v4sf) __X,\
7819 (__v4sf) -(__Y),\
7820 (__mmask8) __U,\
7821 __R);\
7822})
7823
7824static __inline__ __m128 __DEFAULT_FN_ATTRS
7825_mm_mask_fmadd_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7826{
7827 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
7828 (__v2df) __B,
7829 (__v2df) __W,
7830 (__mmask8) __U,
7831 _MM_FROUND_CUR_DIRECTION);
7832}
7833
7834#define _mm_mask_fmadd_round_sd( __W, __U, __A, __B, __R) __extension__({\
7835__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
7836 (__v2df) __B,\
7837 (__v2df) __W,\
7838 (__mmask8) __U,\
7839 __R);\
7840})
7841
7842static __inline__ __m128 __DEFAULT_FN_ATTRS
7843_mm_maskz_fmadd_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7844{
7845 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
7846 (__v2df) __B,
7847 (__v2df) __C,
7848 (__mmask8) __U,
7849 _MM_FROUND_CUR_DIRECTION);
7850}
7851
7852#define _mm_maskz_fmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7853__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
7854 (__v2df) __B,\
7855 (__v2df) __C,\
7856 (__mmask8) __U,\
7857 _MM_FROUND_CUR_DIRECTION);\
7858})
7859
7860static __inline__ __m128 __DEFAULT_FN_ATTRS
7861_mm_mask3_fmadd_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7862{
7863 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
7864 (__v2df) __X,
7865 (__v2df) __Y,
7866 (__mmask8) __U,
7867 _MM_FROUND_CUR_DIRECTION);
7868}
7869
7870#define _mm_mask3_fmadd_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
7871__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
7872 (__v2df) __X,\
7873 (__v2df) __Y,\
7874 (__mmask8) __U,\
7875 __R);\
7876})
7877
7878static __inline__ __m128 __DEFAULT_FN_ATTRS
7879_mm_mask_fmsub_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7880{
7881 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
7882 (__v2df) -(__B),
7883 (__v2df) __W,
7884 (__mmask8) __U,
7885 _MM_FROUND_CUR_DIRECTION);
7886}
7887
7888#define _mm_mask_fmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7889__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
7890 (__v2df) -(__B),\
7891 (__v2df) __W,\
7892 (__mmask8) __U,\
7893 __R);\
7894})
7895
7896static __inline__ __m128 __DEFAULT_FN_ATTRS
7897_mm_maskz_fmsub_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7898{
7899 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
7900 (__v2df) __B,
7901 (__v2df) -(__C),
7902 (__mmask8) __U,
7903 _MM_FROUND_CUR_DIRECTION);
7904}
7905
7906#define _mm_maskz_fmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7907__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
7908 (__v2df) __B,\
7909 (__v2df) -(__C),\
7910 (__mmask8) __U,\
7911 __R);\
7912})
7913
7914static __inline__ __m128 __DEFAULT_FN_ATTRS
7915_mm_mask3_fmsub_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7916{
7917 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
7918 (__v2df) __X,
7919 (__v2df) -(__Y),
7920 (__mmask8) __U,
7921 _MM_FROUND_CUR_DIRECTION);
7922}
7923
7924#define _mm_mask3_fmsub_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
7925__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
7926 (__v2df) __X,\
7927 (__v2df) -(__Y),\
7928 (__mmask8) __U, __R);\
7929})
7930
7931static __inline__ __m128 __DEFAULT_FN_ATTRS
7932_mm_mask_fnmadd_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7933{
7934 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),
7935 (__v2df) __B,
7936 (__v2df) __W,
7937 (__mmask8) __U,
7938 _MM_FROUND_CUR_DIRECTION);
7939}
7940
7941#define _mm_mask_fnmadd_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7942__builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),\
7943 (__v2df) __B,\
7944 (__v2df) __W,\
7945 (__mmask8) __U,\
7946 __R);\
7947})
7948
7949static __inline__ __m128 __DEFAULT_FN_ATTRS
7950_mm_maskz_fnmadd_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7951{
7952 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),
7953 (__v2df) __B,
7954 (__v2df) __C,
7955 (__mmask8) __U,
7956 _MM_FROUND_CUR_DIRECTION);
7957}
7958
7959#define _mm_maskz_fnmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7960__builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),\
7961 (__v2df) __B,\
7962 (__v2df) __C,\
7963 (__mmask8) __U,\
7964 __R);\
7965})
7966
7967static __inline__ __m128 __DEFAULT_FN_ATTRS
7968_mm_mask3_fnmadd_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7969{
7970 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),
7971 (__v2df) __X,
7972 (__v2df) __Y,
7973 (__mmask8) __U,
7974 _MM_FROUND_CUR_DIRECTION);
7975}
7976
7977#define _mm_mask3_fnmadd_round_sd( __W, __X, __Y, __U, __R) __extension__({\
7978__builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),\
7979 (__v2df) __X,\
7980 (__v2df) __Y,\
7981 (__mmask8) __U,\
7982 __R);\
7983})
7984
7985static __inline__ __m128 __DEFAULT_FN_ATTRS
7986_mm_mask_fnmsub_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7987{
7988 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),
7989 (__v2df) -(__B),
7990 (__v2df) __W,
7991 (__mmask8) __U,
7992 _MM_FROUND_CUR_DIRECTION);
7993}
7994
7995#define _mm_mask_fnmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7996__builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),\
7997 (__v2df) -(__B),\
7998 (__v2df) __W,\
7999 (__mmask8) __U,\
8000 __R);\
8001})
8002
8003static __inline__ __m128 __DEFAULT_FN_ATTRS
8004_mm_maskz_fnmsub_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8005{
8006 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),
8007 (__v2df) __B,
8008 (__v2df) -(__C),
8009 (__mmask8) __U,
8010 _MM_FROUND_CUR_DIRECTION);
8011}
8012
8013#define _mm_maskz_fnmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
8014__builtin_ia32_vfmaddsd3_maskz( (__v2df) -(__A),\
8015 (__v2df) __B,\
8016 (__v2df) -(__C),\
8017 (__mmask8) __U,\
8018 _MM_FROUND_CUR_DIRECTION);\
8019})
8020
8021static __inline__ __m128 __DEFAULT_FN_ATTRS
8022_mm_mask3_fnmsub_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8023{
8024 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),
8025 (__v2df) __X,
8026 (__v2df) -(__Y),
8027 (__mmask8) __U,
8028 _MM_FROUND_CUR_DIRECTION);
8029}
8030
8031#define _mm_mask3_fnmsub_round_sd( __W, __X, __Y, __U, __R) __extension__({\
8032__builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),\
8033 (__v2df) __X,\
8034 (__v2df) -(__Y),\
8035 (__mmask8) __U,\
8036 __R);\
8037})
8038
Michael Zuckerman8938e832016-04-25 05:32:35 +00008039#define _mm512_permutex_pd( __X, __M) __extension__ ({ \
8040__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
8041 (__v8df) _mm512_undefined_pd (),\
8042 (__mmask8) -1);\
8043})
8044
8045#define _mm512_mask_permutex_pd( __W, __U, __X, __M) __extension__ ({ \
8046__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
8047 (__v8df)( __W),\
8048 (__mmask8)( __U));\
8049})
8050
8051#define _mm512_maskz_permutex_pd( __U, __X, __M) __extension__ ({ \
8052__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
8053 (__v8df) _mm512_setzero_pd (),\
8054 (__mmask8)( __U));\
8055})
8056
8057#define _mm512_permutex_epi64( __X, __I) __extension__ ({ \
8058__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
8059 (__v8di) _mm512_undefined_epi32 (),\
8060 (__mmask8) (-1));\
8061})
8062
8063#define _mm512_mask_permutex_epi64( __W, __M, __X, __I) __extension__ ({ \
8064__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
8065 (__v8di)( __W),\
8066 (__mmask8)( __M));\
8067})
8068
8069#define _mm512_maskz_permutex_epi64( __M, __X, __I) __extension__ ({ \
8070__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
8071 (__v8di) _mm512_setzero_si512 (),\
8072 (__mmask8)( __M));\
8073})
8074
8075static __inline__ __m512d __DEFAULT_FN_ATTRS
8076_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8077{
8078 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8079 (__v8di) __X,
8080 (__v8df) _mm512_undefined_pd (),
8081 (__mmask8) -1);
8082}
8083
8084static __inline__ __m512d __DEFAULT_FN_ATTRS
8085_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8086{
8087 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8088 (__v8di) __X,
8089 (__v8df) __W,
8090 (__mmask8) __U);
8091}
8092
8093static __inline__ __m512d __DEFAULT_FN_ATTRS
8094_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8095{
8096 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8097 (__v8di) __X,
8098 (__v8df) _mm512_setzero_pd (),
8099 (__mmask8) __U);
8100}
8101
8102static __inline__ __m512i __DEFAULT_FN_ATTRS
8103_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8104{
8105 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8106 (__v8di) __X,
8107 (__v8di) _mm512_setzero_si512 (),
8108 __M);
8109}
8110
8111static __inline__ __m512i __DEFAULT_FN_ATTRS
8112_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8113{
8114 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8115 (__v8di) __X,
8116 (__v8di) _mm512_undefined_epi32 (),
8117 (__mmask8) -1);
8118}
8119
8120static __inline__ __m512i __DEFAULT_FN_ATTRS
8121_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8122 __m512i __Y)
8123{
8124 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8125 (__v8di) __X,
8126 (__v8di) __W,
8127 __M);
8128}
8129
8130static __inline__ __m512 __DEFAULT_FN_ATTRS
8131_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8132{
8133 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8134 (__v16si) __X,
8135 (__v16sf) _mm512_undefined_ps (),
8136 (__mmask16) -1);
8137}
8138
8139static __inline__ __m512 __DEFAULT_FN_ATTRS
8140_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8141{
8142 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8143 (__v16si) __X,
8144 (__v16sf) __W,
8145 (__mmask16) __U);
8146}
8147
8148static __inline__ __m512 __DEFAULT_FN_ATTRS
8149_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8150{
8151 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8152 (__v16si) __X,
8153 (__v16sf) _mm512_setzero_ps (),
8154 (__mmask16) __U);
8155}
8156
8157static __inline__ __m512i __DEFAULT_FN_ATTRS
8158_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8159{
8160 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8161 (__v16si) __X,
8162 (__v16si) _mm512_setzero_si512 (),
8163 __M);
8164}
8165
8166static __inline__ __m512i __DEFAULT_FN_ATTRS
8167_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8168{
8169 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8170 (__v16si) __X,
8171 (__v16si) _mm512_undefined_epi32 (),
8172 (__mmask16) -1);
8173}
8174
8175static __inline__ __m512i __DEFAULT_FN_ATTRS
8176_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8177 __m512i __Y)
8178{
8179 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8180 (__v16si) __X,
8181 (__v16si) __W,
8182 __M);
8183}
8184
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008185static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8186_mm512_kand (__mmask16 __A, __mmask16 __B)
8187{
8188 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8189}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008190
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008191static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8192_mm512_kandn (__mmask16 __A, __mmask16 __B)
8193{
8194 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8195}
8196
8197static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8198_mm512_kor (__mmask16 __A, __mmask16 __B)
8199{
8200 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8201}
8202
8203static __inline__ int __DEFAULT_FN_ATTRS
8204_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8205{
8206 return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
8207 (__mmask16) __B);
8208}
8209
8210static __inline__ int __DEFAULT_FN_ATTRS
8211_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8212{
8213 return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
8214 (__mmask16) __B);
8215}
8216
8217static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8218_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8219{
8220 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8221}
8222
8223static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8224_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8225{
8226 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8227}
8228
8229static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8230_mm512_kxor (__mmask16 __A, __mmask16 __B)
8231{
8232 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8233}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008234
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008235static __inline__ void __DEFAULT_FN_ATTRS
8236_mm512_stream_si512 (__m512i * __P, __m512i __A)
8237{
8238 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8239}
8240
8241static __inline__ __m512i __DEFAULT_FN_ATTRS
8242_mm512_stream_load_si512 (void *__P)
8243{
8244 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8245}
8246
8247static __inline__ void __DEFAULT_FN_ATTRS
8248_mm512_stream_pd (double *__P, __m512d __A)
8249{
8250 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8251}
8252
8253static __inline__ void __DEFAULT_FN_ATTRS
8254_mm512_stream_ps (float *__P, __m512 __A)
8255{
8256 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8257}
8258
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008259static __inline__ __m512d __DEFAULT_FN_ATTRS
8260_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8261{
8262 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8263 (__v8df) __W,
8264 (__mmask8) __U);
8265}
8266
8267static __inline__ __m512d __DEFAULT_FN_ATTRS
8268_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8269{
8270 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8271 (__v8df)
8272 _mm512_setzero_pd (),
8273 (__mmask8) __U);
8274}
8275
8276static __inline__ __m512i __DEFAULT_FN_ATTRS
8277_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8278{
8279 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8280 (__v8di) __W,
8281 (__mmask8) __U);
8282}
8283
8284static __inline__ __m512i __DEFAULT_FN_ATTRS
8285_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8286{
8287 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8288 (__v8di)
8289 _mm512_setzero_si512 (),
8290 (__mmask8) __U);
8291}
8292
8293static __inline__ __m512 __DEFAULT_FN_ATTRS
8294_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8295{
8296 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8297 (__v16sf) __W,
8298 (__mmask16) __U);
8299}
8300
8301static __inline__ __m512 __DEFAULT_FN_ATTRS
8302_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8303{
8304 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8305 (__v16sf)
8306 _mm512_setzero_ps (),
8307 (__mmask16) __U);
8308}
8309
8310static __inline__ __m512i __DEFAULT_FN_ATTRS
8311_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8312{
8313 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8314 (__v16si) __W,
8315 (__mmask16) __U);
8316}
8317
8318static __inline__ __m512i __DEFAULT_FN_ATTRS
8319_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8320{
8321 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8322 (__v16si)
8323 _mm512_setzero_si512 (),
8324 (__mmask16) __U);
8325}
8326
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008327#define _mm_cmp_round_ss_mask( __X, __Y, __P, __R) __extension__ ({ \
8328__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8329 (__v4sf)( __Y), __P,\
8330 (__mmask8) -1, __R);\
8331})
8332
8333#define _mm_mask_cmp_round_ss_mask( __M, __X, __Y, __P, __R) __extension__ ({ \
8334__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8335 (__v4sf)( __Y), __P,\
8336 (__mmask8)( __M), __R);\
8337})
8338
8339#define _mm_cmp_ss_mask( __X, __Y, __P) __extension__ ({ \
8340__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8341 (__v4sf)( __Y),( __P),\
8342 (__mmask8) -1,\
8343 _MM_FROUND_CUR_DIRECTION);\
8344})
8345
8346#define _mm_mask_cmp_ss_mask( __M, __X, __Y, __P) __extension__ ({ \
8347__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8348 (__v4sf)( __Y),( __P),\
8349 (__mmask8)( __M),\
8350 _MM_FROUND_CUR_DIRECTION);\
8351})
8352
8353#define _mm_cmp_round_sd_mask( __X, __Y, __P,__R) __extension__ ({ \
8354__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8355 (__v2df)( __Y), __P,\
8356 (__mmask8) -1, __R);\
8357})
8358
8359#define _mm_mask_cmp_round_sd_mask( __M, __X, __Y, __P, __R) __extension__ ({ \
8360__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8361 (__v2df)( __Y), __P,\
8362 (__mmask8)( __M), __R);\
8363})
8364
8365#define _mm_cmp_sd_mask( __X, __Y, __P) __extension__ ({ \
8366__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8367 (__v2df)( __Y),( __P),\
8368 (__mmask8) -1,\
8369 _MM_FROUND_CUR_DIRECTION);\
8370})
8371
8372#define _mm_mask_cmp_sd_mask( __M, __X, __Y, __P) __extension__ ({ \
8373__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8374 (__v2df)( __Y),( __P),\
8375 (__mmask8)( __M),\
8376 _MM_FROUND_CUR_DIRECTION);\
8377})
8378
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008379static __inline__ __m512 __DEFAULT_FN_ATTRS
8380_mm512_movehdup_ps (__m512 __A)
8381{
8382 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8383 (__v16sf)
8384 _mm512_undefined_ps (),
8385 (__mmask16) -1);
8386}
8387
8388static __inline__ __m512 __DEFAULT_FN_ATTRS
8389_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8390{
8391 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8392 (__v16sf) __W,
8393 (__mmask16) __U);
8394}
8395
8396static __inline__ __m512 __DEFAULT_FN_ATTRS
8397_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8398{
8399 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8400 (__v16sf)
8401 _mm512_setzero_ps (),
8402 (__mmask16) __U);
8403}
8404
8405static __inline__ __m512 __DEFAULT_FN_ATTRS
8406_mm512_moveldup_ps (__m512 __A)
8407{
8408 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8409 (__v16sf)
8410 _mm512_undefined_ps (),
8411 (__mmask16) -1);
8412}
8413
8414static __inline__ __m512 __DEFAULT_FN_ATTRS
8415_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8416{
8417 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8418 (__v16sf) __W,
8419 (__mmask16) __U);
8420}
8421
8422static __inline__ __m512 __DEFAULT_FN_ATTRS
8423_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8424{
8425 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8426 (__v16sf)
8427 _mm512_setzero_ps (),
8428 (__mmask16) __U);
8429}
8430
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008431#define _mm512_shuffle_epi32( __A, __I) __extension__ ({ \
8432__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8433 ( __I),\
8434 (__v16si) _mm512_undefined_epi32 (),\
8435 (__mmask16) -1);\
8436})
8437
8438#define _mm512_mask_shuffle_epi32( __W, __U, __A, __I) __extension__ ({ \
8439__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8440 ( __I),\
8441 (__v16si)( __W),\
8442 (__mmask16)( __U));\
8443})
8444
8445#define _mm512_maskz_shuffle_epi32( __U, __A, __I) __extension__ ({ \
8446__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8447 ( __I),\
8448 (__v16si) _mm512_setzero_si512 (),\
8449 (__mmask16)( __U));\
8450})
8451
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008452static __inline__ __m512d __DEFAULT_FN_ATTRS
8453_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8454{
8455 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8456 (__v8df) __W,
8457 (__mmask8) __U);
8458}
8459
8460static __inline__ __m512d __DEFAULT_FN_ATTRS
8461_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8462{
8463 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8464 (__v8df) _mm512_setzero_pd (),
8465 (__mmask8) __U);
8466}
8467
8468static __inline__ __m512i __DEFAULT_FN_ATTRS
8469_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8470{
8471 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8472 (__v8di) __W,
8473 (__mmask8) __U);
8474}
8475
8476static __inline__ __m512i __DEFAULT_FN_ATTRS
8477_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8478{
8479 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8480 (__v8di) _mm512_setzero_pd (),
8481 (__mmask8) __U);
8482}
8483
8484static __inline__ __m512d __DEFAULT_FN_ATTRS
8485_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8486{
8487 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8488 (__v8df) __W,
8489 (__mmask8) __U);
8490}
8491
8492static __inline__ __m512d __DEFAULT_FN_ATTRS
8493_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8494{
8495 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8496 (__v8df) _mm512_setzero_pd(),
8497 (__mmask8) __U);
8498}
8499
8500static __inline__ __m512i __DEFAULT_FN_ATTRS
8501_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8502{
8503 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8504 (__v8di) __W,
8505 (__mmask8) __U);
8506}
8507
8508static __inline__ __m512i __DEFAULT_FN_ATTRS
8509_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8510{
8511 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8512 (__v8di) _mm512_setzero_pd(),
8513 (__mmask8) __U);
8514}
8515
8516static __inline__ __m512 __DEFAULT_FN_ATTRS
8517_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8518{
8519 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8520 (__v16sf) __W,
8521 (__mmask16) __U);
8522}
8523
8524static __inline__ __m512 __DEFAULT_FN_ATTRS
8525_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8526{
8527 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8528 (__v16sf) _mm512_setzero_ps(),
8529 (__mmask16) __U);
8530}
8531
8532static __inline__ __m512i __DEFAULT_FN_ATTRS
8533_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8534{
8535 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8536 (__v16si) __W,
8537 (__mmask16) __U);
8538}
8539
8540static __inline__ __m512i __DEFAULT_FN_ATTRS
8541_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8542{
8543 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8544 (__v16si) _mm512_setzero_ps(),
8545 (__mmask16) __U);
8546}
8547
8548static __inline__ __m512 __DEFAULT_FN_ATTRS
8549_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8550{
8551 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8552 (__v16sf) __W,
8553 (__mmask16) __U);
8554}
8555
8556static __inline__ __m512 __DEFAULT_FN_ATTRS
8557_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8558{
8559 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8560 (__v16sf) _mm512_setzero_ps(),
8561 (__mmask16) __U);
8562}
8563
8564static __inline__ __m512i __DEFAULT_FN_ATTRS
8565_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8566{
8567 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8568 (__v16si) __W,
8569 (__mmask16) __U);
8570}
8571
8572static __inline__ __m512i __DEFAULT_FN_ATTRS
8573_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8574{
8575 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8576 (__v16si) _mm512_setzero_ps(),
8577 (__mmask16) __U);
8578}
8579
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008580#define _mm512_cvt_roundps_pd( __A, __R) __extension__ ({ \
8581__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8582 (__v8df)\
8583 _mm512_undefined_pd (),\
8584 (__mmask8) -1,( __R));\
8585})
8586
8587#define _mm512_mask_cvt_roundps_pd( __W, __U, __A, __R) __extension__ ({ \
8588__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8589 (__v8df)( __W),\
8590 (__mmask8)( __U),( __R));\
8591})
8592
8593#define _mm512_maskz_cvt_roundps_pd( __U, __A, __R) __extension__ ({ \
8594__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8595 (__v8df)\
8596 _mm512_setzero_pd (),\
8597 (__mmask8)( __U),( __R));\
8598})
8599
8600static __inline__ __m512d __DEFAULT_FN_ATTRS
8601_mm512_cvtps_pd (__m256 __A)
8602{
8603 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8604 (__v8df)
8605 _mm512_undefined_pd (),
8606 (__mmask8) -1,
8607 _MM_FROUND_CUR_DIRECTION);
8608}
8609
8610static __inline__ __m512d __DEFAULT_FN_ATTRS
8611_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8612{
8613 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8614 (__v8df) __W,
8615 (__mmask8) __U,
8616 _MM_FROUND_CUR_DIRECTION);
8617}
8618
8619static __inline__ __m512d __DEFAULT_FN_ATTRS
8620_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8621{
8622 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8623 (__v8df)
8624 _mm512_setzero_pd (),
8625 (__mmask8) __U,
8626 _MM_FROUND_CUR_DIRECTION);
8627}
8628
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008629static __inline__ __m512d __DEFAULT_FN_ATTRS
8630_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8631{
8632 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8633 (__v8df) __W,
8634 (__mmask8) __U);
8635}
8636
8637static __inline__ __m512d __DEFAULT_FN_ATTRS
8638_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8639{
8640 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8641 (__v8df)
8642 _mm512_setzero_pd (),
8643 (__mmask8) __U);
8644}
8645
8646static __inline__ __m512 __DEFAULT_FN_ATTRS
8647_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8648{
8649 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8650 (__v16sf) __W,
8651 (__mmask16) __U);
8652}
8653
8654static __inline__ __m512 __DEFAULT_FN_ATTRS
8655_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8656{
8657 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8658 (__v16sf)
8659 _mm512_setzero_ps (),
8660 (__mmask16) __U);
8661}
8662
Michael Zuckerman708e7592016-05-03 10:42:46 +00008663static __inline__ void __DEFAULT_FN_ATTRS
8664_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8665{
8666 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8667 (__mmask8) __U);
8668}
8669
8670static __inline__ void __DEFAULT_FN_ATTRS
8671_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8672{
8673 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8674 (__mmask8) __U);
8675}
8676
8677static __inline__ void __DEFAULT_FN_ATTRS
8678_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8679{
8680 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8681 (__mmask16) __U);
8682}
8683
8684static __inline__ void __DEFAULT_FN_ATTRS
8685_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8686{
8687 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8688 (__mmask16) __U);
8689}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008690
Michael Zuckermane6f73892016-05-04 08:55:11 +00008691#define _mm_cvt_roundsd_ss( __A, __B, __R) __extension__ ({ \
8692__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
8693 (__v2df)( __B),\
8694 (__v4sf) _mm_undefined_ps (),\
8695 (__mmask8) -1,\
8696 ( __R));\
8697})
8698
8699#define _mm_mask_cvt_roundsd_ss( __W, __U, __A, __B, __R) __extension__ ({ \
8700__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
8701 (__v2df)( __B),\
8702 (__v4sf) __W,\
8703 (__mmask8) __U,\
8704 ( __R));\
8705})
8706
8707#define _mm_maskz_cvt_roundsd_ss( __U, __A, __B, __R) __extension__ ({ \
8708__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
8709 (__v2df)( __B),\
8710 (__v4sf) _mm_setzero_ps (),\
8711 (__mmask8) __U,\
8712 ( __R));\
8713})
8714
8715#define _mm_cvt_roundi64_sd( __A, __B, __R) __extension__ ({ \
8716__builtin_ia32_cvtsi2sd64 ((__v2df)( __A),( __B),( __R));\
8717})
8718
8719#define _mm_cvt_roundsi64_sd( __A, __B, __R) __extension__ ({ \
8720__builtin_ia32_cvtsi2sd64 ((__v2df)( __A),( __B),( __R));\
8721})
8722
8723#define _mm_cvt_roundsi32_ss( __A, __B, __R) __extension__ ({ \
8724__builtin_ia32_cvtsi2ss32 ((__v4sf)( __A),( __B),( __R));\
8725})
8726
8727#define _mm_cvt_roundi32_ss( __A, __B, __R) __extension__ ({ \
8728__builtin_ia32_cvtsi2ss32 ((__v4sf)( __A),( __B),( __R));\
8729})
8730
8731#define _mm_cvt_roundsi64_ss( __A, __B, __R) __extension__ ({ \
8732__builtin_ia32_cvtsi2ss64 ((__v4sf)( __A),( __B),( __R));\
8733})
8734
8735#define _mm_cvt_roundi64_ss( __A, __B, __R) __extension__ ({ \
8736__builtin_ia32_cvtsi2ss64 ((__v4sf)( __A),( __B),( __R));\
8737})
8738
8739#define _mm_cvt_roundss_sd( __A, __B, __R) __extension__ ({ \
8740__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
8741 (__v4sf)( __B),\
8742 (__v2df) _mm_undefined_pd (),\
8743 (__mmask8)-1,\
8744 ( __R));\
8745})
8746
8747#define _mm_mask_cvt_roundss_sd(__W, __U,__A, __B, __R) __extension__ ({ \
8748__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
8749 (__v4sf)( __B),\
8750 (__v2df) __W,\
8751 (__mmask8) __U,\
8752 ( __R));\
8753})
8754
8755#define _mm_maskz_cvt_roundss_sd( __U,__A, __B, __R) __extension__ ({ \
8756__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
8757 (__v4sf)( __B),\
8758 (__v2df) _mm_setzero_pd(),\
8759 (__mmask8) __U,\
8760 ( __R));\
8761})
8762
8763static __inline__ __m128d __DEFAULT_FN_ATTRS
8764_mm_cvtu32_sd (__m128d __A, unsigned __B)
8765{
8766 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
8767}
8768
8769#define _mm_cvt_roundu64_sd( __A, __B, __R) __extension__ ({ \
8770__builtin_ia32_cvtusi2sd64 ((__v2df)( __A),( __B),( __R));\
8771})
8772
8773static __inline__ __m128d __DEFAULT_FN_ATTRS
8774_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
8775{
8776 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
8777 _MM_FROUND_CUR_DIRECTION);
8778}
8779
8780#define _mm_cvt_roundu32_ss( __A, __B, __R) __extension__ ({ \
8781__builtin_ia32_cvtusi2ss32 ((__v4sf)( __A),( __B),( __R));\
8782})
8783
8784static __inline__ __m128 __DEFAULT_FN_ATTRS
8785_mm_cvtu32_ss (__m128 __A, unsigned __B)
8786{
8787 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
8788 _MM_FROUND_CUR_DIRECTION);
8789}
8790
8791#define _mm_cvt_roundu64_ss( __A, __B, __R) __extension__ ({ \
8792__builtin_ia32_cvtusi2ss64 ((__v4sf)( __A),( __B),( __R));\
8793})
8794
8795static __inline__ __m128 __DEFAULT_FN_ATTRS
8796_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
8797{
8798 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
8799 _MM_FROUND_CUR_DIRECTION);
8800}
8801
Michael Kupersteine45af542015-06-30 13:36:19 +00008802#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008803
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00008804#endif // __AVX512FINTRIN_H