blob: e7b5471951cd1a88a3e702f34881cb911775b51d [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
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +000030typedef char __v64qi __attribute__((__vector_size__(64)));
31typedef short __v32hi __attribute__((__vector_size__(64)));
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000032typedef double __v8df __attribute__((__vector_size__(64)));
33typedef float __v16sf __attribute__((__vector_size__(64)));
34typedef long long __v8di __attribute__((__vector_size__(64)));
35typedef int __v16si __attribute__((__vector_size__(64)));
36
Craig Topper6a77b622016-06-04 05:43:41 +000037/* Unsigned types */
38typedef unsigned char __v64qu __attribute__((__vector_size__(64)));
39typedef unsigned short __v32hu __attribute__((__vector_size__(64)));
40typedef unsigned long long __v8du __attribute__((__vector_size__(64)));
41typedef unsigned int __v16su __attribute__((__vector_size__(64)));
42
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000043typedef float __m512 __attribute__((__vector_size__(64)));
44typedef double __m512d __attribute__((__vector_size__(64)));
45typedef long long __m512i __attribute__((__vector_size__(64)));
46
47typedef unsigned char __mmask8;
48typedef unsigned short __mmask16;
49
50/* Rounding mode macros. */
51#define _MM_FROUND_TO_NEAREST_INT 0x00
52#define _MM_FROUND_TO_NEG_INF 0x01
53#define _MM_FROUND_TO_POS_INF 0x02
54#define _MM_FROUND_TO_ZERO 0x03
55#define _MM_FROUND_CUR_DIRECTION 0x04
56
Michael Zuckermandef78752016-03-28 12:23:09 +000057typedef enum
58{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000059 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
60 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
61 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
62 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
63 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
64 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
65 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
66 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
67 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
68 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
69 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
70 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
71 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
72 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
73 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
74 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
75 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
76 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
77 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
78 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
79 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
80 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
81 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
82 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
83 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
84 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
85 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
86 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
87 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
88 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
89 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
90 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
91 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
92 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
93 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
94 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
95 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
96 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
97 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
98 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
99 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
100 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
101 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
102 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
103 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
104 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
105 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
106 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
107 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
108 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
109 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
110 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
111 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
112 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
113 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
114 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
115 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
116 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
117 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
118 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
119 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
120 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
121 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
122 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
123 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
124 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
125 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
126 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
127 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
128 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
129 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
130 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
131 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
132 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
133 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
134 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
135 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
136 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
137 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
138 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
139 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
140 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
141 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
142 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
143 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
144 _MM_PERM_DDDD = 0xFF
145} _MM_PERM_ENUM;
146
147typedef enum
148{
Michael Zuckermandef78752016-03-28 12:23:09 +0000149 _MM_MANT_NORM_1_2, /* interval [1, 2) */
150 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
151 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
152 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
153} _MM_MANTISSA_NORM_ENUM;
154
155typedef enum
156{
157 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
158 _MM_MANT_SIGN_zero, /* sign = 0 */
159 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
160} _MM_MANTISSA_SIGN_ENUM;
161
Eric Christopher4d1851682015-06-17 07:09:20 +0000162/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000163#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000164
Adam Nemet0d5bb552014-07-28 17:14:40 +0000165/* Create vectors with repeated elements */
166
Michael Kupersteine45af542015-06-30 13:36:19 +0000167static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000168_mm512_setzero_si512(void)
169{
170 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
171}
172
Michael Zuckermanf36f6eb2016-06-05 15:12:52 +0000173#define _mm512_setzero_epi32 _mm512_setzero_si512
174
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000175static __inline__ __m512d __DEFAULT_FN_ATTRS
176_mm512_undefined_pd()
177{
178 return (__m512d)__builtin_ia32_undef512();
179}
180
181static __inline__ __m512 __DEFAULT_FN_ATTRS
182_mm512_undefined()
183{
184 return (__m512)__builtin_ia32_undef512();
185}
186
187static __inline__ __m512 __DEFAULT_FN_ATTRS
188_mm512_undefined_ps()
189{
190 return (__m512)__builtin_ia32_undef512();
191}
192
193static __inline__ __m512i __DEFAULT_FN_ATTRS
194_mm512_undefined_epi32()
195{
196 return (__m512i)__builtin_ia32_undef512();
197}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000198static __inline__ __m512i __DEFAULT_FN_ATTRS
199_mm512_broadcastd_epi32 (__m128i __A)
200{
201 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
202 (__v16si)
203 _mm512_undefined_epi32 (),
204 (__mmask16) -1);
205}
206
207static __inline__ __m512i __DEFAULT_FN_ATTRS
208_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
209{
210 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
211 (__v16si) __O, __M);
212}
213
214static __inline__ __m512i __DEFAULT_FN_ATTRS
215_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
216{
217 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
218 (__v16si)
219 _mm512_setzero_si512 (),
220 __M);
221}
222
223static __inline__ __m512i __DEFAULT_FN_ATTRS
224_mm512_broadcastq_epi64 (__m128i __A)
225{
226 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
227 (__v8di)
228 _mm512_undefined_pd (),
229 (__mmask8) -1);
230}
231
232static __inline__ __m512i __DEFAULT_FN_ATTRS
233_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
234{
235 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
236 (__v8di) __O, __M);
237}
238
239static __inline__ __m512i __DEFAULT_FN_ATTRS
240_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
241{
242 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
243 (__v8di)
244 _mm512_setzero_si512 (),
245 __M);
246}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000247
Michael Kupersteine45af542015-06-30 13:36:19 +0000248static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000249_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
250{
251 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
252 (__v16si)
253 _mm512_setzero_si512 (),
254 __M);
255}
256
Michael Kupersteine45af542015-06-30 13:36:19 +0000257static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000258_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
259{
260#ifdef __x86_64__
261 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
262 (__v8di)
263 _mm512_setzero_si512 (),
264 __M);
265#else
266 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
267 (__v8di)
268 _mm512_setzero_si512 (),
269 __M);
270#endif
271}
272
Michael Kupersteine45af542015-06-30 13:36:19 +0000273static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000274_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000275{
276 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
277 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
278}
Michael Zuckermanf36f6eb2016-06-05 15:12:52 +0000279
280#define _mm512_setzero _mm512_setzero_ps
281
Michael Kupersteine45af542015-06-30 13:36:19 +0000282static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000283_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000284{
285 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
286}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000287
Michael Kupersteine45af542015-06-30 13:36:19 +0000288static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000289_mm512_set1_ps(float __w)
290{
291 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
292 __w, __w, __w, __w, __w, __w, __w, __w };
293}
294
Michael Kupersteine45af542015-06-30 13:36:19 +0000295static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000296_mm512_set1_pd(double __w)
297{
298 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
299}
300
Michael Kupersteine45af542015-06-30 13:36:19 +0000301static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +0000302_mm512_set1_epi8(char __w)
303{
304 return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w,
305 __w, __w, __w, __w, __w, __w, __w, __w,
306 __w, __w, __w, __w, __w, __w, __w, __w,
307 __w, __w, __w, __w, __w, __w, __w, __w,
308 __w, __w, __w, __w, __w, __w, __w, __w,
309 __w, __w, __w, __w, __w, __w, __w, __w,
310 __w, __w, __w, __w, __w, __w, __w, __w,
311 __w, __w, __w, __w, __w, __w, __w, __w };
312}
313
314static __inline __m512i __DEFAULT_FN_ATTRS
315_mm512_set1_epi16(short __w)
316{
317 return (__m512i)(__v32hi){ __w, __w, __w, __w, __w, __w, __w, __w,
318 __w, __w, __w, __w, __w, __w, __w, __w,
319 __w, __w, __w, __w, __w, __w, __w, __w,
320 __w, __w, __w, __w, __w, __w, __w, __w };
321}
322
323static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000324_mm512_set1_epi32(int __s)
325{
326 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
327 __s, __s, __s, __s, __s, __s, __s, __s };
328}
329
Michael Kupersteine45af542015-06-30 13:36:19 +0000330static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000331_mm512_set1_epi64(long long __d)
332{
333 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
334}
335
Michael Kupersteine45af542015-06-30 13:36:19 +0000336static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000337_mm512_broadcastss_ps(__m128 __X)
338{
339 float __f = __X[0];
340 return (__v16sf){ __f, __f, __f, __f,
341 __f, __f, __f, __f,
342 __f, __f, __f, __f,
343 __f, __f, __f, __f };
344}
345
Michael Kupersteine45af542015-06-30 13:36:19 +0000346static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000347_mm512_broadcastsd_pd(__m128d __X)
348{
349 double __d = __X[0];
350 return (__v8df){ __d, __d, __d, __d,
351 __d, __d, __d, __d };
352}
353
Adam Nemetc871ff92014-07-30 16:51:24 +0000354/* Cast between vector types */
355
Michael Kupersteine45af542015-06-30 13:36:19 +0000356static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000357_mm512_castpd256_pd512(__m256d __a)
358{
359 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
360}
361
Michael Kupersteine45af542015-06-30 13:36:19 +0000362static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000363_mm512_castps256_ps512(__m256 __a)
364{
365 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
366 -1, -1, -1, -1, -1, -1, -1, -1);
367}
368
Michael Kupersteine45af542015-06-30 13:36:19 +0000369static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000370_mm512_castpd512_pd128(__m512d __a)
371{
372 return __builtin_shufflevector(__a, __a, 0, 1);
373}
374
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000375static __inline __m256d __DEFAULT_FN_ATTRS
376_mm512_castpd512_pd256 (__m512d __A)
377{
378 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
379}
380
Michael Kupersteine45af542015-06-30 13:36:19 +0000381static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000382_mm512_castps512_ps128(__m512 __a)
383{
384 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
385}
386
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000387static __inline __m256 __DEFAULT_FN_ATTRS
388_mm512_castps512_ps256 (__m512 __A)
389{
390 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
391}
392
393static __inline __m512 __DEFAULT_FN_ATTRS
394_mm512_castpd_ps (__m512d __A)
395{
396 return (__m512) (__A);
397}
398
399static __inline __m512i __DEFAULT_FN_ATTRS
400_mm512_castpd_si512 (__m512d __A)
401{
402 return (__m512i) (__A);
403}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000404
405static __inline__ __m512d __DEFAULT_FN_ATTRS
406_mm512_castpd128_pd512 (__m128d __A)
407{
408 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
409}
410
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000411static __inline __m512d __DEFAULT_FN_ATTRS
412_mm512_castps_pd (__m512 __A)
413{
414 return (__m512d) (__A);
415}
416
417static __inline __m512i __DEFAULT_FN_ATTRS
418_mm512_castps_si512 (__m512 __A)
419{
420 return (__m512i) (__A);
421}
422
Michael Zuckermanc6677032016-05-03 14:26:52 +0000423static __inline__ __m512 __DEFAULT_FN_ATTRS
424_mm512_castps128_ps512 (__m128 __A)
425{
426 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
427}
428
429static __inline__ __m512i __DEFAULT_FN_ATTRS
430_mm512_castsi128_si512 (__m128i __A)
431{
432 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
433}
434
435static __inline__ __m512i __DEFAULT_FN_ATTRS
436_mm512_castsi256_si512 (__m256i __A)
437{
438 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
439}
440
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000441static __inline __m512 __DEFAULT_FN_ATTRS
442_mm512_castsi512_ps (__m512i __A)
443{
444 return (__m512) (__A);
445}
446
447static __inline __m512d __DEFAULT_FN_ATTRS
448_mm512_castsi512_pd (__m512i __A)
449{
450 return (__m512d) (__A);
451}
452
453static __inline __m128i __DEFAULT_FN_ATTRS
454_mm512_castsi512_si128 (__m512i __A)
455{
456 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
457}
458
Michael Zuckerman22c47e62016-05-26 14:32:11 +0000459static __inline __m256i __DEFAULT_FN_ATTRS
460_mm512_castsi512_si256 (__m512i __A)
461{
462 return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
463}
464
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000465/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000466static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000467_mm512_and_epi32(__m512i __a, __m512i __b)
468{
Craig Topper6a77b622016-06-04 05:43:41 +0000469 return (__m512i)((__v16su)__a & (__v16su)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000470}
471
Michael Kupersteine45af542015-06-30 13:36:19 +0000472static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000473_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
474{
475 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
476 (__v16si) __b,
477 (__v16si) __src,
478 (__mmask16) __k);
479}
Michael Kupersteine45af542015-06-30 13:36:19 +0000480static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000481_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
482{
483 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
484 (__v16si) __b,
485 (__v16si)
486 _mm512_setzero_si512 (),
487 (__mmask16) __k);
488}
489
Michael Kupersteine45af542015-06-30 13:36:19 +0000490static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000491_mm512_and_epi64(__m512i __a, __m512i __b)
492{
Craig Topper6a77b622016-06-04 05:43:41 +0000493 return (__m512i)((__v8du)__a & (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000494}
495
Michael Kupersteine45af542015-06-30 13:36:19 +0000496static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000497_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
498{
499 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
500 (__v8di) __b,
501 (__v8di) __src,
502 (__mmask8) __k);
503}
Michael Kupersteine45af542015-06-30 13:36:19 +0000504static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000505_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
506{
507 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
508 (__v8di) __b,
509 (__v8di)
510 _mm512_setzero_si512 (),
511 (__mmask8) __k);
512}
513
Michael Kupersteine45af542015-06-30 13:36:19 +0000514static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000515_mm512_andnot_si512 (__m512i __A, __m512i __B)
516{
Craig Topper6a77b622016-06-04 05:43:41 +0000517 return (__m512i)(~(__v8du)(__A) & (__v8du)__B);
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000518}
519
520static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000521_mm512_andnot_epi32 (__m512i __A, __m512i __B)
522{
523 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
524 (__v16si) __B,
525 (__v16si)
526 _mm512_setzero_si512 (),
527 (__mmask16) -1);
528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000531_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
532{
533 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
534 (__v16si) __B,
535 (__v16si) __W,
536 (__mmask16) __U);
537}
538
Michael Kupersteine45af542015-06-30 13:36:19 +0000539static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000540_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
541{
542 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
543 (__v16si) __B,
544 (__v16si)
545 _mm512_setzero_si512 (),
546 (__mmask16) __U);
547}
548
Michael Kupersteine45af542015-06-30 13:36:19 +0000549static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000550_mm512_andnot_epi64 (__m512i __A, __m512i __B)
551{
552 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
553 (__v8di) __B,
554 (__v8di)
555 _mm512_setzero_si512 (),
556 (__mmask8) -1);
557}
558
Michael Kupersteine45af542015-06-30 13:36:19 +0000559static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000560_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
561{
562 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
563 (__v8di) __B,
564 (__v8di) __W, __U);
565}
566
Michael Kupersteine45af542015-06-30 13:36:19 +0000567static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000568_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
569{
570 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
571 (__v8di) __B,
572 (__v8di)
573 _mm512_setzero_pd (),
574 __U);
575}
Michael Kupersteine45af542015-06-30 13:36:19 +0000576static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000577_mm512_or_epi32(__m512i __a, __m512i __b)
578{
Craig Topper6a77b622016-06-04 05:43:41 +0000579 return (__m512i)((__v16su)__a | (__v16su)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000580}
581
Michael Kupersteine45af542015-06-30 13:36:19 +0000582static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000583_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
584{
585 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
586 (__v16si) __b,
587 (__v16si) __src,
588 (__mmask16) __k);
589}
Michael Kupersteine45af542015-06-30 13:36:19 +0000590static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000591_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
592{
593 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
594 (__v16si) __b,
595 (__v16si)
596 _mm512_setzero_si512 (),
597 (__mmask16) __k);
598}
599
Michael Kupersteine45af542015-06-30 13:36:19 +0000600static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000601_mm512_or_epi64(__m512i __a, __m512i __b)
602{
Craig Topper6a77b622016-06-04 05:43:41 +0000603 return (__m512i)((__v8du)__a | (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000604}
605
Michael Kupersteine45af542015-06-30 13:36:19 +0000606static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000607_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
608{
609 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
610 (__v8di) __b,
611 (__v8di) __src,
612 (__mmask8) __k);
613}
Michael Kupersteine45af542015-06-30 13:36:19 +0000614static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000615_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
616{
617 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
618 (__v8di) __b,
619 (__v8di)
620 _mm512_setzero_si512 (),
621 (__mmask8) __k);
622}
623
Michael Kupersteine45af542015-06-30 13:36:19 +0000624static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000625_mm512_xor_epi32(__m512i __a, __m512i __b)
626{
Craig Topper6a77b622016-06-04 05:43:41 +0000627 return (__m512i)((__v16su)__a ^ (__v16su)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000628}
629
Michael Kupersteine45af542015-06-30 13:36:19 +0000630static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000631_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
632{
633 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
634 (__v16si) __b,
635 (__v16si) __src,
636 (__mmask16) __k);
637}
Michael Kupersteine45af542015-06-30 13:36:19 +0000638static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000639_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
640{
641 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
642 (__v16si) __b,
643 (__v16si)
644 _mm512_setzero_si512 (),
645 (__mmask16) __k);
646}
647
Michael Kupersteine45af542015-06-30 13:36:19 +0000648static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000649_mm512_xor_epi64(__m512i __a, __m512i __b)
650{
Craig Topper6a77b622016-06-04 05:43:41 +0000651 return (__m512i)((__v8du)__a ^ (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000652}
653
Michael Kupersteine45af542015-06-30 13:36:19 +0000654static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000655_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
656{
657 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
658 (__v8di) __b,
659 (__v8di) __src,
660 (__mmask8) __k);
661}
Michael Kupersteine45af542015-06-30 13:36:19 +0000662static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000663_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
664{
665 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
666 (__v8di) __b,
667 (__v8di)
668 _mm512_setzero_si512 (),
669 (__mmask8) __k);
670}
671
Michael Kupersteine45af542015-06-30 13:36:19 +0000672static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000673_mm512_and_si512(__m512i __a, __m512i __b)
674{
Craig Topper6a77b622016-06-04 05:43:41 +0000675 return (__m512i)((__v8du)__a & (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000676}
677
Michael Kupersteine45af542015-06-30 13:36:19 +0000678static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000679_mm512_or_si512(__m512i __a, __m512i __b)
680{
Craig Topper6a77b622016-06-04 05:43:41 +0000681 return (__m512i)((__v8du)__a | (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000682}
683
Michael Kupersteine45af542015-06-30 13:36:19 +0000684static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000685_mm512_xor_si512(__m512i __a, __m512i __b)
686{
Craig Topper6a77b622016-06-04 05:43:41 +0000687 return (__m512i)((__v8du)__a ^ (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000688}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000689/* Arithmetic */
690
Michael Kupersteine45af542015-06-30 13:36:19 +0000691static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000692_mm512_add_pd(__m512d __a, __m512d __b)
693{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000694 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000695}
696
Michael Kupersteine45af542015-06-30 13:36:19 +0000697static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000698_mm512_add_ps(__m512 __a, __m512 __b)
699{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000700 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000701}
702
Michael Kupersteine45af542015-06-30 13:36:19 +0000703static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000704_mm512_mul_pd(__m512d __a, __m512d __b)
705{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000706 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000707}
708
Michael Kupersteine45af542015-06-30 13:36:19 +0000709static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000710_mm512_mul_ps(__m512 __a, __m512 __b)
711{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000712 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000713}
714
Michael Kupersteine45af542015-06-30 13:36:19 +0000715static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000716_mm512_sub_pd(__m512d __a, __m512d __b)
717{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000718 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000719}
720
Michael Kupersteine45af542015-06-30 13:36:19 +0000721static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000722_mm512_sub_ps(__m512 __a, __m512 __b)
723{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000724 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000725}
726
Michael Kupersteine45af542015-06-30 13:36:19 +0000727static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000728_mm512_add_epi64 (__m512i __A, __m512i __B)
729{
Craig Topper6a77b622016-06-04 05:43:41 +0000730 return (__m512i) ((__v8du) __A + (__v8du) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000731}
732
Michael Kupersteine45af542015-06-30 13:36:19 +0000733static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000734_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
735{
736 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
737 (__v8di) __B,
738 (__v8di) __W,
739 (__mmask8) __U);
740}
741
Michael Kupersteine45af542015-06-30 13:36:19 +0000742static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000743_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
744{
745 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
746 (__v8di) __B,
747 (__v8di)
748 _mm512_setzero_si512 (),
749 (__mmask8) __U);
750}
751
Michael Kupersteine45af542015-06-30 13:36:19 +0000752static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000753_mm512_sub_epi64 (__m512i __A, __m512i __B)
754{
Craig Topper6a77b622016-06-04 05:43:41 +0000755 return (__m512i) ((__v8du) __A - (__v8du) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000756}
757
Michael Kupersteine45af542015-06-30 13:36:19 +0000758static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000759_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
760{
761 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
762 (__v8di) __B,
763 (__v8di) __W,
764 (__mmask8) __U);
765}
766
Michael Kupersteine45af542015-06-30 13:36:19 +0000767static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000768_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
769{
770 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
771 (__v8di) __B,
772 (__v8di)
773 _mm512_setzero_si512 (),
774 (__mmask8) __U);
775}
776
Michael Kupersteine45af542015-06-30 13:36:19 +0000777static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000778_mm512_add_epi32 (__m512i __A, __m512i __B)
779{
Craig Topper6a77b622016-06-04 05:43:41 +0000780 return (__m512i) ((__v16su) __A + (__v16su) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000781}
782
Michael Kupersteine45af542015-06-30 13:36:19 +0000783static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000784_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
785{
786 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
787 (__v16si) __B,
788 (__v16si) __W,
789 (__mmask16) __U);
790}
791
Michael Kupersteine45af542015-06-30 13:36:19 +0000792static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000793_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
794{
795 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
796 (__v16si) __B,
797 (__v16si)
798 _mm512_setzero_si512 (),
799 (__mmask16) __U);
800}
801
Michael Kupersteine45af542015-06-30 13:36:19 +0000802static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000803_mm512_sub_epi32 (__m512i __A, __m512i __B)
804{
Craig Topper6a77b622016-06-04 05:43:41 +0000805 return (__m512i) ((__v16su) __A - (__v16su) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000806}
807
Michael Kupersteine45af542015-06-30 13:36:19 +0000808static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000809_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
810{
811 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
812 (__v16si) __B,
813 (__v16si) __W,
814 (__mmask16) __U);
815}
816
Michael Kupersteine45af542015-06-30 13:36:19 +0000817static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000818_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
819{
820 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
821 (__v16si) __B,
822 (__v16si)
823 _mm512_setzero_si512 (),
824 (__mmask16) __U);
825}
826
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000827#define _mm512_mask_max_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
828__builtin_ia32_maxpd512_mask ((__v8df)( __A),\
829 (__v8df)( __B),\
830 (__v8df)( __W),\
831 (__mmask8)( __U),( __R));\
832})
833
834#define _mm512_maskz_max_round_pd( __U, __A, __B, __R) __extension__ ({ \
835__builtin_ia32_maxpd512_mask ((__v8df)( __A),\
836 (__v8df)( __B),\
837 (__v8df)\
838 _mm512_setzero_pd (),\
839 (__mmask8)( __U),( __R));\
840})
841
842#define _mm512_max_round_pd( __A, __B, __R) __extension__ ({ \
843__builtin_ia32_maxpd512_mask ((__v8df)( __A),\
844 (__v8df)( __B),\
845 (__v8df)\
846 _mm512_undefined_pd (),\
847 (__mmask8) -1,( __R));\
848})
849
Michael Kupersteine45af542015-06-30 13:36:19 +0000850static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000851_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000852{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000853 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
854 (__v8df) __B,
855 (__v8df)
856 _mm512_setzero_pd (),
857 (__mmask8) -1,
858 _MM_FROUND_CUR_DIRECTION);
859}
860
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000861static __inline__ __m512d __DEFAULT_FN_ATTRS
862_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
863{
864 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
865 (__v8df) __B,
866 (__v8df) __W,
867 (__mmask8) __U,
868 _MM_FROUND_CUR_DIRECTION);
869}
870
871static __inline__ __m512d __DEFAULT_FN_ATTRS
872_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
873{
874 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
875 (__v8df) __B,
876 (__v8df)
877 _mm512_setzero_pd (),
878 (__mmask8) __U,
879 _MM_FROUND_CUR_DIRECTION);
880}
881
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000882#define _mm512_mask_max_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
883__builtin_ia32_maxps512_mask ((__v16sf)( __A),\
884 (__v16sf)( __B),\
885 (__v16sf)( __W),\
886 (__mmask16)( __U),( __R));\
887})
888
889#define _mm512_maskz_max_round_ps( __U, __A, __B, __R) __extension__ ({ \
890__builtin_ia32_maxps512_mask ((__v16sf)( __A),\
891 (__v16sf)( __B),\
892 (__v16sf)\
893 _mm512_setzero_ps (),\
894 (__mmask16)( __U),( __R));\
895})
896
897#define _mm512_max_round_ps( __A, __B, __R) __extension__ ({ \
898__builtin_ia32_maxps512_mask ((__v16sf)( __A),\
899 (__v16sf)( __B),\
900 (__v16sf)\
901 _mm512_undefined_ps (),\
902 (__mmask16) -1,( __R));\
903})
904
Michael Kupersteine45af542015-06-30 13:36:19 +0000905static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000906_mm512_max_ps(__m512 __A, __m512 __B)
907{
908 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
909 (__v16sf) __B,
910 (__v16sf)
911 _mm512_setzero_ps (),
912 (__mmask16) -1,
913 _MM_FROUND_CUR_DIRECTION);
914}
915
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000916static __inline__ __m512 __DEFAULT_FN_ATTRS
917_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
918{
919 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
920 (__v16sf) __B,
921 (__v16sf) __W,
922 (__mmask16) __U,
923 _MM_FROUND_CUR_DIRECTION);
924}
925
926static __inline__ __m512 __DEFAULT_FN_ATTRS
927_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
928{
929 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
930 (__v16sf) __B,
931 (__v16sf)
932 _mm512_setzero_ps (),
933 (__mmask16) __U,
934 _MM_FROUND_CUR_DIRECTION);
935}
936
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000937static __inline__ __m128 __DEFAULT_FN_ATTRS
938_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000939 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000940 (__v4sf) __B,
941 (__v4sf) __W,
942 (__mmask8) __U,
943 _MM_FROUND_CUR_DIRECTION);
944}
945
946static __inline__ __m128 __DEFAULT_FN_ATTRS
947_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000948 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000949 (__v4sf) __B,
950 (__v4sf) _mm_setzero_ps (),
951 (__mmask8) __U,
952 _MM_FROUND_CUR_DIRECTION);
953}
954
Craig Topper8c18e112016-05-17 04:41:50 +0000955#define _mm_max_round_ss(A, B, R) __extension__ ({ \
956 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
957 (__v4sf)(__m128)(B), \
958 (__v4sf)_mm_setzero_ps(), \
959 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000960
Craig Topper8c18e112016-05-17 04:41:50 +0000961#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
962 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
963 (__v4sf)(__m128)(B), \
964 (__v4sf)(__m128)(W), (__mmask8)(U), \
965 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000966
Craig Topper8c18e112016-05-17 04:41:50 +0000967#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
968 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
969 (__v4sf)(__m128)(B), \
970 (__v4sf)_mm_setzero_ps(), \
971 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000972
973static __inline__ __m128d __DEFAULT_FN_ATTRS
974_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000975 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000976 (__v2df) __B,
977 (__v2df) __W,
978 (__mmask8) __U,
979 _MM_FROUND_CUR_DIRECTION);
980}
981
982static __inline__ __m128d __DEFAULT_FN_ATTRS
983_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000984 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000985 (__v2df) __B,
986 (__v2df) _mm_setzero_pd (),
987 (__mmask8) __U,
988 _MM_FROUND_CUR_DIRECTION);
989}
990
Craig Topper8c18e112016-05-17 04:41:50 +0000991#define _mm_max_round_sd(A, B, R) __extension__ ({ \
992 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
993 (__v2df)(__m128d)(B), \
994 (__v2df)_mm_setzero_pd(), \
995 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000996
Craig Topper8c18e112016-05-17 04:41:50 +0000997#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
998 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
999 (__v2df)(__m128d)(B), \
1000 (__v2df)(__m128d)(W), \
1001 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001002
Craig Topper8c18e112016-05-17 04:41:50 +00001003#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
1004 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1005 (__v2df)(__m128d)(B), \
1006 (__v2df)_mm_setzero_pd(), \
1007 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001008
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001009static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001010__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001011_mm512_max_epi32(__m512i __A, __m512i __B)
1012{
1013 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1014 (__v16si) __B,
1015 (__v16si)
1016 _mm512_setzero_si512 (),
1017 (__mmask16) -1);
1018}
1019
Michael Zuckermande860e52016-05-10 11:34:19 +00001020static __inline__ __m512i __DEFAULT_FN_ATTRS
1021_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1022{
1023 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1024 (__v16si) __B,
1025 (__v16si) __W, __M);
1026}
1027
1028static __inline__ __m512i __DEFAULT_FN_ATTRS
1029_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1030{
1031 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1032 (__v16si) __B,
1033 (__v16si)
1034 _mm512_setzero_si512 (),
1035 __M);
1036}
1037
Michael Kupersteine45af542015-06-30 13:36:19 +00001038static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001039_mm512_max_epu32(__m512i __A, __m512i __B)
1040{
1041 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1042 (__v16si) __B,
1043 (__v16si)
1044 _mm512_setzero_si512 (),
1045 (__mmask16) -1);
1046}
1047
Michael Zuckermande860e52016-05-10 11:34:19 +00001048static __inline__ __m512i __DEFAULT_FN_ATTRS
1049_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1050{
1051 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1052 (__v16si) __B,
1053 (__v16si) __W, __M);
1054}
1055
1056static __inline__ __m512i __DEFAULT_FN_ATTRS
1057_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1058{
1059 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1060 (__v16si) __B,
1061 (__v16si)
1062 _mm512_setzero_si512 (),
1063 __M);
1064}
1065
Michael Kupersteine45af542015-06-30 13:36:19 +00001066static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001067_mm512_max_epi64(__m512i __A, __m512i __B)
1068{
1069 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1070 (__v8di) __B,
1071 (__v8di)
1072 _mm512_setzero_si512 (),
1073 (__mmask8) -1);
1074}
1075
Michael Zuckermande860e52016-05-10 11:34:19 +00001076static __inline__ __m512i __DEFAULT_FN_ATTRS
1077_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1078{
1079 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1080 (__v8di) __B,
1081 (__v8di) __W, __M);
1082}
1083
1084static __inline__ __m512i __DEFAULT_FN_ATTRS
1085_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1086{
1087 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1088 (__v8di) __B,
1089 (__v8di)
1090 _mm512_setzero_si512 (),
1091 __M);
1092}
1093
Michael Kupersteine45af542015-06-30 13:36:19 +00001094static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001095_mm512_max_epu64(__m512i __A, __m512i __B)
1096{
1097 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1098 (__v8di) __B,
1099 (__v8di)
1100 _mm512_setzero_si512 (),
1101 (__mmask8) -1);
1102}
1103
Michael Zuckermande860e52016-05-10 11:34:19 +00001104static __inline__ __m512i __DEFAULT_FN_ATTRS
1105_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1106{
1107 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1108 (__v8di) __B,
1109 (__v8di) __W, __M);
1110}
1111
1112static __inline__ __m512i __DEFAULT_FN_ATTRS
1113_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1114{
1115 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1116 (__v8di) __B,
1117 (__v8di)
1118 _mm512_setzero_si512 (),
1119 __M);
1120}
1121
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001122#define _mm512_mask_min_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
1123__builtin_ia32_minpd512_mask ((__v8df)( __A),\
1124 (__v8df)( __B),\
1125 (__v8df)( __W),\
1126 (__mmask8)( __U),( __R));\
1127})
1128
1129#define _mm512_maskz_min_round_pd( __U, __A, __B, __R) __extension__ ({ \
1130__builtin_ia32_minpd512_mask ((__v8df)( __A),\
1131 (__v8df)( __B),\
1132 (__v8df)\
1133 _mm512_setzero_pd (),\
1134 (__mmask8)( __U),( __R));\
1135})
1136
1137#define _mm512_min_round_pd( __A, __B, __R) __extension__ ({ \
1138__builtin_ia32_minpd512_mask ((__v8df)( __A),\
1139 (__v8df)( __B),\
1140 (__v8df)\
1141 _mm512_undefined_pd (),\
1142 (__mmask8) -1,( __R));\
1143})
1144
Michael Kupersteine45af542015-06-30 13:36:19 +00001145static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001146_mm512_min_pd(__m512d __A, __m512d __B)
1147{
1148 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1149 (__v8df) __B,
1150 (__v8df)
1151 _mm512_setzero_pd (),
1152 (__mmask8) -1,
1153 _MM_FROUND_CUR_DIRECTION);
1154}
1155
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001156static __inline__ __m512d __DEFAULT_FN_ATTRS
1157_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1158{
1159 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1160 (__v8df) __B,
1161 (__v8df) __W,
1162 (__mmask8) __U,
1163 _MM_FROUND_CUR_DIRECTION);
1164}
1165
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001166#define _mm512_mask_min_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
1167__builtin_ia32_minps512_mask ((__v16sf)( __A),\
1168 (__v16sf)( __B),\
1169 (__v16sf)( __W),\
1170 (__mmask16)( __U),( __R));\
1171})
1172
1173#define _mm512_maskz_min_round_ps( __U, __A, __B, __R) __extension__ ({ \
1174__builtin_ia32_minps512_mask ((__v16sf)( __A),\
1175 (__v16sf)( __B),\
1176 (__v16sf)\
1177 _mm512_setzero_ps (),\
1178 (__mmask16)( __U),( __R));\
1179})
1180
1181#define _mm512_min_round_ps( __A, __B, __R) __extension__ ({ \
1182__builtin_ia32_minps512_mask ((__v16sf)( __A),\
1183 (__v16sf)( __B),\
1184 (__v16sf)\
1185 _mm512_undefined_ps (),\
1186 (__mmask16) -1,( __R));\
1187})
1188
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001189static __inline__ __m512d __DEFAULT_FN_ATTRS
1190_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1191{
1192 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1193 (__v8df) __B,
1194 (__v8df)
1195 _mm512_setzero_pd (),
1196 (__mmask8) __U,
1197 _MM_FROUND_CUR_DIRECTION);
1198}
1199
Michael Kupersteine45af542015-06-30 13:36:19 +00001200static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001201_mm512_min_ps(__m512 __A, __m512 __B)
1202{
1203 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1204 (__v16sf) __B,
1205 (__v16sf)
1206 _mm512_setzero_ps (),
1207 (__mmask16) -1,
1208 _MM_FROUND_CUR_DIRECTION);
1209}
1210
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001211static __inline__ __m512 __DEFAULT_FN_ATTRS
1212_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1213{
1214 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1215 (__v16sf) __B,
1216 (__v16sf) __W,
1217 (__mmask16) __U,
1218 _MM_FROUND_CUR_DIRECTION);
1219}
1220
1221static __inline__ __m512 __DEFAULT_FN_ATTRS
1222_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1223{
1224 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1225 (__v16sf) __B,
1226 (__v16sf)
1227 _mm512_setzero_ps (),
1228 (__mmask16) __U,
1229 _MM_FROUND_CUR_DIRECTION);
1230}
1231
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001232static __inline__ __m128 __DEFAULT_FN_ATTRS
1233_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001234 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001235 (__v4sf) __B,
1236 (__v4sf) __W,
1237 (__mmask8) __U,
1238 _MM_FROUND_CUR_DIRECTION);
1239}
1240
1241static __inline__ __m128 __DEFAULT_FN_ATTRS
1242_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001243 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001244 (__v4sf) __B,
1245 (__v4sf) _mm_setzero_ps (),
1246 (__mmask8) __U,
1247 _MM_FROUND_CUR_DIRECTION);
1248}
1249
Craig Topper8c18e112016-05-17 04:41:50 +00001250#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1251 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1252 (__v4sf)(__m128)(B), \
1253 (__v4sf)_mm_setzero_ps(), \
1254 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001255
Craig Topper8c18e112016-05-17 04:41:50 +00001256#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1257 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1258 (__v4sf)(__m128)(B), \
1259 (__v4sf)(__m128)(W), (__mmask8)(U), \
1260 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001261
Craig Topper8c18e112016-05-17 04:41:50 +00001262#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1263 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1264 (__v4sf)(__m128)(B), \
1265 (__v4sf)_mm_setzero_ps(), \
1266 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001267
1268static __inline__ __m128d __DEFAULT_FN_ATTRS
1269_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001270 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001271 (__v2df) __B,
1272 (__v2df) __W,
1273 (__mmask8) __U,
1274 _MM_FROUND_CUR_DIRECTION);
1275}
1276
1277static __inline__ __m128d __DEFAULT_FN_ATTRS
1278_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001279 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001280 (__v2df) __B,
1281 (__v2df) _mm_setzero_pd (),
1282 (__mmask8) __U,
1283 _MM_FROUND_CUR_DIRECTION);
1284}
1285
Craig Topper8c18e112016-05-17 04:41:50 +00001286#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1287 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1288 (__v2df)(__m128d)(B), \
1289 (__v2df)_mm_setzero_pd(), \
1290 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001291
Craig Topper8c18e112016-05-17 04:41:50 +00001292#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1293 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1294 (__v2df)(__m128d)(B), \
1295 (__v2df)(__m128d)(W), \
1296 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001297
Craig Topper8c18e112016-05-17 04:41:50 +00001298#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1299 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1300 (__v2df)(__m128d)(B), \
1301 (__v2df)_mm_setzero_pd(), \
1302 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001303
Adam Nemet0d5bb552014-07-28 17:14:40 +00001304static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001305__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001306_mm512_min_epi32(__m512i __A, __m512i __B)
1307{
1308 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1309 (__v16si) __B,
1310 (__v16si)
1311 _mm512_setzero_si512 (),
1312 (__mmask16) -1);
1313}
1314
Michael Zuckermande860e52016-05-10 11:34:19 +00001315static __inline__ __m512i __DEFAULT_FN_ATTRS
1316_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1317{
1318 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1319 (__v16si) __B,
1320 (__v16si) __W, __M);
1321}
1322
1323static __inline__ __m512i __DEFAULT_FN_ATTRS
1324_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1325{
1326 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1327 (__v16si) __B,
1328 (__v16si)
1329 _mm512_setzero_si512 (),
1330 __M);
1331}
1332
Michael Kupersteine45af542015-06-30 13:36:19 +00001333static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001334_mm512_min_epu32(__m512i __A, __m512i __B)
1335{
1336 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1337 (__v16si) __B,
1338 (__v16si)
1339 _mm512_setzero_si512 (),
1340 (__mmask16) -1);
1341}
1342
Michael Zuckermande860e52016-05-10 11:34:19 +00001343static __inline__ __m512i __DEFAULT_FN_ATTRS
1344_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1345{
1346 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1347 (__v16si) __B,
1348 (__v16si) __W, __M);
1349}
1350
1351static __inline__ __m512i __DEFAULT_FN_ATTRS
1352_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1353{
1354 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1355 (__v16si) __B,
1356 (__v16si)
1357 _mm512_setzero_si512 (),
1358 __M);
1359}
1360
Michael Kupersteine45af542015-06-30 13:36:19 +00001361static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001362_mm512_min_epi64(__m512i __A, __m512i __B)
1363{
1364 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1365 (__v8di) __B,
1366 (__v8di)
1367 _mm512_setzero_si512 (),
1368 (__mmask8) -1);
1369}
1370
Michael Zuckermande860e52016-05-10 11:34:19 +00001371static __inline__ __m512i __DEFAULT_FN_ATTRS
1372_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1373{
1374 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1375 (__v8di) __B,
1376 (__v8di) __W, __M);
1377}
1378
1379static __inline__ __m512i __DEFAULT_FN_ATTRS
1380_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1381{
1382 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1383 (__v8di) __B,
1384 (__v8di)
1385 _mm512_setzero_si512 (),
1386 __M);
1387}
1388
Michael Kupersteine45af542015-06-30 13:36:19 +00001389static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001390_mm512_min_epu64(__m512i __A, __m512i __B)
1391{
1392 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1393 (__v8di) __B,
1394 (__v8di)
1395 _mm512_setzero_si512 (),
1396 (__mmask8) -1);
1397}
1398
Michael Zuckermande860e52016-05-10 11:34:19 +00001399static __inline__ __m512i __DEFAULT_FN_ATTRS
1400_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1401{
1402 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1403 (__v8di) __B,
1404 (__v8di) __W, __M);
1405}
1406
1407static __inline__ __m512i __DEFAULT_FN_ATTRS
1408_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1409{
1410 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1411 (__v8di) __B,
1412 (__v8di)
1413 _mm512_setzero_si512 (),
1414 __M);
1415}
1416
Michael Kupersteine45af542015-06-30 13:36:19 +00001417static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001418_mm512_mul_epi32(__m512i __X, __m512i __Y)
1419{
1420 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1421 (__v16si) __Y,
1422 (__v8di)
1423 _mm512_setzero_si512 (),
1424 (__mmask8) -1);
1425}
1426
Michael Kupersteine45af542015-06-30 13:36:19 +00001427static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001428_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1429{
1430 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1431 (__v16si) __Y,
1432 (__v8di) __W, __M);
1433}
1434
Michael Kupersteine45af542015-06-30 13:36:19 +00001435static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001436_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1437{
1438 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1439 (__v16si) __Y,
1440 (__v8di)
1441 _mm512_setzero_si512 (),
1442 __M);
1443}
1444
Michael Kupersteine45af542015-06-30 13:36:19 +00001445static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001446_mm512_mul_epu32(__m512i __X, __m512i __Y)
1447{
1448 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1449 (__v16si) __Y,
1450 (__v8di)
1451 _mm512_setzero_si512 (),
1452 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001453}
1454
Michael Kupersteine45af542015-06-30 13:36:19 +00001455static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001456_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1457{
1458 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1459 (__v16si) __Y,
1460 (__v8di) __W, __M);
1461}
1462
Michael Kupersteine45af542015-06-30 13:36:19 +00001463static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001464_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1465{
1466 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1467 (__v16si) __Y,
1468 (__v8di)
1469 _mm512_setzero_si512 (),
1470 __M);
1471}
1472
Michael Kupersteine45af542015-06-30 13:36:19 +00001473static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001474_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1475{
Craig Topper6a77b622016-06-04 05:43:41 +00001476 return (__m512i) ((__v16su) __A * (__v16su) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001477}
1478
Michael Kupersteine45af542015-06-30 13:36:19 +00001479static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001480_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1481{
1482 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1483 (__v16si) __B,
1484 (__v16si)
1485 _mm512_setzero_si512 (),
1486 __M);
1487}
1488
Michael Kupersteine45af542015-06-30 13:36:19 +00001489static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001490_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1491{
1492 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1493 (__v16si) __B,
1494 (__v16si) __W, __M);
1495}
1496
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001497#define _mm512_mask_sqrt_round_pd( __W, __U, __A, __R) __extension__ ({ \
1498__builtin_ia32_sqrtpd512_mask ((__v8df)( __A),\
1499 (__v8df)( __W),\
1500 (__mmask8)( __U),( __R));\
1501})
1502
1503#define _mm512_maskz_sqrt_round_pd( __U, __A, __R) __extension__ ({ \
1504__builtin_ia32_sqrtpd512_mask ((__v8df)( __A),\
1505 (__v8df)\
1506 _mm512_setzero_pd (),\
1507 (__mmask8)( __U),( __R));\
1508})
1509
1510#define _mm512_sqrt_round_pd( __A, __R) __extension__ ({ \
1511__builtin_ia32_sqrtpd512_mask ((__v8df)( __A),\
1512 (__v8df)\
1513 _mm512_undefined_pd (),\
1514 (__mmask8) -1,( __R));\
1515})
1516
Michael Kupersteine45af542015-06-30 13:36:19 +00001517static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001518_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001519{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001520 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001521 (__v8df) _mm512_setzero_pd (),
1522 (__mmask8) -1,
1523 _MM_FROUND_CUR_DIRECTION);
1524}
1525
Michael Zuckermancb856772016-05-16 11:42:01 +00001526static __inline__ __m512d __DEFAULT_FN_ATTRS
1527_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1528{
1529 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1530 (__v8df) __W,
1531 (__mmask8) __U,
1532 _MM_FROUND_CUR_DIRECTION);
1533}
1534
1535static __inline__ __m512d __DEFAULT_FN_ATTRS
1536_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1537{
1538 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1539 (__v8df)
1540 _mm512_setzero_pd (),
1541 (__mmask8) __U,
1542 _MM_FROUND_CUR_DIRECTION);
1543}
1544
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001545#define _mm512_mask_sqrt_round_ps( __W, __U, __A, __R) __extension__ ({ \
1546__builtin_ia32_sqrtps512_mask ((__v16sf)( __A),\
1547 (__v16sf)( __W),\
1548 (__mmask16)( __U),( __R));\
1549})
1550
1551#define _mm512_maskz_sqrt_round_ps( __U, __A, __R) __extension__ ({ \
1552__builtin_ia32_sqrtps512_mask ((__v16sf)( __A),\
1553 (__v16sf)\
1554 _mm512_setzero_ps (),\
1555 (__mmask16)( __U),( __R));\
1556})
1557
1558#define _mm512_sqrt_round_ps( __A, __R) __extension__ ({ \
1559__builtin_ia32_sqrtps512_mask ((__v16sf)( __A),\
1560 (__v16sf)\
1561 _mm512_undefined_ps (),\
1562 (__mmask16) -1,( __R));\
1563})
1564
Michael Kupersteine45af542015-06-30 13:36:19 +00001565static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001566_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001567{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001568 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001569 (__v16sf) _mm512_setzero_ps (),
1570 (__mmask16) -1,
1571 _MM_FROUND_CUR_DIRECTION);
1572}
1573
Michael Zuckermancb856772016-05-16 11:42:01 +00001574static __inline__ __m512 __DEFAULT_FN_ATTRS
1575_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1576{
1577 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1578 (__v16sf) __W,
1579 (__mmask16) __U,
1580 _MM_FROUND_CUR_DIRECTION);
1581}
1582
1583static __inline__ __m512 __DEFAULT_FN_ATTRS
1584_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1585{
1586 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1587 (__v16sf) _mm512_setzero_ps (),
1588 (__mmask16) __U,
1589 _MM_FROUND_CUR_DIRECTION);
1590}
1591
Michael Kupersteine45af542015-06-30 13:36:19 +00001592static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001593_mm512_rsqrt14_pd(__m512d __A)
1594{
1595 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1596 (__v8df)
1597 _mm512_setzero_pd (),
1598 (__mmask8) -1);}
1599
Michael Zuckermancb856772016-05-16 11:42:01 +00001600static __inline__ __m512d __DEFAULT_FN_ATTRS
1601_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1602{
1603 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1604 (__v8df) __W,
1605 (__mmask8) __U);
1606}
1607
1608static __inline__ __m512d __DEFAULT_FN_ATTRS
1609_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1610{
1611 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1612 (__v8df)
1613 _mm512_setzero_pd (),
1614 (__mmask8) __U);
1615}
1616
Michael Kupersteine45af542015-06-30 13:36:19 +00001617static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001618_mm512_rsqrt14_ps(__m512 __A)
1619{
1620 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1621 (__v16sf)
1622 _mm512_setzero_ps (),
1623 (__mmask16) -1);
1624}
1625
Michael Zuckermancb856772016-05-16 11:42:01 +00001626static __inline__ __m512 __DEFAULT_FN_ATTRS
1627_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1628{
1629 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1630 (__v16sf) __W,
1631 (__mmask16) __U);
1632}
1633
1634static __inline__ __m512 __DEFAULT_FN_ATTRS
1635_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1636{
1637 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1638 (__v16sf)
1639 _mm512_setzero_ps (),
1640 (__mmask16) __U);
1641}
1642
Michael Kupersteine45af542015-06-30 13:36:19 +00001643static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001644_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1645{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001646 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001647 (__v4sf) __B,
1648 (__v4sf)
1649 _mm_setzero_ps (),
1650 (__mmask8) -1);
1651}
1652
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001653static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001654_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001655{
1656 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1657 (__v4sf) __B,
1658 (__v4sf) __W,
1659 (__mmask8) __U);
1660}
1661
1662static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001663_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001664{
1665 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1666 (__v4sf) __B,
1667 (__v4sf) _mm_setzero_ps (),
1668 (__mmask8) __U);
1669}
1670
Michael Kupersteine45af542015-06-30 13:36:19 +00001671static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001672_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1673{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001674 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001675 (__v2df) __B,
1676 (__v2df)
1677 _mm_setzero_pd (),
1678 (__mmask8) -1);
1679}
1680
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001681static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001682_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001683{
1684 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1685 (__v2df) __B,
1686 (__v2df) __W,
1687 (__mmask8) __U);
1688}
1689
1690static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001691_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001692{
1693 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1694 (__v2df) __B,
1695 (__v2df) _mm_setzero_pd (),
1696 (__mmask8) __U);
1697}
1698
Michael Kupersteine45af542015-06-30 13:36:19 +00001699static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001700_mm512_rcp14_pd(__m512d __A)
1701{
1702 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1703 (__v8df)
1704 _mm512_setzero_pd (),
1705 (__mmask8) -1);
1706}
1707
Michael Zuckermancb856772016-05-16 11:42:01 +00001708static __inline__ __m512d __DEFAULT_FN_ATTRS
1709_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1710{
1711 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1712 (__v8df) __W,
1713 (__mmask8) __U);
1714}
1715
1716static __inline__ __m512d __DEFAULT_FN_ATTRS
1717_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1718{
1719 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1720 (__v8df)
1721 _mm512_setzero_pd (),
1722 (__mmask8) __U);
1723}
1724
Michael Kupersteine45af542015-06-30 13:36:19 +00001725static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001726_mm512_rcp14_ps(__m512 __A)
1727{
1728 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1729 (__v16sf)
1730 _mm512_setzero_ps (),
1731 (__mmask16) -1);
1732}
Michael Zuckermancb856772016-05-16 11:42:01 +00001733
1734static __inline__ __m512 __DEFAULT_FN_ATTRS
1735_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1736{
1737 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1738 (__v16sf) __W,
1739 (__mmask16) __U);
1740}
1741
1742static __inline__ __m512 __DEFAULT_FN_ATTRS
1743_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1744{
1745 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1746 (__v16sf)
1747 _mm512_setzero_ps (),
1748 (__mmask16) __U);
1749}
1750
Michael Kupersteine45af542015-06-30 13:36:19 +00001751static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001752_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001753{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001754 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001755 (__v4sf) __B,
1756 (__v4sf)
1757 _mm_setzero_ps (),
1758 (__mmask8) -1);
1759}
1760
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001761static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001762_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001763{
1764 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1765 (__v4sf) __B,
1766 (__v4sf) __W,
1767 (__mmask8) __U);
1768}
1769
1770static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001771_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001772{
1773 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1774 (__v4sf) __B,
1775 (__v4sf) _mm_setzero_ps (),
1776 (__mmask8) __U);
1777}
1778
Michael Kupersteine45af542015-06-30 13:36:19 +00001779static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001780_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001781{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001782 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001783 (__v2df) __B,
1784 (__v2df)
1785 _mm_setzero_pd (),
1786 (__mmask8) -1);
1787}
1788
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001789static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001790_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001791{
1792 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1793 (__v2df) __B,
1794 (__v2df) __W,
1795 (__mmask8) __U);
1796}
1797
1798static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001799_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001800{
1801 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1802 (__v2df) __B,
1803 (__v2df) _mm_setzero_pd (),
1804 (__mmask8) __U);
1805}
1806
Michael Kupersteine45af542015-06-30 13:36:19 +00001807static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001808_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001809{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001810 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1811 _MM_FROUND_FLOOR,
1812 (__v16sf) __A, -1,
1813 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001814}
1815
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001816static __inline__ __m512 __DEFAULT_FN_ATTRS
1817_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1818{
1819 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1820 _MM_FROUND_FLOOR,
1821 (__v16sf) __W, __U,
1822 _MM_FROUND_CUR_DIRECTION);
1823}
1824
Michael Kupersteine45af542015-06-30 13:36:19 +00001825static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001826_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001827{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001828 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1829 _MM_FROUND_FLOOR,
1830 (__v8df) __A, -1,
1831 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001832}
1833
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001834static __inline__ __m512d __DEFAULT_FN_ATTRS
1835_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1836{
1837 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1838 _MM_FROUND_FLOOR,
1839 (__v8df) __W, __U,
1840 _MM_FROUND_CUR_DIRECTION);
1841}
1842
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001843static __inline__ __m512 __DEFAULT_FN_ATTRS
1844_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1845{
1846 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1847 _MM_FROUND_CEIL,
1848 (__v16sf) __W, __U,
1849 _MM_FROUND_CUR_DIRECTION);
1850}
1851
Michael Kupersteine45af542015-06-30 13:36:19 +00001852static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001853_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001854{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001855 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1856 _MM_FROUND_CEIL,
1857 (__v16sf) __A, -1,
1858 _MM_FROUND_CUR_DIRECTION);
1859}
1860
Michael Kupersteine45af542015-06-30 13:36:19 +00001861static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001862_mm512_ceil_pd(__m512d __A)
1863{
1864 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1865 _MM_FROUND_CEIL,
1866 (__v8df) __A, -1,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001870static __inline__ __m512d __DEFAULT_FN_ATTRS
1871_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1872{
1873 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1874 _MM_FROUND_CEIL,
1875 (__v8df) __W, __U,
1876 _MM_FROUND_CUR_DIRECTION);
1877}
1878
Michael Kupersteine45af542015-06-30 13:36:19 +00001879static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001880_mm512_abs_epi64(__m512i __A)
1881{
1882 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1883 (__v8di)
1884 _mm512_setzero_si512 (),
1885 (__mmask8) -1);
1886}
1887
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001888static __inline__ __m512i __DEFAULT_FN_ATTRS
1889_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1890{
1891 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1892 (__v8di) __W,
1893 (__mmask8) __U);
1894}
1895
1896static __inline__ __m512i __DEFAULT_FN_ATTRS
1897_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1898{
1899 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1900 (__v8di)
1901 _mm512_setzero_si512 (),
1902 (__mmask8) __U);
1903}
1904
Michael Kupersteine45af542015-06-30 13:36:19 +00001905static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001906_mm512_abs_epi32(__m512i __A)
1907{
1908 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1909 (__v16si)
1910 _mm512_setzero_si512 (),
1911 (__mmask16) -1);
1912}
1913
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001914static __inline__ __m512i __DEFAULT_FN_ATTRS
1915_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1916{
1917 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1918 (__v16si) __W,
1919 (__mmask16) __U);
1920}
1921
1922static __inline__ __m512i __DEFAULT_FN_ATTRS
1923_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1924{
1925 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1926 (__v16si)
1927 _mm512_setzero_si512 (),
1928 (__mmask16) __U);
1929}
1930
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001931static __inline__ __m128 __DEFAULT_FN_ATTRS
1932_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001933 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001934 (__v4sf) __B,
1935 (__v4sf) __W,
1936 (__mmask8) __U,
1937 _MM_FROUND_CUR_DIRECTION);
1938}
1939
1940static __inline__ __m128 __DEFAULT_FN_ATTRS
1941_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001942 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001943 (__v4sf) __B,
1944 (__v4sf) _mm_setzero_ps (),
1945 (__mmask8) __U,
1946 _MM_FROUND_CUR_DIRECTION);
1947}
1948
Craig Topper8c18e112016-05-17 04:41:50 +00001949#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1950 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1951 (__v4sf)(__m128)(B), \
1952 (__v4sf)_mm_setzero_ps(), \
1953 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001954
Craig Topper8c18e112016-05-17 04:41:50 +00001955#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1956 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1957 (__v4sf)(__m128)(B), \
1958 (__v4sf)(__m128)(W), (__mmask8)(U), \
1959 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001960
Craig Topper8c18e112016-05-17 04:41:50 +00001961#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1962 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1963 (__v4sf)(__m128)(B), \
1964 (__v4sf)_mm_setzero_ps(), \
1965 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001966
1967static __inline__ __m128d __DEFAULT_FN_ATTRS
1968_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001969 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001970 (__v2df) __B,
1971 (__v2df) __W,
1972 (__mmask8) __U,
1973 _MM_FROUND_CUR_DIRECTION);
1974}
1975
1976static __inline__ __m128d __DEFAULT_FN_ATTRS
1977_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001978 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001979 (__v2df) __B,
1980 (__v2df) _mm_setzero_pd (),
1981 (__mmask8) __U,
1982 _MM_FROUND_CUR_DIRECTION);
1983}
Craig Topper8c18e112016-05-17 04:41:50 +00001984#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1985 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1986 (__v2df)(__m128d)(B), \
1987 (__v2df)_mm_setzero_pd(), \
1988 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001989
Craig Topper8c18e112016-05-17 04:41:50 +00001990#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1991 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1992 (__v2df)(__m128d)(B), \
1993 (__v2df)(__m128d)(W), \
1994 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001995
Craig Topper8c18e112016-05-17 04:41:50 +00001996#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1997 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1998 (__v2df)(__m128d)(B), \
1999 (__v2df)_mm_setzero_pd(), \
2000 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002001
Asaf Badouhffeb6242015-07-21 15:27:28 +00002002static __inline__ __m512d __DEFAULT_FN_ATTRS
2003_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2004 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2005 (__v8df) __B,
2006 (__v8df) __W,
2007 (__mmask8) __U,
2008 _MM_FROUND_CUR_DIRECTION);
2009}
2010
2011static __inline__ __m512d __DEFAULT_FN_ATTRS
2012_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2013 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2014 (__v8df) __B,
2015 (__v8df) _mm512_setzero_pd (),
2016 (__mmask8) __U,
2017 _MM_FROUND_CUR_DIRECTION);
2018}
2019
2020static __inline__ __m512 __DEFAULT_FN_ATTRS
2021_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2022 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2023 (__v16sf) __B,
2024 (__v16sf) __W,
2025 (__mmask16) __U,
2026 _MM_FROUND_CUR_DIRECTION);
2027}
2028
2029static __inline__ __m512 __DEFAULT_FN_ATTRS
2030_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2031 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2032 (__v16sf) __B,
2033 (__v16sf) _mm512_setzero_ps (),
2034 (__mmask16) __U,
2035 _MM_FROUND_CUR_DIRECTION);
2036}
2037
Craig Topper8c18e112016-05-17 04:41:50 +00002038#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
2039 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2040 (__v8df)(__m512d)(B), \
2041 (__v8df)_mm512_setzero_pd(), \
2042 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002043
Craig Topper8c18e112016-05-17 04:41:50 +00002044#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
2045 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2046 (__v8df)(__m512d)(B), \
2047 (__v8df)(__m512d)(W), (__mmask8)(U), \
2048 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002049
Craig Topper8c18e112016-05-17 04:41:50 +00002050#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
2051 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2052 (__v8df)(__m512d)(B), \
2053 (__v8df)_mm512_setzero_pd(), \
2054 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002055
Craig Topper8c18e112016-05-17 04:41:50 +00002056#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
2057 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2058 (__v16sf)(__m512)(B), \
2059 (__v16sf)_mm512_setzero_ps(), \
2060 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002061
Craig Topper8c18e112016-05-17 04:41:50 +00002062#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
2063 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2064 (__v16sf)(__m512)(B), \
2065 (__v16sf)(__m512)(W), (__mmask16)(U), \
2066 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002067
Craig Topper8c18e112016-05-17 04:41:50 +00002068#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
2069 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2070 (__v16sf)(__m512)(B), \
2071 (__v16sf)_mm512_setzero_ps(), \
2072 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002073
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002074static __inline__ __m128 __DEFAULT_FN_ATTRS
2075_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002076 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002077 (__v4sf) __B,
2078 (__v4sf) __W,
2079 (__mmask8) __U,
2080 _MM_FROUND_CUR_DIRECTION);
2081}
2082
2083static __inline__ __m128 __DEFAULT_FN_ATTRS
2084_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002085 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002086 (__v4sf) __B,
2087 (__v4sf) _mm_setzero_ps (),
2088 (__mmask8) __U,
2089 _MM_FROUND_CUR_DIRECTION);
2090}
Craig Topper8c18e112016-05-17 04:41:50 +00002091#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
2092 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2093 (__v4sf)(__m128)(B), \
2094 (__v4sf)_mm_setzero_ps(), \
2095 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002096
Craig Topper8c18e112016-05-17 04:41:50 +00002097#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
2098 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2099 (__v4sf)(__m128)(B), \
2100 (__v4sf)(__m128)(W), (__mmask8)(U), \
2101 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002102
Craig Topper8c18e112016-05-17 04:41:50 +00002103#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
2104 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2105 (__v4sf)(__m128)(B), \
2106 (__v4sf)_mm_setzero_ps(), \
2107 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002108
2109static __inline__ __m128d __DEFAULT_FN_ATTRS
2110_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002111 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002112 (__v2df) __B,
2113 (__v2df) __W,
2114 (__mmask8) __U,
2115 _MM_FROUND_CUR_DIRECTION);
2116}
2117
2118static __inline__ __m128d __DEFAULT_FN_ATTRS
2119_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002120 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002121 (__v2df) __B,
2122 (__v2df) _mm_setzero_pd (),
2123 (__mmask8) __U,
2124 _MM_FROUND_CUR_DIRECTION);
2125}
2126
Craig Topper8c18e112016-05-17 04:41:50 +00002127#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
2128 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2129 (__v2df)(__m128d)(B), \
2130 (__v2df)_mm_setzero_pd(), \
2131 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002132
Craig Topper8c18e112016-05-17 04:41:50 +00002133#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
2134 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2135 (__v2df)(__m128d)(B), \
2136 (__v2df)(__m128d)(W), \
2137 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002138
Craig Topper8c18e112016-05-17 04:41:50 +00002139#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
2140 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2141 (__v2df)(__m128d)(B), \
2142 (__v2df)_mm_setzero_pd(), \
2143 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002144
Asaf Badouhffeb6242015-07-21 15:27:28 +00002145static __inline__ __m512d __DEFAULT_FN_ATTRS
2146_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2147 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2148 (__v8df) __B,
2149 (__v8df) __W,
2150 (__mmask8) __U,
2151 _MM_FROUND_CUR_DIRECTION);
2152}
2153
2154static __inline__ __m512d __DEFAULT_FN_ATTRS
2155_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2156 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2157 (__v8df) __B,
2158 (__v8df)
2159 _mm512_setzero_pd (),
2160 (__mmask8) __U,
2161 _MM_FROUND_CUR_DIRECTION);
2162}
2163
2164static __inline__ __m512 __DEFAULT_FN_ATTRS
2165_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2166 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2167 (__v16sf) __B,
2168 (__v16sf) __W,
2169 (__mmask16) __U,
2170 _MM_FROUND_CUR_DIRECTION);
2171}
2172
2173static __inline__ __m512 __DEFAULT_FN_ATTRS
2174_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2175 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2176 (__v16sf) __B,
2177 (__v16sf)
2178 _mm512_setzero_ps (),
2179 (__mmask16) __U,
2180 _MM_FROUND_CUR_DIRECTION);
2181}
2182
Craig Topper8c18e112016-05-17 04:41:50 +00002183#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2184 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2185 (__v8df)(__m512d)(B), \
2186 (__v8df)_mm512_setzero_pd(), \
2187 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002188
Craig Topper8c18e112016-05-17 04:41:50 +00002189#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2190 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2191 (__v8df)(__m512d)(B), \
2192 (__v8df)(__m512d)(W), (__mmask8)(U), \
2193 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002194
Craig Topper8c18e112016-05-17 04:41:50 +00002195#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2196 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2197 (__v8df)(__m512d)(B), \
2198 (__v8df)_mm512_setzero_pd(), \
2199 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002200
Craig Topper8c18e112016-05-17 04:41:50 +00002201#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2202 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2203 (__v16sf)(__m512)(B), \
2204 (__v16sf)_mm512_setzero_ps(), \
2205 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002206
Craig Topper8c18e112016-05-17 04:41:50 +00002207#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2208 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2209 (__v16sf)(__m512)(B), \
2210 (__v16sf)(__m512)(W), (__mmask16)(U), \
2211 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002212
Craig Topper8c18e112016-05-17 04:41:50 +00002213#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2214 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2215 (__v16sf)(__m512)(B), \
2216 (__v16sf)_mm512_setzero_ps(), \
2217 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002218
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002219static __inline__ __m128 __DEFAULT_FN_ATTRS
2220_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002221 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002222 (__v4sf) __B,
2223 (__v4sf) __W,
2224 (__mmask8) __U,
2225 _MM_FROUND_CUR_DIRECTION);
2226}
2227
2228static __inline__ __m128 __DEFAULT_FN_ATTRS
2229_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002230 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002231 (__v4sf) __B,
2232 (__v4sf) _mm_setzero_ps (),
2233 (__mmask8) __U,
2234 _MM_FROUND_CUR_DIRECTION);
2235}
Craig Topper8c18e112016-05-17 04:41:50 +00002236#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2237 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2238 (__v4sf)(__m128)(B), \
2239 (__v4sf)_mm_setzero_ps(), \
2240 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002241
Craig Topper8c18e112016-05-17 04:41:50 +00002242#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2243 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2244 (__v4sf)(__m128)(B), \
2245 (__v4sf)(__m128)(W), (__mmask8)(U), \
2246 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002247
Craig Topper8c18e112016-05-17 04:41:50 +00002248#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2249 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2250 (__v4sf)(__m128)(B), \
2251 (__v4sf)_mm_setzero_ps(), \
2252 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002253
2254static __inline__ __m128d __DEFAULT_FN_ATTRS
2255_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002256 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002257 (__v2df) __B,
2258 (__v2df) __W,
2259 (__mmask8) __U,
2260 _MM_FROUND_CUR_DIRECTION);
2261}
2262
2263static __inline__ __m128d __DEFAULT_FN_ATTRS
2264_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002265 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002266 (__v2df) __B,
2267 (__v2df) _mm_setzero_pd (),
2268 (__mmask8) __U,
2269 _MM_FROUND_CUR_DIRECTION);
2270}
2271
Craig Topper8c18e112016-05-17 04:41:50 +00002272#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2273 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2274 (__v2df)(__m128d)(B), \
2275 (__v2df)_mm_setzero_pd(), \
2276 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002277
Craig Topper8c18e112016-05-17 04:41:50 +00002278#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2279 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2280 (__v2df)(__m128d)(B), \
2281 (__v2df)(__m128d)(W), \
2282 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002283
Craig Topper8c18e112016-05-17 04:41:50 +00002284#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2285 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2286 (__v2df)(__m128d)(B), \
2287 (__v2df)_mm_setzero_pd(), \
2288 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002289
Asaf Badouhffeb6242015-07-21 15:27:28 +00002290static __inline__ __m512d __DEFAULT_FN_ATTRS
2291_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2292 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2293 (__v8df) __B,
2294 (__v8df) __W,
2295 (__mmask8) __U,
2296 _MM_FROUND_CUR_DIRECTION);
2297}
2298
2299static __inline__ __m512d __DEFAULT_FN_ATTRS
2300_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2301 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2302 (__v8df) __B,
2303 (__v8df)
2304 _mm512_setzero_pd (),
2305 (__mmask8) __U,
2306 _MM_FROUND_CUR_DIRECTION);
2307}
2308
2309static __inline__ __m512 __DEFAULT_FN_ATTRS
2310_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2311 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2312 (__v16sf) __B,
2313 (__v16sf) __W,
2314 (__mmask16) __U,
2315 _MM_FROUND_CUR_DIRECTION);
2316}
2317
2318static __inline__ __m512 __DEFAULT_FN_ATTRS
2319_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2320 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2321 (__v16sf) __B,
2322 (__v16sf)
2323 _mm512_setzero_ps (),
2324 (__mmask16) __U,
2325 _MM_FROUND_CUR_DIRECTION);
2326}
2327
Craig Topper8c18e112016-05-17 04:41:50 +00002328#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2329 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2330 (__v8df)(__m512d)(B), \
2331 (__v8df)_mm512_setzero_pd(), \
2332 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002333
Craig Topper8c18e112016-05-17 04:41:50 +00002334#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2335 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2336 (__v8df)(__m512d)(B), \
2337 (__v8df)(__m512d)(W), (__mmask8)(U), \
2338 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002339
Craig Topper8c18e112016-05-17 04:41:50 +00002340#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2341 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2342 (__v8df)(__m512d)(B), \
2343 (__v8df)_mm512_setzero_pd(), \
2344 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002345
Craig Topper8c18e112016-05-17 04:41:50 +00002346#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2347 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2348 (__v16sf)(__m512)(B), \
2349 (__v16sf)_mm512_setzero_ps(), \
2350 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002351
Craig Topper8c18e112016-05-17 04:41:50 +00002352#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2353 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2354 (__v16sf)(__m512)(B), \
2355 (__v16sf)(__m512)(W), (__mmask16)(U), \
2356 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002357
Craig Topper8c18e112016-05-17 04:41:50 +00002358#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2359 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2360 (__v16sf)(__m512)(B), \
2361 (__v16sf)_mm512_setzero_ps(), \
2362 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002363
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002364static __inline__ __m128 __DEFAULT_FN_ATTRS
2365_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002366 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002367 (__v4sf) __B,
2368 (__v4sf) __W,
2369 (__mmask8) __U,
2370 _MM_FROUND_CUR_DIRECTION);
2371}
2372
2373static __inline__ __m128 __DEFAULT_FN_ATTRS
2374_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002375 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002376 (__v4sf) __B,
2377 (__v4sf) _mm_setzero_ps (),
2378 (__mmask8) __U,
2379 _MM_FROUND_CUR_DIRECTION);
2380}
2381
Craig Topper8c18e112016-05-17 04:41:50 +00002382#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2383 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2384 (__v4sf)(__m128)(B), \
2385 (__v4sf)_mm_setzero_ps(), \
2386 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002387
Craig Topper8c18e112016-05-17 04:41:50 +00002388#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2389 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2390 (__v4sf)(__m128)(B), \
2391 (__v4sf)(__m128)(W), (__mmask8)(U), \
2392 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002393
Craig Topper8c18e112016-05-17 04:41:50 +00002394#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2395 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2396 (__v4sf)(__m128)(B), \
2397 (__v4sf)_mm_setzero_ps(), \
2398 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002399
2400static __inline__ __m128d __DEFAULT_FN_ATTRS
2401_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002402 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002403 (__v2df) __B,
2404 (__v2df) __W,
2405 (__mmask8) __U,
2406 _MM_FROUND_CUR_DIRECTION);
2407}
2408
2409static __inline__ __m128d __DEFAULT_FN_ATTRS
2410_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002411 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002412 (__v2df) __B,
2413 (__v2df) _mm_setzero_pd (),
2414 (__mmask8) __U,
2415 _MM_FROUND_CUR_DIRECTION);
2416}
2417
Craig Topper8c18e112016-05-17 04:41:50 +00002418#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2419 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2420 (__v2df)(__m128d)(B), \
2421 (__v2df)_mm_setzero_pd(), \
2422 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002423
Craig Topper8c18e112016-05-17 04:41:50 +00002424#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2425 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2426 (__v2df)(__m128d)(B), \
2427 (__v2df)(__m128d)(W), \
2428 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002429
Craig Topper8c18e112016-05-17 04:41:50 +00002430#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2431 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2432 (__v2df)(__m128d)(B), \
2433 (__v2df)_mm_setzero_pd(), \
2434 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002435
Asaf Badouhffeb6242015-07-21 15:27:28 +00002436static __inline__ __m512d __DEFAULT_FN_ATTRS
2437_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2438 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2439 (__v8df) __B,
2440 (__v8df) __W,
2441 (__mmask8) __U,
2442 _MM_FROUND_CUR_DIRECTION);
2443}
2444
2445static __inline__ __m512d __DEFAULT_FN_ATTRS
2446_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2447 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2448 (__v8df) __B,
2449 (__v8df)
2450 _mm512_setzero_pd (),
2451 (__mmask8) __U,
2452 _MM_FROUND_CUR_DIRECTION);
2453}
2454
2455static __inline__ __m512 __DEFAULT_FN_ATTRS
2456_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2457 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2458 (__v16sf) __B,
2459 (__v16sf) __W,
2460 (__mmask16) __U,
2461 _MM_FROUND_CUR_DIRECTION);
2462}
2463
2464static __inline__ __m512 __DEFAULT_FN_ATTRS
2465_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2466 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2467 (__v16sf) __B,
2468 (__v16sf)
2469 _mm512_setzero_ps (),
2470 (__mmask16) __U,
2471 _MM_FROUND_CUR_DIRECTION);
2472}
2473
Craig Topper8c18e112016-05-17 04:41:50 +00002474#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2475 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2476 (__v8df)(__m512d)(B), \
2477 (__v8df)_mm512_setzero_pd(), \
2478 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002479
Craig Topper8c18e112016-05-17 04:41:50 +00002480#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2481 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2482 (__v8df)(__m512d)(B), \
2483 (__v8df)(__m512d)(W), (__mmask8)(U), \
2484 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002485
Craig Topper8c18e112016-05-17 04:41:50 +00002486#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2487 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2488 (__v8df)(__m512d)(B), \
2489 (__v8df)_mm512_setzero_pd(), \
2490 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002491
Craig Topper8c18e112016-05-17 04:41:50 +00002492#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2493 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2494 (__v16sf)(__m512)(B), \
2495 (__v16sf)_mm512_setzero_ps(), \
2496 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002497
Craig Topper8c18e112016-05-17 04:41:50 +00002498#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2499 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2500 (__v16sf)(__m512)(B), \
2501 (__v16sf)(__m512)(W), (__mmask16)(U), \
2502 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002503
Craig Topper8c18e112016-05-17 04:41:50 +00002504#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2505 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2506 (__v16sf)(__m512)(B), \
2507 (__v16sf)_mm512_setzero_ps(), \
2508 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002509
Craig Topper72c7d512015-02-01 07:35:35 +00002510#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002511 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2512 (__v16sf)(__m512)(A), (__mmask16)-1, \
2513 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002514
Craig Topper8c18e112016-05-17 04:41:50 +00002515#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2516 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2517 (__v16sf)(__m512)(A), (__mmask16)(B), \
2518 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002519
Craig Topper8c18e112016-05-17 04:41:50 +00002520#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2521 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2522 (__v16sf)_mm512_setzero_ps(), \
2523 (__mmask16)(A), \
2524 _MM_FROUND_CUR_DIRECTION); })
2525
Michael Zuckermanc301c192016-06-01 07:35:44 +00002526#define _mm512_mask_roundscale_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
2527 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __C), (int)__imm,\
2528 (__v16sf)( __A),\
2529 (__mmask16)( __B),(int) __R);\
2530})
2531
2532#define _mm512_maskz_roundscale_round_ps( __A, __B, __imm,__R) __extension__ ({ \
2533 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __B), (int)__imm,\
2534 (__v16sf)_mm512_setzero_ps (),\
2535 (__mmask16)( __A),(int) __R);\
2536})
2537
2538#define _mm512_roundscale_round_ps( __A, __imm, __R) __extension__ ({ \
2539 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __A),(int) __imm,\
2540 (__v16sf) _mm512_undefined_ps (),\
2541 (__mmask16) -1,(int) __R);\
2542})
2543
Craig Topper72c7d512015-02-01 07:35:35 +00002544#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002545 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2546 (__v8df)(__m512d)(A), (__mmask8)-1, \
2547 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002548
Craig Topper8c18e112016-05-17 04:41:50 +00002549#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2550 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2551 (__v8df)(__m512d)(A), (__mmask8)(B), \
2552 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002553
Craig Topper8c18e112016-05-17 04:41:50 +00002554#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2555 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2556 (__v8df)_mm512_setzero_pd(), \
2557 (__mmask8)(A), \
2558 _MM_FROUND_CUR_DIRECTION); })
2559
Michael Zuckermanc301c192016-06-01 07:35:44 +00002560#define _mm512_mask_roundscale_round_pd( __A, __B, __C, __imm ,__R) __extension__ ({ \
2561 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __C),(int)__imm,\
2562 (__v8df)( __A),\
2563 (__mmask8)( __B),(int)__R);\
2564})
2565
2566#define _mm512_maskz_roundscale_round_pd( __A, __B, __imm, __R) __extension__ ({ \
2567 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __B),(int)__imm,\
2568 (__v8df)_mm512_setzero_pd (),\
2569 (__mmask8)( __A),(int) __R);\
2570})
2571
2572#define _mm512_roundscale_round_pd( __A, __imm , __R) __extension__ ({ \
2573 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __A),(int) __imm,\
2574 (__v8df)_mm512_undefined_pd (),\
2575 (__mmask8) -1,(int) __R);\
2576})
2577
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002578#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002579 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2580 (__v8df)(__m512d)(B), \
2581 (__v8df)(__m512d)(C), (__mmask8)-1, \
2582 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002583
2584
2585#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002586 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2587 (__v8df)(__m512d)(B), \
2588 (__v8df)(__m512d)(C), \
2589 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002590
2591
2592#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002593 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2594 (__v8df)(__m512d)(B), \
2595 (__v8df)(__m512d)(C), \
2596 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002597
2598
2599#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002600 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2601 (__v8df)(__m512d)(B), \
2602 (__v8df)(__m512d)(C), \
2603 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002604
2605
2606#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002607 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2608 (__v8df)(__m512d)(B), \
2609 -(__v8df)(__m512d)(C), \
2610 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002611
2612
2613#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002614 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2615 (__v8df)(__m512d)(B), \
2616 -(__v8df)(__m512d)(C), \
2617 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002618
2619
2620#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002621 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2622 (__v8df)(__m512d)(B), \
2623 -(__v8df)(__m512d)(C), \
2624 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002625
2626
2627#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002628 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2629 (__v8df)(__m512d)(B), \
2630 (__v8df)(__m512d)(C), (__mmask8)-1, \
2631 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002632
2633
2634#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002635 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2636 (__v8df)(__m512d)(B), \
2637 (__v8df)(__m512d)(C), \
2638 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002639
2640
2641#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002642 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2643 (__v8df)(__m512d)(B), \
2644 (__v8df)(__m512d)(C), \
2645 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002646
2647
2648#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002649 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2650 (__v8df)(__m512d)(B), \
2651 -(__v8df)(__m512d)(C), \
2652 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002653
2654
2655#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002656 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2657 (__v8df)(__m512d)(B), \
2658 -(__v8df)(__m512d)(C), \
2659 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002660
2661
Michael Kupersteine45af542015-06-30 13:36:19 +00002662static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002663_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2664{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002665 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2666 (__v8df) __B,
2667 (__v8df) __C,
2668 (__mmask8) -1,
2669 _MM_FROUND_CUR_DIRECTION);
2670}
2671
Michael Kupersteine45af542015-06-30 13:36:19 +00002672static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002673_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2674{
2675 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2676 (__v8df) __B,
2677 (__v8df) __C,
2678 (__mmask8) __U,
2679 _MM_FROUND_CUR_DIRECTION);
2680}
2681
Michael Kupersteine45af542015-06-30 13:36:19 +00002682static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002683_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2684{
2685 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2686 (__v8df) __B,
2687 (__v8df) __C,
2688 (__mmask8) __U,
2689 _MM_FROUND_CUR_DIRECTION);
2690}
2691
Michael Kupersteine45af542015-06-30 13:36:19 +00002692static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002693_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2694{
2695 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2696 (__v8df) __B,
2697 (__v8df) __C,
2698 (__mmask8) __U,
2699 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002700}
2701
Michael Kupersteine45af542015-06-30 13:36:19 +00002702static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002703_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2704{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002705 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2706 (__v8df) __B,
2707 -(__v8df) __C,
2708 (__mmask8) -1,
2709 _MM_FROUND_CUR_DIRECTION);
2710}
2711
Michael Kupersteine45af542015-06-30 13:36:19 +00002712static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002713_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2714{
2715 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2716 (__v8df) __B,
2717 -(__v8df) __C,
2718 (__mmask8) __U,
2719 _MM_FROUND_CUR_DIRECTION);
2720}
2721
Michael Kupersteine45af542015-06-30 13:36:19 +00002722static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002723_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2724{
2725 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2726 (__v8df) __B,
2727 -(__v8df) __C,
2728 (__mmask8) __U,
2729 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002730}
2731
Michael Kupersteine45af542015-06-30 13:36:19 +00002732static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002733_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2734{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002735 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2736 (__v8df) __B,
2737 (__v8df) __C,
2738 (__mmask8) -1,
2739 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002740}
2741
Michael Kupersteine45af542015-06-30 13:36:19 +00002742static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002743_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2744{
2745 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2746 (__v8df) __B,
2747 (__v8df) __C,
2748 (__mmask8) __U,
2749 _MM_FROUND_CUR_DIRECTION);
2750}
2751
Michael Kupersteine45af542015-06-30 13:36:19 +00002752static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002753_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2754{
2755 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2756 (__v8df) __B,
2757 (__v8df) __C,
2758 (__mmask8) __U,
2759 _MM_FROUND_CUR_DIRECTION);
2760}
2761
Michael Kupersteine45af542015-06-30 13:36:19 +00002762static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002763_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2764{
2765 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2766 (__v8df) __B,
2767 -(__v8df) __C,
2768 (__mmask8) -1,
2769 _MM_FROUND_CUR_DIRECTION);
2770}
2771
Michael Kupersteine45af542015-06-30 13:36:19 +00002772static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002773_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2774{
2775 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2776 (__v8df) __B,
2777 -(__v8df) __C,
2778 (__mmask8) __U,
2779 _MM_FROUND_CUR_DIRECTION);
2780}
2781
2782#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002783 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2784 (__v16sf)(__m512)(B), \
2785 (__v16sf)(__m512)(C), (__mmask16)-1, \
2786 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002787
2788
2789#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002790 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2791 (__v16sf)(__m512)(B), \
2792 (__v16sf)(__m512)(C), \
2793 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002794
2795
2796#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002797 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2798 (__v16sf)(__m512)(B), \
2799 (__v16sf)(__m512)(C), \
2800 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002801
2802
2803#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002804 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2805 (__v16sf)(__m512)(B), \
2806 (__v16sf)(__m512)(C), \
2807 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002808
2809
2810#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002811 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2812 (__v16sf)(__m512)(B), \
2813 -(__v16sf)(__m512)(C), \
2814 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002815
2816
2817#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002818 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2819 (__v16sf)(__m512)(B), \
2820 -(__v16sf)(__m512)(C), \
2821 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002822
2823
2824#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002825 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2826 (__v16sf)(__m512)(B), \
2827 -(__v16sf)(__m512)(C), \
2828 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002829
2830
2831#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002832 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2833 (__v16sf)(__m512)(B), \
2834 (__v16sf)(__m512)(C), (__mmask16)-1, \
2835 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002836
2837
2838#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002839 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2840 (__v16sf)(__m512)(B), \
2841 (__v16sf)(__m512)(C), \
2842 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002843
2844
2845#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002846 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2847 (__v16sf)(__m512)(B), \
2848 (__v16sf)(__m512)(C), \
2849 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002850
2851
2852#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002853 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2854 (__v16sf)(__m512)(B), \
2855 -(__v16sf)(__m512)(C), \
2856 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002857
2858
2859#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002860 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2861 (__v16sf)(__m512)(B), \
2862 -(__v16sf)(__m512)(C), \
2863 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002864
2865
Michael Kupersteine45af542015-06-30 13:36:19 +00002866static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002867_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2868{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002869 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2870 (__v16sf) __B,
2871 (__v16sf) __C,
2872 (__mmask16) -1,
2873 _MM_FROUND_CUR_DIRECTION);
2874}
2875
Michael Kupersteine45af542015-06-30 13:36:19 +00002876static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002877_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2878{
2879 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2880 (__v16sf) __B,
2881 (__v16sf) __C,
2882 (__mmask16) __U,
2883 _MM_FROUND_CUR_DIRECTION);
2884}
2885
Michael Kupersteine45af542015-06-30 13:36:19 +00002886static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002887_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2888{
2889 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2890 (__v16sf) __B,
2891 (__v16sf) __C,
2892 (__mmask16) __U,
2893 _MM_FROUND_CUR_DIRECTION);
2894}
2895
Michael Kupersteine45af542015-06-30 13:36:19 +00002896static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002897_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2898{
2899 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2900 (__v16sf) __B,
2901 (__v16sf) __C,
2902 (__mmask16) __U,
2903 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002904}
2905
Michael Kupersteine45af542015-06-30 13:36:19 +00002906static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002907_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2908{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002909 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2910 (__v16sf) __B,
2911 -(__v16sf) __C,
2912 (__mmask16) -1,
2913 _MM_FROUND_CUR_DIRECTION);
2914}
2915
Michael Kupersteine45af542015-06-30 13:36:19 +00002916static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002917_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2918{
2919 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2920 (__v16sf) __B,
2921 -(__v16sf) __C,
2922 (__mmask16) __U,
2923 _MM_FROUND_CUR_DIRECTION);
2924}
2925
Michael Kupersteine45af542015-06-30 13:36:19 +00002926static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002927_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2928{
2929 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2930 (__v16sf) __B,
2931 -(__v16sf) __C,
2932 (__mmask16) __U,
2933 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002934}
2935
Michael Kupersteine45af542015-06-30 13:36:19 +00002936static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002937_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2938{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002939 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2940 (__v16sf) __B,
2941 (__v16sf) __C,
2942 (__mmask16) -1,
2943 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002944}
2945
Michael Kupersteine45af542015-06-30 13:36:19 +00002946static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002947_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2948{
2949 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2950 (__v16sf) __B,
2951 (__v16sf) __C,
2952 (__mmask16) __U,
2953 _MM_FROUND_CUR_DIRECTION);
2954}
2955
Michael Kupersteine45af542015-06-30 13:36:19 +00002956static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002957_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2958{
2959 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2960 (__v16sf) __B,
2961 (__v16sf) __C,
2962 (__mmask16) __U,
2963 _MM_FROUND_CUR_DIRECTION);
2964}
2965
Michael Kupersteine45af542015-06-30 13:36:19 +00002966static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002967_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2968{
2969 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2970 (__v16sf) __B,
2971 -(__v16sf) __C,
2972 (__mmask16) -1,
2973 _MM_FROUND_CUR_DIRECTION);
2974}
2975
Michael Kupersteine45af542015-06-30 13:36:19 +00002976static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002977_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2978{
2979 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2980 (__v16sf) __B,
2981 -(__v16sf) __C,
2982 (__mmask16) __U,
2983 _MM_FROUND_CUR_DIRECTION);
2984}
2985
2986#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002987 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2988 (__v8df)(__m512d)(B), \
2989 (__v8df)(__m512d)(C), \
2990 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002991
2992
2993#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002994 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2995 (__v8df)(__m512d)(B), \
2996 (__v8df)(__m512d)(C), \
2997 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002998
2999
3000#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003001 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
3002 (__v8df)(__m512d)(B), \
3003 (__v8df)(__m512d)(C), \
3004 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003005
3006
3007#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003008 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
3009 (__v8df)(__m512d)(B), \
3010 (__v8df)(__m512d)(C), \
3011 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003012
3013
3014#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003015 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
3016 (__v8df)(__m512d)(B), \
3017 -(__v8df)(__m512d)(C), \
3018 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003019
3020
3021#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003022 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
3023 (__v8df)(__m512d)(B), \
3024 -(__v8df)(__m512d)(C), \
3025 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003026
3027
3028#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003029 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
3030 (__v8df)(__m512d)(B), \
3031 -(__v8df)(__m512d)(C), \
3032 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003033
3034
Michael Kupersteine45af542015-06-30 13:36:19 +00003035static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003036_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
3037{
3038 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3039 (__v8df) __B,
3040 (__v8df) __C,
3041 (__mmask8) -1,
3042 _MM_FROUND_CUR_DIRECTION);
3043}
3044
Michael Kupersteine45af542015-06-30 13:36:19 +00003045static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003046_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3047{
3048 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3049 (__v8df) __B,
3050 (__v8df) __C,
3051 (__mmask8) __U,
3052 _MM_FROUND_CUR_DIRECTION);
3053}
3054
Michael Kupersteine45af542015-06-30 13:36:19 +00003055static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003056_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3057{
3058 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
3059 (__v8df) __B,
3060 (__v8df) __C,
3061 (__mmask8) __U,
3062 _MM_FROUND_CUR_DIRECTION);
3063}
3064
Michael Kupersteine45af542015-06-30 13:36:19 +00003065static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003066_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
3067{
3068 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3069 (__v8df) __B,
3070 (__v8df) __C,
3071 (__mmask8) __U,
3072 _MM_FROUND_CUR_DIRECTION);
3073}
3074
Michael Kupersteine45af542015-06-30 13:36:19 +00003075static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003076_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
3077{
3078 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3079 (__v8df) __B,
3080 -(__v8df) __C,
3081 (__mmask8) -1,
3082 _MM_FROUND_CUR_DIRECTION);
3083}
3084
Michael Kupersteine45af542015-06-30 13:36:19 +00003085static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003086_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3087{
3088 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3089 (__v8df) __B,
3090 -(__v8df) __C,
3091 (__mmask8) __U,
3092 _MM_FROUND_CUR_DIRECTION);
3093}
3094
Michael Kupersteine45af542015-06-30 13:36:19 +00003095static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003096_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
3097{
3098 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3099 (__v8df) __B,
3100 -(__v8df) __C,
3101 (__mmask8) __U,
3102 _MM_FROUND_CUR_DIRECTION);
3103}
3104
3105#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003106 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3107 (__v16sf)(__m512)(B), \
3108 (__v16sf)(__m512)(C), \
3109 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003110
3111
3112#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003113 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3114 (__v16sf)(__m512)(B), \
3115 (__v16sf)(__m512)(C), \
3116 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003117
3118
3119#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003120 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
3121 (__v16sf)(__m512)(B), \
3122 (__v16sf)(__m512)(C), \
3123 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003124
3125
3126#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003127 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3128 (__v16sf)(__m512)(B), \
3129 (__v16sf)(__m512)(C), \
3130 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003131
3132
3133#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003134 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3135 (__v16sf)(__m512)(B), \
3136 -(__v16sf)(__m512)(C), \
3137 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003138
3139
3140#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003141 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3142 (__v16sf)(__m512)(B), \
3143 -(__v16sf)(__m512)(C), \
3144 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003145
3146
3147#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003148 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3149 (__v16sf)(__m512)(B), \
3150 -(__v16sf)(__m512)(C), \
3151 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003152
3153
Michael Kupersteine45af542015-06-30 13:36:19 +00003154static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003155_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
3156{
3157 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3158 (__v16sf) __B,
3159 (__v16sf) __C,
3160 (__mmask16) -1,
3161 _MM_FROUND_CUR_DIRECTION);
3162}
3163
Michael Kupersteine45af542015-06-30 13:36:19 +00003164static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003165_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3166{
3167 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3168 (__v16sf) __B,
3169 (__v16sf) __C,
3170 (__mmask16) __U,
3171 _MM_FROUND_CUR_DIRECTION);
3172}
3173
Michael Kupersteine45af542015-06-30 13:36:19 +00003174static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003175_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3176{
3177 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3178 (__v16sf) __B,
3179 (__v16sf) __C,
3180 (__mmask16) __U,
3181 _MM_FROUND_CUR_DIRECTION);
3182}
3183
Michael Kupersteine45af542015-06-30 13:36:19 +00003184static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003185_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3186{
3187 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3188 (__v16sf) __B,
3189 (__v16sf) __C,
3190 (__mmask16) __U,
3191 _MM_FROUND_CUR_DIRECTION);
3192}
3193
Michael Kupersteine45af542015-06-30 13:36:19 +00003194static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003195_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3196{
3197 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3198 (__v16sf) __B,
3199 -(__v16sf) __C,
3200 (__mmask16) -1,
3201 _MM_FROUND_CUR_DIRECTION);
3202}
3203
Michael Kupersteine45af542015-06-30 13:36:19 +00003204static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003205_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3206{
3207 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3208 (__v16sf) __B,
3209 -(__v16sf) __C,
3210 (__mmask16) __U,
3211 _MM_FROUND_CUR_DIRECTION);
3212}
3213
Michael Kupersteine45af542015-06-30 13:36:19 +00003214static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003215_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3216{
3217 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3218 (__v16sf) __B,
3219 -(__v16sf) __C,
3220 (__mmask16) __U,
3221 _MM_FROUND_CUR_DIRECTION);
3222}
3223
3224#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003225 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3226 (__v8df)(__m512d)(B), \
3227 (__v8df)(__m512d)(C), \
3228 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003229
3230
Michael Kupersteine45af542015-06-30 13:36:19 +00003231static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003232_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3233{
3234 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3235 (__v8df) __B,
3236 (__v8df) __C,
3237 (__mmask8) __U,
3238 _MM_FROUND_CUR_DIRECTION);
3239}
3240
3241#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003242 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3243 (__v16sf)(__m512)(B), \
3244 (__v16sf)(__m512)(C), \
3245 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003246
3247
Michael Kupersteine45af542015-06-30 13:36:19 +00003248static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003249_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3250{
3251 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3252 (__v16sf) __B,
3253 (__v16sf) __C,
3254 (__mmask16) __U,
3255 _MM_FROUND_CUR_DIRECTION);
3256}
3257
3258#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003259 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3260 (__v8df)(__m512d)(B), \
3261 (__v8df)(__m512d)(C), \
3262 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003263
3264
Michael Kupersteine45af542015-06-30 13:36:19 +00003265static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003266_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3267{
3268 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3269 (__v8df) __B,
3270 (__v8df) __C,
3271 (__mmask8) __U,
3272 _MM_FROUND_CUR_DIRECTION);
3273}
3274
3275#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003276 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3277 (__v16sf)(__m512)(B), \
3278 (__v16sf)(__m512)(C), \
3279 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003280
3281
Michael Kupersteine45af542015-06-30 13:36:19 +00003282static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003283_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3284{
3285 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3286 (__v16sf) __B,
3287 (__v16sf) __C,
3288 (__mmask16) __U,
3289 _MM_FROUND_CUR_DIRECTION);
3290}
3291
3292#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003293 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3294 (__v8df)(__m512d)(B), \
3295 (__v8df)(__m512d)(C), \
3296 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003297
3298
Michael Kupersteine45af542015-06-30 13:36:19 +00003299static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003300_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3301{
3302 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3303 (__v8df) __B,
3304 (__v8df) __C,
3305 (__mmask8) __U,
3306 _MM_FROUND_CUR_DIRECTION);
3307}
3308
3309#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003310 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3311 (__v16sf)(__m512)(B), \
3312 (__v16sf)(__m512)(C), \
3313 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003314
3315
Michael Kupersteine45af542015-06-30 13:36:19 +00003316static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003317_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3318{
3319 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3320 (__v16sf) __B,
3321 (__v16sf) __C,
3322 (__mmask16) __U,
3323 _MM_FROUND_CUR_DIRECTION);
3324}
3325
3326#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003327 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3328 (__v8df)(__m512d)(B), \
3329 (__v8df)(__m512d)(C), \
3330 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003331
3332
3333#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003334 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3335 (__v8df)(__m512d)(B), \
3336 (__v8df)(__m512d)(C), \
3337 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003338
3339
Michael Kupersteine45af542015-06-30 13:36:19 +00003340static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003341_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3342{
3343 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3344 (__v8df) __B,
3345 (__v8df) __C,
3346 (__mmask8) __U,
3347 _MM_FROUND_CUR_DIRECTION);
3348}
3349
Michael Kupersteine45af542015-06-30 13:36:19 +00003350static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003351_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3352{
3353 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3354 (__v8df) __B,
3355 (__v8df) __C,
3356 (__mmask8) __U,
3357 _MM_FROUND_CUR_DIRECTION);
3358}
3359
3360#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003361 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3362 (__v16sf)(__m512)(B), \
3363 (__v16sf)(__m512)(C), \
3364 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003365
3366
3367#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003368 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3369 (__v16sf)(__m512)(B), \
3370 (__v16sf)(__m512)(C), \
3371 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003372
3373
Michael Kupersteine45af542015-06-30 13:36:19 +00003374static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003375_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3376{
3377 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3378 (__v16sf) __B,
3379 (__v16sf) __C,
3380 (__mmask16) __U,
3381 _MM_FROUND_CUR_DIRECTION);
3382}
3383
Michael Kupersteine45af542015-06-30 13:36:19 +00003384static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003385_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3386{
3387 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3388 (__v16sf) __B,
3389 (__v16sf) __C,
3390 (__mmask16) __U,
3391 _MM_FROUND_CUR_DIRECTION);
3392}
3393
3394
3395
Adam Nemet0d5bb552014-07-28 17:14:40 +00003396/* Vector permutations */
3397
Michael Kupersteine45af542015-06-30 13:36:19 +00003398static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003399_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3400{
3401 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3402 /* idx */ ,
3403 (__v16si) __A,
3404 (__v16si) __B,
3405 (__mmask16) -1);
3406}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003407
3408static __inline__ __m512i __DEFAULT_FN_ATTRS
3409_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3410 __m512i __I, __m512i __B)
3411{
3412 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3413 /* idx */ ,
3414 (__v16si) __A,
3415 (__v16si) __B,
3416 (__mmask16) __U);
3417}
3418
3419static __inline__ __m512i __DEFAULT_FN_ATTRS
3420_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3421 __m512i __I, __m512i __B)
3422{
3423 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3424 /* idx */ ,
3425 (__v16si) __A,
3426 (__v16si) __B,
3427 (__mmask16) __U);
3428}
3429
Michael Kupersteine45af542015-06-30 13:36:19 +00003430static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003431_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3432{
3433 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3434 /* idx */ ,
3435 (__v8di) __A,
3436 (__v8di) __B,
3437 (__mmask8) -1);
3438}
3439
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003440static __inline__ __m512i __DEFAULT_FN_ATTRS
3441_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3442 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003443{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003444 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003445 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003446 (__v8di) __A,
3447 (__v8di) __B,
3448 (__mmask8) __U);
3449}
3450
3451
3452static __inline__ __m512i __DEFAULT_FN_ATTRS
3453_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3454 __m512i __I, __m512i __B)
3455{
3456 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3457 /* idx */ ,
3458 (__v8di) __A,
3459 (__v8di) __B,
3460 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003461}
3462
Craig Topper67826a52015-02-01 07:35:40 +00003463#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3464 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003465 (__v8di)(__m512i)(B), (int)(I), \
3466 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003467 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003468
Craig Topper8c18e112016-05-17 04:41:50 +00003469#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3470 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3471 (__v8di)(__m512i)(B), (int)(imm), \
3472 (__v8di)(__m512i)(W), \
3473 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003474
Craig Topper8c18e112016-05-17 04:41:50 +00003475#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3476 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3477 (__v8di)(__m512i)(B), (int)(imm), \
3478 (__v8di)_mm512_setzero_si512(), \
3479 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003480
Craig Topper67826a52015-02-01 07:35:40 +00003481#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003482 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3483 (__v16si)(__m512i)(B), (int)(I), \
3484 (__v16si)_mm512_setzero_si512(), \
3485 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003486
Craig Topper8c18e112016-05-17 04:41:50 +00003487#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3488 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3489 (__v16si)(__m512i)(B), (int)(imm), \
3490 (__v16si)(__m512i)(W), \
3491 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003492
Craig Topper8c18e112016-05-17 04:41:50 +00003493#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3494 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3495 (__v16si)(__m512i)(B), (int)(imm), \
3496 (__v16si)_mm512_setzero_si512(), \
3497 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003498/* Vector Extract */
3499
3500#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003501 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3502 (__v4df)_mm256_setzero_si256(), \
3503 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003504
Craig Topper8c18e112016-05-17 04:41:50 +00003505#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3506 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3507 (__v4df)(__m256d)(W), \
3508 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003509
Craig Topper8c18e112016-05-17 04:41:50 +00003510#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3511 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3512 (__v4df)_mm256_setzero_pd(), \
3513 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003514
Adam Nemetf893ede2015-01-19 20:12:05 +00003515#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003516 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3517 (__v4sf)_mm_setzero_ps(), \
3518 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003519
Craig Topper8c18e112016-05-17 04:41:50 +00003520#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3521 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3522 (__v4sf)(__m128)(W), \
3523 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003524
Craig Topper8c18e112016-05-17 04:41:50 +00003525#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3526 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3527 (__v4sf)_mm_setzero_ps(), \
3528 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003529/* Vector Blend */
3530
Michael Kupersteine45af542015-06-30 13:36:19 +00003531static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003532_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3533{
3534 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3535 (__v8df) __W,
3536 (__mmask8) __U);
3537}
3538
Michael Kupersteine45af542015-06-30 13:36:19 +00003539static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003540_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3541{
3542 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3543 (__v16sf) __W,
3544 (__mmask16) __U);
3545}
3546
Michael Kupersteine45af542015-06-30 13:36:19 +00003547static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003548_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3549{
3550 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3551 (__v8di) __W,
3552 (__mmask8) __U);
3553}
3554
Michael Kupersteine45af542015-06-30 13:36:19 +00003555static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003556_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3557{
3558 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3559 (__v16si) __W,
3560 (__mmask16) __U);
3561}
3562
3563/* Compare */
3564
Craig Topper53565c62015-02-01 22:27:40 +00003565#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3566 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003567 (__v16sf)(__m512)(B), (int)(P), \
3568 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003569
Craig Topper53565c62015-02-01 22:27:40 +00003570#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3571 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003572 (__v16sf)(__m512)(B), (int)(P), \
3573 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003574
3575#define _mm512_cmp_ps_mask(A, B, P) \
3576 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3577
3578#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3579 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3580
3581#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3582 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003583 (__v8df)(__m512d)(B), (int)(P), \
3584 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003585
3586#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3587 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003588 (__v8df)(__m512d)(B), (int)(P), \
3589 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003590
3591#define _mm512_cmp_pd_mask(A, B, P) \
3592 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3593
3594#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3595 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003596
3597/* Conversion */
3598
Michael Zuckerman6170c152016-06-01 14:41:41 +00003599#define _mm512_cvtt_roundps_epu32( __A, __R) __extension__ ({ \
3600__builtin_ia32_cvttps2udq512_mask ((__v16sf)( __A),\
3601 (__v16si)\
3602 _mm512_undefined_epi32 (),\
3603 (__mmask16) -1,( __R));\
3604})
3605
3606#define _mm512_mask_cvtt_roundps_epu32( __W, __U, __A, __R) __extension__ ({ \
3607__builtin_ia32_cvttps2udq512_mask ((__v16sf)( __A),\
3608 (__v16si)( __W),\
3609 (__mmask16)( __U),( __R));\
3610})
3611
3612#define _mm512_maskz_cvtt_roundps_epu32( __U, __A, __R) __extension__ ({ \
3613__builtin_ia32_cvttps2udq512_mask ((__v16sf)( __A),\
3614 (__v16si)\
3615 _mm512_setzero_si512 (),\
3616 (__mmask16)( __U),( __R));\
3617})
3618
3619
Michael Kupersteine45af542015-06-30 13:36:19 +00003620static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003621_mm512_cvttps_epu32(__m512 __A)
3622{
3623 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3624 (__v16si)
3625 _mm512_setzero_si512 (),
3626 (__mmask16) -1,
3627 _MM_FROUND_CUR_DIRECTION);
3628}
3629
Michael Zuckermanf1544752016-05-09 10:32:51 +00003630static __inline__ __m512i __DEFAULT_FN_ATTRS
3631_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3632{
3633 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3634 (__v16si) __W,
3635 (__mmask16) __U,
3636 _MM_FROUND_CUR_DIRECTION);
3637}
3638
3639static __inline__ __m512i __DEFAULT_FN_ATTRS
3640_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3641{
3642 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3643 (__v16si) _mm512_setzero_si512 (),
3644 (__mmask16) __U,
3645 _MM_FROUND_CUR_DIRECTION);
3646}
3647
Craig Topper72c7d512015-02-01 07:35:35 +00003648#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003649 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003650 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003651 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003652
Michael Zuckerman186d8672016-05-31 11:27:34 +00003653#define _mm512_mask_cvt_roundepi32_ps( __W, __U, __A, __R) __extension__ ({ \
3654__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3655 (__v16sf)( __W),\
3656 (__mmask16)( __U),( __R));\
3657})
3658
3659#define _mm512_maskz_cvt_roundepi32_ps( __U, __A, __R) __extension__ ({ \
3660__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3661 (__v16sf)\
3662 _mm512_setzero_ps (),\
3663 (__mmask16)( __U),( __R));\
3664})
3665
Craig Topper72c7d512015-02-01 07:35:35 +00003666#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003667 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003668 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003669 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003670
Michael Zuckerman186d8672016-05-31 11:27:34 +00003671#define _mm512_mask_cvt_roundepu32_ps( __W, __U, __A, __R) __extension__ ({ \
3672__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3673 (__v16sf)( __W),\
3674 (__mmask16)( __U),( __R));\
3675})
3676
3677#define _mm512_maskz_cvt_roundepu32_ps( __U, __A, __R) __extension__ ({ \
3678__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3679 (__v16sf)\
3680 _mm512_setzero_ps (),\
3681 (__mmask16)( __U),( __R));\
3682})
3683
Michael Zuckermanf1544752016-05-09 10:32:51 +00003684static __inline__ __m512 __DEFAULT_FN_ATTRS
3685_mm512_cvtepu32_ps (__m512i __A)
3686{
3687 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3688 (__v16sf) _mm512_undefined_ps (),
3689 (__mmask16) -1,
3690 _MM_FROUND_CUR_DIRECTION);
3691}
3692
3693static __inline__ __m512 __DEFAULT_FN_ATTRS
3694_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3695{
3696 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3697 (__v16sf) __W,
3698 (__mmask16) __U,
3699 _MM_FROUND_CUR_DIRECTION);
3700}
3701
3702static __inline__ __m512 __DEFAULT_FN_ATTRS
3703_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3704{
3705 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3706 (__v16sf) _mm512_setzero_ps (),
3707 (__mmask16) __U,
3708 _MM_FROUND_CUR_DIRECTION);
3709}
3710
Michael Kupersteine45af542015-06-30 13:36:19 +00003711static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003712_mm512_cvtepi32_pd(__m256i __A)
3713{
3714 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003715 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003716 _mm512_setzero_pd (),
3717 (__mmask8) -1);
3718}
3719
Michael Zuckermanf1544752016-05-09 10:32:51 +00003720static __inline__ __m512d __DEFAULT_FN_ATTRS
3721_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3722{
3723 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3724 (__v8df) __W,
3725 (__mmask8) __U);
3726}
3727
3728static __inline__ __m512d __DEFAULT_FN_ATTRS
3729_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3730{
3731 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3732 (__v8df) _mm512_setzero_pd (),
3733 (__mmask8) __U);
3734}
3735
3736static __inline__ __m512 __DEFAULT_FN_ATTRS
3737_mm512_cvtepi32_ps (__m512i __A)
3738{
3739 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3740 (__v16sf) _mm512_undefined_ps (),
3741 (__mmask16) -1,
3742 _MM_FROUND_CUR_DIRECTION);
3743}
3744
3745static __inline__ __m512 __DEFAULT_FN_ATTRS
3746_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3747{
3748 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3749 (__v16sf) __W,
3750 (__mmask16) __U,
3751 _MM_FROUND_CUR_DIRECTION);
3752}
3753
3754static __inline__ __m512 __DEFAULT_FN_ATTRS
3755_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3756{
3757 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3758 (__v16sf) _mm512_setzero_ps (),
3759 (__mmask16) __U,
3760 _MM_FROUND_CUR_DIRECTION);
3761}
3762
Michael Kupersteine45af542015-06-30 13:36:19 +00003763static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003764_mm512_cvtepu32_pd(__m256i __A)
3765{
3766 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3767 (__v8df)
3768 _mm512_setzero_pd (),
3769 (__mmask8) -1);
3770}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003771
Michael Zuckermanf1544752016-05-09 10:32:51 +00003772static __inline__ __m512d __DEFAULT_FN_ATTRS
3773_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3774{
3775 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3776 (__v8df) __W,
3777 (__mmask8) __U);
3778}
3779
3780static __inline__ __m512d __DEFAULT_FN_ATTRS
3781_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3782{
3783 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3784 (__v8df) _mm512_setzero_pd (),
3785 (__mmask8) __U);
3786}
3787
Craig Topper72c7d512015-02-01 07:35:35 +00003788#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003789 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003790 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003791 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003792
Michael Zuckerman186d8672016-05-31 11:27:34 +00003793#define _mm512_mask_cvt_roundpd_ps(W, U, A, R) __extension__ ({ \
3794 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3795 (__v8sf)(W), \
3796 (__mmask8)(U), (int)(R)); })
3797
3798#define _mm512_maskz_cvt_roundpd_ps(U, A, R) __extension__ ({ \
3799 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3800 (__v8sf)_mm256_setzero_ps(), \
3801 (__mmask8)(U), (int)(R)); })
3802
Michael Zuckermanf1544752016-05-09 10:32:51 +00003803static __inline__ __m256 __DEFAULT_FN_ATTRS
3804_mm512_cvtpd_ps (__m512d __A)
3805{
3806 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3807 (__v8sf) _mm256_undefined_ps (),
3808 (__mmask8) -1,
3809 _MM_FROUND_CUR_DIRECTION);
3810}
3811
3812static __inline__ __m256 __DEFAULT_FN_ATTRS
3813_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3814{
3815 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3816 (__v8sf) __W,
3817 (__mmask8) __U,
3818 _MM_FROUND_CUR_DIRECTION);
3819}
3820
3821static __inline__ __m256 __DEFAULT_FN_ATTRS
3822_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3823{
3824 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3825 (__v8sf) _mm256_setzero_ps (),
3826 (__mmask8) __U,
3827 _MM_FROUND_CUR_DIRECTION);
3828}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003829
Michael Zuckerman6170c152016-06-01 14:41:41 +00003830#define _mm512_cvt_roundps_ph( __A, __I) __extension__ ({ \
3831 (__m256i)__builtin_ia32_vcvtps2ph512_mask ((__v16sf)( __A),\
3832 (__I),\
3833 (__v16hi)_mm256_undefined_si256 (),\
3834 (__mmask16) -1);\
3835})
3836
3837#define _mm512_mask_cvt_roundps_ph( __U, __W, __A, __I) __extension__ ({ \
3838 (__m256i)__builtin_ia32_vcvtps2ph512_mask ((__v16sf)( __A),\
3839 (__I),\
3840 (__v16hi)( __U),\
3841 (__mmask16)( __W));\
3842})
3843
3844#define _mm512_maskz_cvt_roundps_ph( __W, __A, __I) __extension__ ({ \
3845 (__m256i)__builtin_ia32_vcvtps2ph512_mask ((__v16sf)( __A),\
3846 (__I),\
3847 (__v16hi)\
3848 _mm256_setzero_si256 (),\
3849 (__mmask16)( __W));\
3850})
3851
Craig Topper72c7d512015-02-01 07:35:35 +00003852#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003853 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003854 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003855 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003856
Craig Topper8c18e112016-05-17 04:41:50 +00003857#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3858 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3859 (__v16hi)(__m256i)(U), \
3860 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003861
Craig Topper8c18e112016-05-17 04:41:50 +00003862#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3863 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3864 (__v16hi)_mm256_setzero_si256(), \
3865 (__mmask16)(W)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003866
3867#define _mm512_cvt_roundph_ps( __A, __R) __extension__ ({ \
3868__builtin_ia32_vcvtph2ps512_mask ((__v16hi)( __A),\
3869 (__v16sf)\
3870 _mm512_undefined_ps (),\
3871 (__mmask16) -1,( __R));\
3872})
3873
3874#define _mm512_mask_cvt_roundph_ps( __W, __U, __A, __R) __extension__ ({ \
3875__builtin_ia32_vcvtph2ps512_mask ((__v16hi)( __A),\
3876 (__v16sf)( __W),\
3877 (__mmask16)( __U),( __R));\
3878})
3879
3880#define _mm512_maskz_cvt_roundph_ps( __U, __A, __R) __extension__ ({ \
3881__builtin_ia32_vcvtph2ps512_mask ((__v16hi)( __A),\
3882 (__v16sf)\
3883 _mm512_setzero_ps (),\
3884 (__mmask16)( __U),( __R));\
3885})
3886
3887
Michael Kupersteine45af542015-06-30 13:36:19 +00003888static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003889_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003890{
3891 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003892 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003893 _mm512_setzero_ps (),
3894 (__mmask16) -1,
3895 _MM_FROUND_CUR_DIRECTION);
3896}
3897
Michael Zuckermanf1544752016-05-09 10:32:51 +00003898static __inline__ __m512 __DEFAULT_FN_ATTRS
3899_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003900{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003901 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3902 (__v16sf) __W,
3903 (__mmask16) __U,
3904 _MM_FROUND_CUR_DIRECTION);
3905}
3906
3907static __inline__ __m512 __DEFAULT_FN_ATTRS
3908_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3909{
3910 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3911 (__v16sf) _mm512_setzero_ps (),
3912 (__mmask16) __U,
3913 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003914}
3915
Michael Zuckerman186d8672016-05-31 11:27:34 +00003916#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3917 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3918 (__v8si)_mm256_setzero_si256(), \
3919 (__mmask8)-1, (int)(R)); })
3920
3921#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, R) __extension__ ({ \
3922 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3923 (__v8si)(W), \
3924 (__mmask8)(U), (int)(R)); })
3925
3926#define _mm512_maskz_cvtt_roundpd_epi32( U, A, R) __extension__ ({ \
3927 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3928 (__v8si)_mm256_setzero_si256(), \
3929 (__mmask8)(U), (int)(R)); })
3930
Michael Kupersteine45af542015-06-30 13:36:19 +00003931static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003932_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003933{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003934 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003935 (__v8si)_mm256_setzero_si256(),
3936 (__mmask8) -1,
3937 _MM_FROUND_CUR_DIRECTION);
3938}
3939
Michael Zuckermanf1544752016-05-09 10:32:51 +00003940static __inline__ __m256i __DEFAULT_FN_ATTRS
3941_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3942{
3943 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3944 (__v8si) __W,
3945 (__mmask8) __U,
3946 _MM_FROUND_CUR_DIRECTION);
3947}
3948
3949static __inline__ __m256i __DEFAULT_FN_ATTRS
3950_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3951{
3952 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3953 (__v8si) _mm256_setzero_si256 (),
3954 (__mmask8) __U,
3955 _MM_FROUND_CUR_DIRECTION);
3956}
3957
Craig Topper72c7d512015-02-01 07:35:35 +00003958#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003959 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003960 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003961 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003962
Michael Zuckerman186d8672016-05-31 11:27:34 +00003963#define _mm512_mask_cvtt_roundps_epi32( W, U, A, R) __extension__ ({ \
3964 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3965 (__v16si)(W), \
3966 (__mmask16)(U), (int)(R)); })
3967
3968#define _mm512_maskz_cvtt_roundps_epi32( U, A, R) __extension__ ({ \
3969 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3970 (__v16si)_mm512_setzero_si512(), \
3971 (__mmask16)(U), (int)(R)); })
3972
Michael Zuckermanf1544752016-05-09 10:32:51 +00003973static __inline __m512i __DEFAULT_FN_ATTRS
3974_mm512_cvttps_epi32(__m512 __a)
3975{
3976 return (__m512i)
3977 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3978 (__v16si) _mm512_setzero_si512 (),
3979 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3980}
3981
3982static __inline__ __m512i __DEFAULT_FN_ATTRS
3983_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3984{
3985 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3986 (__v16si) __W,
3987 (__mmask16) __U,
3988 _MM_FROUND_CUR_DIRECTION);
3989}
3990
3991static __inline__ __m512i __DEFAULT_FN_ATTRS
3992_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3993{
3994 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3995 (__v16si) _mm512_setzero_si512 (),
3996 (__mmask16) __U,
3997 _MM_FROUND_CUR_DIRECTION);
3998}
Craig Topper72c7d512015-02-01 07:35:35 +00003999
4000#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004001 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004002 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004003 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004004
Michael Zuckerman186d8672016-05-31 11:27:34 +00004005#define _mm512_mask_cvt_roundps_epi32( __W, __U, __A, __R) __extension__ ({ \
4006 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
4007 (__v16si)( __W),\
4008 (__mmask16)( __U),( __R));\
4009})
4010
4011#define _mm512_maskz_cvt_roundps_epi32( __U, __A, __R) __extension__ ({ \
4012 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
4013 (__v16si)\
4014 _mm512_setzero_si512 (),\
4015 (__mmask16)( __U),( __R));\
4016})
4017
Michael Zuckermanf1544752016-05-09 10:32:51 +00004018static __inline__ __m512i __DEFAULT_FN_ATTRS
4019_mm512_cvtps_epi32 (__m512 __A)
4020{
4021 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4022 (__v16si) _mm512_undefined_epi32 (),
4023 (__mmask16) -1,
4024 _MM_FROUND_CUR_DIRECTION);
4025}
4026
4027static __inline__ __m512i __DEFAULT_FN_ATTRS
4028_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
4029{
4030 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4031 (__v16si) __W,
4032 (__mmask16) __U,
4033 _MM_FROUND_CUR_DIRECTION);
4034}
4035
4036static __inline__ __m512i __DEFAULT_FN_ATTRS
4037_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
4038{
4039 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4040 (__v16si)
4041 _mm512_setzero_si512 (),
4042 (__mmask16) __U,
4043 _MM_FROUND_CUR_DIRECTION);
4044}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00004045
Craig Topper72c7d512015-02-01 07:35:35 +00004046#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004047 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004048 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004049 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004050
Michael Zuckerman186d8672016-05-31 11:27:34 +00004051#define _mm512_mask_cvt_roundpd_epi32( W, U, A, R) __extension__ ({ \
4052 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
4053 (__v8si)(W), \
4054 (__mmask8)(U), (int)(R)); })
4055
4056#define _mm512_maskz_cvt_roundpd_epi32(U, A, R) __extension__ ({ \
4057 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
4058 (__v8si)_mm256_setzero_si256(), \
4059 (__mmask8)(U), (int)(R)); })
4060
Michael Zuckermanf1544752016-05-09 10:32:51 +00004061static __inline__ __m256i __DEFAULT_FN_ATTRS
4062_mm512_cvtpd_epi32 (__m512d __A)
4063{
4064 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4065 (__v8si)
4066 _mm256_undefined_si256 (),
4067 (__mmask8) -1,
4068 _MM_FROUND_CUR_DIRECTION);
4069}
4070
4071static __inline__ __m256i __DEFAULT_FN_ATTRS
4072_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
4073{
4074 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4075 (__v8si) __W,
4076 (__mmask8) __U,
4077 _MM_FROUND_CUR_DIRECTION);
4078}
4079
4080static __inline__ __m256i __DEFAULT_FN_ATTRS
4081_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
4082{
4083 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4084 (__v8si)
4085 _mm256_setzero_si256 (),
4086 (__mmask8) __U,
4087 _MM_FROUND_CUR_DIRECTION);
4088}
4089
Craig Topper72c7d512015-02-01 07:35:35 +00004090#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004091 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004092 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004093 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004094
Michael Zuckerman186d8672016-05-31 11:27:34 +00004095#define _mm512_mask_cvt_roundps_epu32( __W, __U, __A, __R) __extension__ ({ \
4096 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
4097 (__v16si)( __W),\
4098 (__mmask16)( __U),( __R));\
4099})
4100
4101#define _mm512_maskz_cvt_roundps_epu32( __U, __A, __R) __extension__ ({ \
4102 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
4103 (__v16si)\
4104 _mm512_setzero_si512 (),\
4105 (__mmask16)( __U),( __R));\
4106})
4107
Michael Zuckermanf1544752016-05-09 10:32:51 +00004108static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00004109_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00004110{
4111 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
4112 (__v16si)\
4113 _mm512_undefined_epi32 (),\
4114 (__mmask16) -1,\
4115 _MM_FROUND_CUR_DIRECTION);\
4116}
4117
4118static __inline__ __m512i __DEFAULT_FN_ATTRS
4119_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
4120{
4121 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4122 (__v16si) __W,
4123 (__mmask16) __U,
4124 _MM_FROUND_CUR_DIRECTION);
4125}
4126
Michael Zuckerman9fcf3552016-05-30 13:22:12 +00004127static __inline__ __m512i __DEFAULT_FN_ATTRS
4128_mm512_maskz_cvtps_epu32 ( __mmask16 __U, __m512 __A)
4129{
4130 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4131 (__v16si)
4132 _mm512_setzero_si512 (),
4133 (__mmask16) __U ,
4134 _MM_FROUND_CUR_DIRECTION);
4135}
4136
Craig Topper72c7d512015-02-01 07:35:35 +00004137#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004138 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004139 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004140 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004141
Michael Zuckerman186d8672016-05-31 11:27:34 +00004142#define _mm512_mask_cvt_roundpd_epu32( W, U, A, R) __extension__ ({ \
4143 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4144 (__v8si)(W), \
4145 (__mmask8) (U), (int)(R)); })
4146
4147#define _mm512_maskz_cvt_roundpd_epu32(U, A, R) __extension__ ({ \
4148 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4149 (__v8si)_mm256_setzero_si256(), \
4150 (__mmask8)(U), (int)(R)); })
4151
Michael Zuckermanf1544752016-05-09 10:32:51 +00004152static __inline__ __m256i __DEFAULT_FN_ATTRS
4153_mm512_cvtpd_epu32 (__m512d __A)
4154{
4155 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4156 (__v8si)
4157 _mm256_undefined_si256 (),
4158 (__mmask8) -1,
4159 _MM_FROUND_CUR_DIRECTION);
4160}
4161
4162static __inline__ __m256i __DEFAULT_FN_ATTRS
4163_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
4164{
4165 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4166 (__v8si) __W,
4167 (__mmask8) __U,
4168 _MM_FROUND_CUR_DIRECTION);
4169}
4170
4171static __inline__ __m256i __DEFAULT_FN_ATTRS
4172_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
4173{
4174 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4175 (__v8si)
4176 _mm256_setzero_si256 (),
4177 (__mmask8) __U,
4178 _MM_FROUND_CUR_DIRECTION);
4179}
Adam Nemet63a951e2015-01-14 01:31:17 +00004180/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00004181static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004182_mm512_unpackhi_pd(__m512d __a, __m512d __b)
4183{
4184 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
4185}
4186
Michael Kupersteine45af542015-06-30 13:36:19 +00004187static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004188_mm512_unpacklo_pd(__m512d __a, __m512d __b)
4189{
4190 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
4191}
4192
Michael Kupersteine45af542015-06-30 13:36:19 +00004193static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004194_mm512_unpackhi_ps(__m512 __a, __m512 __b)
4195{
4196 return __builtin_shufflevector(__a, __b,
4197 2, 18, 3, 19,
4198 2+4, 18+4, 3+4, 19+4,
4199 2+8, 18+8, 3+8, 19+8,
4200 2+12, 18+12, 3+12, 19+12);
4201}
4202
Michael Kupersteine45af542015-06-30 13:36:19 +00004203static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004204_mm512_unpacklo_ps(__m512 __a, __m512 __b)
4205{
4206 return __builtin_shufflevector(__a, __b,
4207 0, 16, 1, 17,
4208 0+4, 16+4, 1+4, 17+4,
4209 0+8, 16+8, 1+8, 17+8,
4210 0+12, 16+12, 1+12, 17+12);
4211}
4212
Adam Nemet0d5bb552014-07-28 17:14:40 +00004213/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004214
Michael Kupersteine45af542015-06-30 13:36:19 +00004215static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004216_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004217{
4218 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4219 (__v16si) __B,
4220 (__mmask16) -1);
4221}
4222
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004223static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4224_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
4225{
4226 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4227 (__v16si) __B, __U);
4228}
4229
Michael Kupersteine45af542015-06-30 13:36:19 +00004230static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004231_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004232{
4233 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
4234 (__v8di) __B,
4235 (__mmask8) -1);
4236}
4237
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004238static __inline__ __mmask8 __DEFAULT_FN_ATTRS
4239_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
4240{
4241 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
4242}
4243
4244
Adam Nemet0d5bb552014-07-28 17:14:40 +00004245/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004246
Michael Kupersteine45af542015-06-30 13:36:19 +00004247static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004248_mm512_loadu_si512 (void const *__P)
4249{
Craig Topper4537ea72016-05-14 06:03:13 +00004250 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004251 (__v16si)
4252 _mm512_setzero_si512 (),
4253 (__mmask16) -1);
4254}
4255
4256static __inline __m512i __DEFAULT_FN_ATTRS
4257_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4258{
Craig Topper4537ea72016-05-14 06:03:13 +00004259 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004260 (__v16si) __W,
4261 (__mmask16) __U);
4262}
4263
4264
4265static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004266_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004267{
Craig Topper4537ea72016-05-14 06:03:13 +00004268 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004269 (__v16si)
4270 _mm512_setzero_si512 (),
4271 (__mmask16) __U);
4272}
4273
Michael Kupersteine45af542015-06-30 13:36:19 +00004274static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004275_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4276{
Craig Topper4537ea72016-05-14 06:03:13 +00004277 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004278 (__v8di) __W,
4279 (__mmask8) __U);
4280}
4281
4282static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004283_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004284{
Craig Topper4537ea72016-05-14 06:03:13 +00004285 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004286 (__v8di)
4287 _mm512_setzero_si512 (),
4288 (__mmask8) __U);
4289}
4290
Michael Kupersteine45af542015-06-30 13:36:19 +00004291static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004292_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
4293{
Craig Topper4537ea72016-05-14 06:03:13 +00004294 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004295 (__v16sf) __W,
4296 (__mmask16) __U);
4297}
4298
4299static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004300_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004301{
Craig Topper4537ea72016-05-14 06:03:13 +00004302 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004303 (__v16sf)
4304 _mm512_setzero_ps (),
4305 (__mmask16) __U);
4306}
4307
Michael Kupersteine45af542015-06-30 13:36:19 +00004308static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004309_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004310{
Craig Topper4537ea72016-05-14 06:03:13 +00004311 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004312 (__v8df) __W,
4313 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00004314}
4315
Michael Kupersteine45af542015-06-30 13:36:19 +00004316static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004317_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00004318{
Craig Topper4537ea72016-05-14 06:03:13 +00004319 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00004320 (__v8df)
4321 _mm512_setzero_pd (),
4322 (__mmask8) __U);
4323}
4324
Michael Kupersteine45af542015-06-30 13:36:19 +00004325static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004326_mm512_loadu_pd(double const *__p)
4327{
4328 struct __loadu_pd {
4329 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004330 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004331 return ((struct __loadu_pd*)__p)->__v;
4332}
4333
Michael Kupersteine45af542015-06-30 13:36:19 +00004334static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004335_mm512_loadu_ps(float const *__p)
4336{
4337 struct __loadu_ps {
4338 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004339 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004340 return ((struct __loadu_ps*)__p)->__v;
4341}
4342
Michael Kupersteine45af542015-06-30 13:36:19 +00004343static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004344_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004345{
4346 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
4347 (__v16sf)
4348 _mm512_setzero_ps (),
4349 (__mmask16) -1);
4350}
4351
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004352static __inline __m512 __DEFAULT_FN_ATTRS
4353_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4354{
4355 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4356 (__v16sf) __W,
4357 (__mmask16) __U);
4358}
4359
4360static __inline __m512 __DEFAULT_FN_ATTRS
4361_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4362{
4363 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4364 (__v16sf)
4365 _mm512_setzero_ps (),
4366 (__mmask16) __U);
4367}
4368
Michael Kupersteine45af542015-06-30 13:36:19 +00004369static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004370_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004371{
4372 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4373 (__v8df)
4374 _mm512_setzero_pd (),
4375 (__mmask8) -1);
4376}
4377
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004378static __inline __m512d __DEFAULT_FN_ATTRS
4379_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4380{
4381 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4382 (__v8df) __W,
4383 (__mmask8) __U);
4384}
4385
4386static __inline __m512d __DEFAULT_FN_ATTRS
4387_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4388{
4389 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4390 (__v8df)
4391 _mm512_setzero_pd (),
4392 (__mmask8) __U);
4393}
4394
4395static __inline __m512i __DEFAULT_FN_ATTRS
4396_mm512_load_si512 (void const *__P)
4397{
4398 return *(__m512i *) __P;
4399}
4400
4401static __inline __m512i __DEFAULT_FN_ATTRS
4402_mm512_load_epi32 (void const *__P)
4403{
4404 return *(__m512i *) __P;
4405}
4406
4407static __inline __m512i __DEFAULT_FN_ATTRS
4408_mm512_load_epi64 (void const *__P)
4409{
4410 return *(__m512i *) __P;
4411}
4412
Adam Nemet0d5bb552014-07-28 17:14:40 +00004413/* SIMD store ops */
4414
Michael Kupersteine45af542015-06-30 13:36:19 +00004415static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004416_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004417{
Craig Topper4537ea72016-05-14 06:03:13 +00004418 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004419 (__mmask8) __U);
4420}
4421
Michael Kupersteine45af542015-06-30 13:36:19 +00004422static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004423_mm512_storeu_si512 (void *__P, __m512i __A)
4424{
Craig Topper4537ea72016-05-14 06:03:13 +00004425 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004426 (__mmask16) -1);
4427}
4428
4429static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004430_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004431{
Craig Topper4537ea72016-05-14 06:03:13 +00004432 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004433 (__mmask16) __U);
4434}
4435
Michael Kupersteine45af542015-06-30 13:36:19 +00004436static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004437_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004438{
Craig Topper4537ea72016-05-14 06:03:13 +00004439 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004440}
4441
Michael Kupersteine45af542015-06-30 13:36:19 +00004442static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004443_mm512_storeu_pd(void *__P, __m512d __A)
4444{
Craig Topper4537ea72016-05-14 06:03:13 +00004445 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004446}
4447
Michael Kupersteine45af542015-06-30 13:36:19 +00004448static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004449_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004450{
Craig Topper4537ea72016-05-14 06:03:13 +00004451 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004452 (__mmask16) __U);
4453}
4454
Michael Kupersteine45af542015-06-30 13:36:19 +00004455static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004456_mm512_storeu_ps(void *__P, __m512 __A)
4457{
Craig Topper4537ea72016-05-14 06:03:13 +00004458 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004459}
4460
Michael Kupersteine45af542015-06-30 13:36:19 +00004461static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004462_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004463{
Adam Nemetc0cff242015-01-16 18:51:50 +00004464 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004465}
4466
Michael Kupersteine45af542015-06-30 13:36:19 +00004467static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004468_mm512_store_pd(void *__P, __m512d __A)
4469{
4470 *(__m512d*)__P = __A;
4471}
4472
Michael Kupersteine45af542015-06-30 13:36:19 +00004473static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004474_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4475{
4476 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4477 (__mmask16) __U);
4478}
4479
Michael Kupersteine45af542015-06-30 13:36:19 +00004480static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004481_mm512_store_ps(void *__P, __m512 __A)
4482{
4483 *(__m512*)__P = __A;
4484}
4485
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004486static __inline void __DEFAULT_FN_ATTRS
4487_mm512_store_si512 (void *__P, __m512i __A)
4488{
4489 *(__m512i *) __P = __A;
4490}
4491
4492static __inline void __DEFAULT_FN_ATTRS
4493_mm512_store_epi32 (void *__P, __m512i __A)
4494{
4495 *(__m512i *) __P = __A;
4496}
4497
4498static __inline void __DEFAULT_FN_ATTRS
4499_mm512_store_epi64 (void *__P, __m512i __A)
4500{
4501 *(__m512i *) __P = __A;
4502}
4503
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004504/* Mask ops */
4505
Michael Kupersteine45af542015-06-30 13:36:19 +00004506static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004507_mm512_knot(__mmask16 __M)
4508{
4509 return __builtin_ia32_knothi(__M);
4510}
4511
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004512/* Integer compare */
4513
Michael Kupersteine45af542015-06-30 13:36:19 +00004514static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004515_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4516 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4517 (__mmask16)-1);
4518}
4519
Michael Kupersteine45af542015-06-30 13:36:19 +00004520static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004521_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4522 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4523 __u);
4524}
4525
Michael Kupersteine45af542015-06-30 13:36:19 +00004526static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004527_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4528 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4529 (__mmask16)-1);
4530}
4531
Michael Kupersteine45af542015-06-30 13:36:19 +00004532static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004533_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4534 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4535 __u);
4536}
4537
Michael Kupersteine45af542015-06-30 13:36:19 +00004538static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004539_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4540 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4541 __u);
4542}
4543
Michael Kupersteine45af542015-06-30 13:36:19 +00004544static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004545_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4546 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4547 (__mmask8)-1);
4548}
4549
Michael Kupersteine45af542015-06-30 13:36:19 +00004550static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004551_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4552 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4553 (__mmask8)-1);
4554}
4555
Michael Kupersteine45af542015-06-30 13:36:19 +00004556static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004557_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4558 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4559 __u);
4560}
4561
Michael Kupersteine45af542015-06-30 13:36:19 +00004562static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004563_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4564 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4565 (__mmask16)-1);
4566}
4567
Michael Kupersteine45af542015-06-30 13:36:19 +00004568static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004569_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4570 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4571 __u);
4572}
4573
Michael Kupersteine45af542015-06-30 13:36:19 +00004574static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004575_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4576 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4577 (__mmask16)-1);
4578}
4579
Michael Kupersteine45af542015-06-30 13:36:19 +00004580static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004581_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4582 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4583 __u);
4584}
4585
Michael Kupersteine45af542015-06-30 13:36:19 +00004586static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004587_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4588 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4589 (__mmask8)-1);
4590}
4591
Michael Kupersteine45af542015-06-30 13:36:19 +00004592static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004593_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4594 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4595 __u);
4596}
4597
Michael Kupersteine45af542015-06-30 13:36:19 +00004598static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004599_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4600 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4601 (__mmask8)-1);
4602}
4603
Michael Kupersteine45af542015-06-30 13:36:19 +00004604static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004605_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4606 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4607 __u);
4608}
4609
Michael Kupersteine45af542015-06-30 13:36:19 +00004610static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004611_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4612 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4613 (__mmask16)-1);
4614}
4615
Michael Kupersteine45af542015-06-30 13:36:19 +00004616static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004617_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4618 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4619 __u);
4620}
4621
Michael Kupersteine45af542015-06-30 13:36:19 +00004622static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004623_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4624 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4625 (__mmask16)-1);
4626}
4627
Michael Kupersteine45af542015-06-30 13:36:19 +00004628static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004629_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4630 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4631 __u);
4632}
4633
Michael Kupersteine45af542015-06-30 13:36:19 +00004634static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004635_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4636 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4637 __u);
4638}
4639
Michael Kupersteine45af542015-06-30 13:36:19 +00004640static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004641_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4642 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4643 (__mmask8)-1);
4644}
4645
Michael Kupersteine45af542015-06-30 13:36:19 +00004646static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004647_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4648 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4649 (__mmask8)-1);
4650}
4651
Michael Kupersteine45af542015-06-30 13:36:19 +00004652static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004653_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4654 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4655 __u);
4656}
4657
Michael Kupersteine45af542015-06-30 13:36:19 +00004658static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004659_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4660 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4661 (__mmask16)-1);
4662}
4663
Michael Kupersteine45af542015-06-30 13:36:19 +00004664static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004665_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4666 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4667 __u);
4668}
4669
Michael Kupersteine45af542015-06-30 13:36:19 +00004670static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004671_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4672 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4673 (__mmask16)-1);
4674}
4675
Michael Kupersteine45af542015-06-30 13:36:19 +00004676static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004677_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4678 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4679 __u);
4680}
4681
Michael Kupersteine45af542015-06-30 13:36:19 +00004682static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004683_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4684 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4685 (__mmask8)-1);
4686}
4687
Michael Kupersteine45af542015-06-30 13:36:19 +00004688static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004689_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4690 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4691 __u);
4692}
4693
Michael Kupersteine45af542015-06-30 13:36:19 +00004694static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004695_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4696 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4697 (__mmask8)-1);
4698}
4699
Michael Kupersteine45af542015-06-30 13:36:19 +00004700static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004701_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4702 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4703 __u);
4704}
4705
Michael Kupersteine45af542015-06-30 13:36:19 +00004706static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004707_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4708 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4709 (__mmask16)-1);
4710}
4711
Michael Kupersteine45af542015-06-30 13:36:19 +00004712static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004713_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4714 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4715 __u);
4716}
4717
Michael Kupersteine45af542015-06-30 13:36:19 +00004718static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004719_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4720 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4721 (__mmask16)-1);
4722}
4723
Michael Kupersteine45af542015-06-30 13:36:19 +00004724static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004725_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4726 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4727 __u);
4728}
4729
Michael Kupersteine45af542015-06-30 13:36:19 +00004730static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004731_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4732 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4733 (__mmask8)-1);
4734}
4735
Michael Kupersteine45af542015-06-30 13:36:19 +00004736static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004737_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4738 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4739 __u);
4740}
4741
Michael Kupersteine45af542015-06-30 13:36:19 +00004742static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004743_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4744 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4745 (__mmask8)-1);
4746}
4747
Michael Kupersteine45af542015-06-30 13:36:19 +00004748static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004749_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4750 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4751 __u);
4752}
4753
Michael Kupersteine45af542015-06-30 13:36:19 +00004754static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004755_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4756 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4757 (__mmask16)-1);
4758}
4759
Michael Kupersteine45af542015-06-30 13:36:19 +00004760static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004761_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4762 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4763 __u);
4764}
4765
Michael Kupersteine45af542015-06-30 13:36:19 +00004766static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004767_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4768 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4769 (__mmask16)-1);
4770}
4771
Michael Kupersteine45af542015-06-30 13:36:19 +00004772static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004773_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4774 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4775 __u);
4776}
4777
Michael Kupersteine45af542015-06-30 13:36:19 +00004778static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004779_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4780 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4781 (__mmask8)-1);
4782}
4783
Michael Kupersteine45af542015-06-30 13:36:19 +00004784static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004785_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4786 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4787 __u);
4788}
4789
Michael Kupersteine45af542015-06-30 13:36:19 +00004790static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004791_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4792 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4793 (__mmask8)-1);
4794}
4795
Michael Kupersteine45af542015-06-30 13:36:19 +00004796static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004797_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4798 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4799 __u);
4800}
4801
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004802static __inline__ __m512i __DEFAULT_FN_ATTRS
4803_mm512_cvtepi8_epi32 (__m128i __A)
4804{
4805 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4806 (__v16si)
4807 _mm512_setzero_si512 (),
4808 (__mmask16) -1);
4809}
4810
4811static __inline__ __m512i __DEFAULT_FN_ATTRS
4812_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4813{
4814 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4815 (__v16si) __W,
4816 (__mmask16) __U);
4817}
4818
4819static __inline__ __m512i __DEFAULT_FN_ATTRS
4820_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4821{
4822 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4823 (__v16si)
4824 _mm512_setzero_si512 (),
4825 (__mmask16) __U);
4826}
4827
4828static __inline__ __m512i __DEFAULT_FN_ATTRS
4829_mm512_cvtepi8_epi64 (__m128i __A)
4830{
4831 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4832 (__v8di)
4833 _mm512_setzero_si512 (),
4834 (__mmask8) -1);
4835}
4836
4837static __inline__ __m512i __DEFAULT_FN_ATTRS
4838_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4839{
4840 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4841 (__v8di) __W,
4842 (__mmask8) __U);
4843}
4844
4845static __inline__ __m512i __DEFAULT_FN_ATTRS
4846_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4847{
4848 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4849 (__v8di)
4850 _mm512_setzero_si512 (),
4851 (__mmask8) __U);
4852}
4853
4854static __inline__ __m512i __DEFAULT_FN_ATTRS
4855_mm512_cvtepi32_epi64 (__m256i __X)
4856{
4857 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4858 (__v8di)
4859 _mm512_setzero_si512 (),
4860 (__mmask8) -1);
4861}
4862
4863static __inline__ __m512i __DEFAULT_FN_ATTRS
4864_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4865{
4866 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4867 (__v8di) __W,
4868 (__mmask8) __U);
4869}
4870
4871static __inline__ __m512i __DEFAULT_FN_ATTRS
4872_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4873{
4874 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4875 (__v8di)
4876 _mm512_setzero_si512 (),
4877 (__mmask8) __U);
4878}
4879
4880static __inline__ __m512i __DEFAULT_FN_ATTRS
4881_mm512_cvtepi16_epi32 (__m256i __A)
4882{
4883 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4884 (__v16si)
4885 _mm512_setzero_si512 (),
4886 (__mmask16) -1);
4887}
4888
4889static __inline__ __m512i __DEFAULT_FN_ATTRS
4890_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4891{
4892 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4893 (__v16si) __W,
4894 (__mmask16) __U);
4895}
4896
4897static __inline__ __m512i __DEFAULT_FN_ATTRS
4898_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4899{
4900 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4901 (__v16si)
4902 _mm512_setzero_si512 (),
4903 (__mmask16) __U);
4904}
4905
4906static __inline__ __m512i __DEFAULT_FN_ATTRS
4907_mm512_cvtepi16_epi64 (__m128i __A)
4908{
4909 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4910 (__v8di)
4911 _mm512_setzero_si512 (),
4912 (__mmask8) -1);
4913}
4914
4915static __inline__ __m512i __DEFAULT_FN_ATTRS
4916_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4917{
4918 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4919 (__v8di) __W,
4920 (__mmask8) __U);
4921}
4922
4923static __inline__ __m512i __DEFAULT_FN_ATTRS
4924_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4925{
4926 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4927 (__v8di)
4928 _mm512_setzero_si512 (),
4929 (__mmask8) __U);
4930}
4931
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004932static __inline__ __m512i __DEFAULT_FN_ATTRS
4933_mm512_cvtepu8_epi32 (__m128i __A)
4934{
4935 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4936 (__v16si)
4937 _mm512_setzero_si512 (),
4938 (__mmask16) -1);
4939}
4940
4941static __inline__ __m512i __DEFAULT_FN_ATTRS
4942_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4943{
4944 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4945 (__v16si) __W,
4946 (__mmask16) __U);
4947}
4948
4949static __inline__ __m512i __DEFAULT_FN_ATTRS
4950_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4951{
4952 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4953 (__v16si)
4954 _mm512_setzero_si512 (),
4955 (__mmask16) __U);
4956}
4957
4958static __inline__ __m512i __DEFAULT_FN_ATTRS
4959_mm512_cvtepu8_epi64 (__m128i __A)
4960{
4961 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4962 (__v8di)
4963 _mm512_setzero_si512 (),
4964 (__mmask8) -1);
4965}
4966
4967static __inline__ __m512i __DEFAULT_FN_ATTRS
4968_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4969{
4970 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4971 (__v8di) __W,
4972 (__mmask8) __U);
4973}
4974
4975static __inline__ __m512i __DEFAULT_FN_ATTRS
4976_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4977{
4978 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4979 (__v8di)
4980 _mm512_setzero_si512 (),
4981 (__mmask8) __U);
4982}
4983
4984static __inline__ __m512i __DEFAULT_FN_ATTRS
4985_mm512_cvtepu32_epi64 (__m256i __X)
4986{
4987 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4988 (__v8di)
4989 _mm512_setzero_si512 (),
4990 (__mmask8) -1);
4991}
4992
4993static __inline__ __m512i __DEFAULT_FN_ATTRS
4994_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4995{
4996 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4997 (__v8di) __W,
4998 (__mmask8) __U);
4999}
5000
5001static __inline__ __m512i __DEFAULT_FN_ATTRS
5002_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
5003{
5004 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
5005 (__v8di)
5006 _mm512_setzero_si512 (),
5007 (__mmask8) __U);
5008}
5009
5010static __inline__ __m512i __DEFAULT_FN_ATTRS
5011_mm512_cvtepu16_epi32 (__m256i __A)
5012{
5013 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5014 (__v16si)
5015 _mm512_setzero_si512 (),
5016 (__mmask16) -1);
5017}
5018
5019static __inline__ __m512i __DEFAULT_FN_ATTRS
5020_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
5021{
5022 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5023 (__v16si) __W,
5024 (__mmask16) __U);
5025}
5026
5027static __inline__ __m512i __DEFAULT_FN_ATTRS
5028_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
5029{
5030 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5031 (__v16si)
5032 _mm512_setzero_si512 (),
5033 (__mmask16) __U);
5034}
5035
5036static __inline__ __m512i __DEFAULT_FN_ATTRS
5037_mm512_cvtepu16_epi64 (__m128i __A)
5038{
5039 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5040 (__v8di)
5041 _mm512_setzero_si512 (),
5042 (__mmask8) -1);
5043}
5044
5045static __inline__ __m512i __DEFAULT_FN_ATTRS
5046_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
5047{
5048 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5049 (__v8di) __W,
5050 (__mmask8) __U);
5051}
5052
5053static __inline__ __m512i __DEFAULT_FN_ATTRS
5054_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
5055{
5056 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5057 (__v8di)
5058 _mm512_setzero_si512 (),
5059 (__mmask8) __U);
5060}
5061
Michael Zuckermane98cc742016-02-23 15:59:47 +00005062static __inline__ __m512i __DEFAULT_FN_ATTRS
5063_mm512_rorv_epi32 (__m512i __A, __m512i __B)
5064{
5065 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5066 (__v16si) __B,
5067 (__v16si)
5068 _mm512_setzero_si512 (),
5069 (__mmask16) -1);
5070}
5071
5072static __inline__ __m512i __DEFAULT_FN_ATTRS
5073_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5074{
5075 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5076 (__v16si) __B,
5077 (__v16si) __W,
5078 (__mmask16) __U);
5079}
5080
5081static __inline__ __m512i __DEFAULT_FN_ATTRS
5082_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5083{
5084 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5085 (__v16si) __B,
5086 (__v16si)
5087 _mm512_setzero_si512 (),
5088 (__mmask16) __U);
5089}
5090
5091static __inline__ __m512i __DEFAULT_FN_ATTRS
5092_mm512_rorv_epi64 (__m512i __A, __m512i __B)
5093{
5094 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5095 (__v8di) __B,
5096 (__v8di)
5097 _mm512_setzero_si512 (),
5098 (__mmask8) -1);
5099}
5100
5101static __inline__ __m512i __DEFAULT_FN_ATTRS
5102_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5103{
5104 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5105 (__v8di) __B,
5106 (__v8di) __W,
5107 (__mmask8) __U);
5108}
5109
5110static __inline__ __m512i __DEFAULT_FN_ATTRS
5111_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5112{
5113 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5114 (__v8di) __B,
5115 (__v8di)
5116 _mm512_setzero_si512 (),
5117 (__mmask8) __U);
5118}
5119
5120
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00005121
Craig Topper4cac1c22015-01-25 23:30:07 +00005122#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005123 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005124 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005125 (__mmask16)-1); })
5126
5127#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005128 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005129 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005130 (__mmask16)-1); })
5131
5132#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005133 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005134 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005135 (__mmask8)-1); })
5136
5137#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005138 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005139 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005140 (__mmask8)-1); })
5141
5142#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005143 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005144 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005145 (__mmask16)(m)); })
5146
5147#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005148 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005149 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005150 (__mmask16)(m)); })
5151
5152#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005153 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005154 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005155 (__mmask8)(m)); })
5156
5157#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005158 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005159 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005160 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00005161
Michael Zuckerman38a27272016-02-22 09:05:41 +00005162#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005163 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5164 (__v16si)_mm512_setzero_si512(), \
5165 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005166
5167#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005168 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5169 (__v16si)(__m512i)(W), \
5170 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005171
5172#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005173 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5174 (__v16si)_mm512_setzero_si512(), \
5175 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005176
5177#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005178 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5179 (__v8di)_mm512_setzero_si512(), \
5180 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005181
5182#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005183 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5184 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005185
5186#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005187 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5188 (__v8di)_mm512_setzero_si512(), \
5189 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005190static __inline__ __m512i __DEFAULT_FN_ATTRS
5191_mm512_rolv_epi32 (__m512i __A, __m512i __B)
5192{
5193 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5194 (__v16si) __B,
5195 (__v16si)
5196 _mm512_setzero_si512 (),
5197 (__mmask16) -1);
5198}
5199
5200static __inline__ __m512i __DEFAULT_FN_ATTRS
5201_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5202{
5203 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5204 (__v16si) __B,
5205 (__v16si) __W,
5206 (__mmask16) __U);
5207}
5208
5209static __inline__ __m512i __DEFAULT_FN_ATTRS
5210_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5211{
5212 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5213 (__v16si) __B,
5214 (__v16si)
5215 _mm512_setzero_si512 (),
5216 (__mmask16) __U);
5217}
5218
5219static __inline__ __m512i __DEFAULT_FN_ATTRS
5220_mm512_rolv_epi64 (__m512i __A, __m512i __B)
5221{
5222 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5223 (__v8di) __B,
5224 (__v8di)
5225 _mm512_setzero_si512 (),
5226 (__mmask8) -1);
5227}
5228
5229static __inline__ __m512i __DEFAULT_FN_ATTRS
5230_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5231{
5232 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5233 (__v8di) __B,
5234 (__v8di) __W,
5235 (__mmask8) __U);
5236}
5237
5238static __inline__ __m512i __DEFAULT_FN_ATTRS
5239_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5240{
5241 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5242 (__v8di) __B,
5243 (__v8di)
5244 _mm512_setzero_si512 (),
5245 (__mmask8) __U);
5246}
5247
Craig Topper8c18e112016-05-17 04:41:50 +00005248#define _mm512_ror_epi32(A, B) __extension__ ({ \
5249 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5250 (__v16si)_mm512_setzero_si512(), \
5251 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005252
Craig Topper8c18e112016-05-17 04:41:50 +00005253#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5254 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5255 (__v16si)(__m512i)(W), \
5256 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005257
Craig Topper8c18e112016-05-17 04:41:50 +00005258#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
5259 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5260 (__v16si)_mm512_setzero_si512(), \
5261 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005262
Craig Topper8c18e112016-05-17 04:41:50 +00005263#define _mm512_ror_epi64(A, B) __extension__ ({ \
5264 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5265 (__v8di)_mm512_setzero_si512(), \
5266 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005267
Craig Topper8c18e112016-05-17 04:41:50 +00005268#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5269 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5270 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005271
Craig Topper8c18e112016-05-17 04:41:50 +00005272#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
5273 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5274 (__v8di)_mm512_setzero_si512(), \
5275 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005276
Craig Topper8c18e112016-05-17 04:41:50 +00005277#define _mm512_slli_epi32(A, B) __extension__ ({ \
5278 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5279 (__v16si)_mm512_setzero_si512(), \
5280 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005281
Craig Topper8c18e112016-05-17 04:41:50 +00005282#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5283 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5284 (__v16si)(__m512i)(W), \
5285 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005286
Craig Topper8c18e112016-05-17 04:41:50 +00005287#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
5288 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5289 (__v16si)_mm512_setzero_si512(), \
5290 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005291
Craig Topper8c18e112016-05-17 04:41:50 +00005292#define _mm512_slli_epi64(A, B) __extension__ ({ \
5293 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5294 (__v8di)_mm512_setzero_si512(), \
5295 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005296
Craig Topper8c18e112016-05-17 04:41:50 +00005297#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5298 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5299 (__v8di)(__m512i)(W), \
5300 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005301
Craig Topper8c18e112016-05-17 04:41:50 +00005302#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
5303 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5304 (__v8di)_mm512_setzero_si512(), \
5305 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005306
Michael Zuckerman38a27272016-02-22 09:05:41 +00005307
Michael Zuckermand176d742016-03-01 17:49:03 +00005308
Craig Topper8c18e112016-05-17 04:41:50 +00005309#define _mm512_srli_epi32(A, B) __extension__ ({ \
5310 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5311 (__v16si)_mm512_setzero_si512(), \
5312 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005313
Craig Topper8c18e112016-05-17 04:41:50 +00005314#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
5315 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5316 (__v16si)(__m512i)(W), \
5317 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005318
Craig Topper8c18e112016-05-17 04:41:50 +00005319#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
5320 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5321 (__v16si)_mm512_setzero_si512(), \
5322 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005323
Craig Topper8c18e112016-05-17 04:41:50 +00005324#define _mm512_srli_epi64(A, B) __extension__ ({ \
5325 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5326 (__v8di)_mm512_setzero_si512(), \
5327 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005328
Craig Topper8c18e112016-05-17 04:41:50 +00005329#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
5330 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5331 (__v8di)(__m512i)(W), \
5332 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005333
Craig Topper8c18e112016-05-17 04:41:50 +00005334#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
5335 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5336 (__v8di)_mm512_setzero_si512(), \
5337 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005338
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005339static __inline__ __m512i __DEFAULT_FN_ATTRS
5340_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
5341{
5342 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5343 (__v16si) __W,
5344 (__mmask16) __U);
5345}
5346
5347static __inline__ __m512i __DEFAULT_FN_ATTRS
5348_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
5349{
5350 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5351 (__v16si)
5352 _mm512_setzero_si512 (),
5353 (__mmask16) __U);
5354}
5355
5356static __inline__ void __DEFAULT_FN_ATTRS
5357_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5358{
5359 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5360 (__mmask16) __U);
5361}
5362
5363static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005364_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5365{
5366 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5367 (__v16si) __W,
5368 (__mmask16) __U);
5369}
5370
5371static __inline__ __m512i __DEFAULT_FN_ATTRS
5372_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5373{
5374 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5375 (__v16si)
5376 _mm512_setzero_si512 (),
5377 (__mmask16) __U);
5378}
5379
5380static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005381_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5382{
5383 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5384 (__v8di) __W,
5385 (__mmask8) __U);
5386}
5387
5388static __inline__ __m512i __DEFAULT_FN_ATTRS
5389_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5390{
5391 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5392 (__v8di)
5393 _mm512_setzero_si512 (),
5394 (__mmask8) __U);
5395}
5396
5397static __inline__ __m512i __DEFAULT_FN_ATTRS
5398_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5399{
5400 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5401 (__v8di) __W,
5402 (__mmask8) __U);
5403}
5404
5405static __inline__ __m512i __DEFAULT_FN_ATTRS
5406_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5407{
5408 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5409 (__v8di)
5410 _mm512_setzero_si512 (),
5411 (__mmask8) __U);
5412}
5413
5414static __inline__ void __DEFAULT_FN_ATTRS
5415_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5416{
5417 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5418 (__mmask8) __U);
5419}
5420
5421
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005422
5423static __inline__ __m512d __DEFAULT_FN_ATTRS
5424_mm512_movedup_pd (__m512d __A)
5425{
5426 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5427 (__v8df)
5428 _mm512_undefined_pd (),
5429 (__mmask8) -1);
5430}
5431
5432static __inline__ __m512d __DEFAULT_FN_ATTRS
5433_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5434{
5435 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5436 (__v8df) __W,
5437 (__mmask8) __U);
5438}
5439
5440static __inline__ __m512d __DEFAULT_FN_ATTRS
5441_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5442{
5443 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5444 (__v8df)
5445 _mm512_setzero_pd (),
5446 (__mmask8) __U);
5447}
5448
Craig Topper8c18e112016-05-17 04:41:50 +00005449#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5450 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5451 (__v8df)(__m512d)(B), \
5452 (__v8di)(__m512i)(C), (int)(imm), \
5453 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005454
Craig Topper8c18e112016-05-17 04:41:50 +00005455#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5456 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5457 (__v8df)(__m512d)(B), \
5458 (__v8di)(__m512i)(C), (int)(imm), \
5459 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005460
Craig Topper8c18e112016-05-17 04:41:50 +00005461#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5462 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5463 (__v8df)(__m512d)(B), \
5464 (__v8di)(__m512i)(C), (int)(imm), \
5465 (__mmask8)-1, \
5466 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005467
Craig Topper8c18e112016-05-17 04:41:50 +00005468#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5469 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5470 (__v8df)(__m512d)(B), \
5471 (__v8di)(__m512i)(C), (int)(imm), \
5472 (__mmask8)(U), \
5473 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005474
Craig Topper8c18e112016-05-17 04:41:50 +00005475#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5476 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5477 (__v8df)(__m512d)(B), \
5478 (__v8di)(__m512i)(C), \
5479 (int)(imm), (__mmask8)(U), \
5480 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005481
Craig Topper8c18e112016-05-17 04:41:50 +00005482#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5483 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5484 (__v8df)(__m512d)(B), \
5485 (__v8di)(__m512i)(C), \
5486 (int)(imm), (__mmask8)(U), \
5487 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005488
Craig Topper8c18e112016-05-17 04:41:50 +00005489#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5490 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5491 (__v16sf)(__m512)(B), \
5492 (__v16si)(__m512i)(C), (int)(imm), \
5493 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005494
Craig Topper8c18e112016-05-17 04:41:50 +00005495#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5496 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5497 (__v16sf)(__m512)(B), \
5498 (__v16si)(__m512i)(C), (int)(imm), \
5499 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005500
Craig Topper8c18e112016-05-17 04:41:50 +00005501#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5502 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5503 (__v16sf)(__m512)(B), \
5504 (__v16si)(__m512i)(C), (int)(imm), \
5505 (__mmask16)-1, \
5506 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005507
Craig Topper8c18e112016-05-17 04:41:50 +00005508#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5509 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5510 (__v16sf)(__m512)(B), \
5511 (__v16si)(__m512i)(C), (int)(imm), \
5512 (__mmask16)(U), \
5513 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005514
Craig Topper8c18e112016-05-17 04:41:50 +00005515#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5516 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5517 (__v16sf)(__m512)(B), \
5518 (__v16si)(__m512i)(C), \
5519 (int)(imm), (__mmask16)(U), \
5520 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005521
Craig Topper8c18e112016-05-17 04:41:50 +00005522#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5523 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5524 (__v16sf)(__m512)(B), \
5525 (__v16si)(__m512i)(C), \
5526 (int)(imm), (__mmask16)(U), \
5527 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005528
Craig Topper8c18e112016-05-17 04:41:50 +00005529#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5530 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5531 (__v2df)(__m128d)(B), \
5532 (__v2di)(__m128i)(C), (int)(imm), \
5533 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005534
Craig Topper8c18e112016-05-17 04:41:50 +00005535#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5536 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5537 (__v2df)(__m128d)(B), \
5538 (__v2di)(__m128i)(C), (int)(imm), \
5539 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005540
Craig Topper8c18e112016-05-17 04:41:50 +00005541#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5542 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5543 (__v2df)(__m128d)(B), \
5544 (__v2di)(__m128i)(C), (int)(imm), \
5545 (__mmask8)-1, \
5546 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005547
Craig Topper8c18e112016-05-17 04:41:50 +00005548#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5549 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5550 (__v2df)(__m128d)(B), \
5551 (__v2di)(__m128i)(C), (int)(imm), \
5552 (__mmask8)(U), \
5553 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005554
Craig Topper8c18e112016-05-17 04:41:50 +00005555#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5556 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5557 (__v2df)(__m128d)(B), \
5558 (__v2di)(__m128i)(C), (int)(imm), \
5559 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005560
Craig Topper8c18e112016-05-17 04:41:50 +00005561#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5562 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5563 (__v2df)(__m128d)(B), \
5564 (__v2di)(__m128i)(C), (int)(imm), \
5565 (__mmask8)(U), \
5566 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005567
Craig Topper8c18e112016-05-17 04:41:50 +00005568#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5569 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5570 (__v4sf)(__m128)(B), \
5571 (__v4si)(__m128i)(C), (int)(imm), \
5572 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005573
Craig Topper8c18e112016-05-17 04:41:50 +00005574#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5575 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5576 (__v4sf)(__m128)(B), \
5577 (__v4si)(__m128i)(C), (int)(imm), \
5578 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005579
Craig Topper8c18e112016-05-17 04:41:50 +00005580#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5581 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5582 (__v4sf)(__m128)(B), \
5583 (__v4si)(__m128i)(C), (int)(imm), \
5584 (__mmask8)-1, \
5585 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005586
Craig Topper8c18e112016-05-17 04:41:50 +00005587#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5588 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5589 (__v4sf)(__m128)(B), \
5590 (__v4si)(__m128i)(C), (int)(imm), \
5591 (__mmask8)(U), \
5592 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005593
Craig Topper8c18e112016-05-17 04:41:50 +00005594#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5595 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5596 (__v4sf)(__m128)(B), \
5597 (__v4si)(__m128i)(C), (int)(imm), \
5598 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005599
Craig Topper8c18e112016-05-17 04:41:50 +00005600#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5601 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5602 (__v4sf)(__m128)(B), \
5603 (__v4si)(__m128i)(C), (int)(imm), \
5604 (__mmask8)(U), \
5605 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005606
Craig Topper8c18e112016-05-17 04:41:50 +00005607#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5608 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5609 (__v2df)(__m128d)(B), \
5610 (__v2df)_mm_setzero_pd(), \
5611 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005612
5613
5614static __inline__ __m128d __DEFAULT_FN_ATTRS
5615_mm_getexp_sd (__m128d __A, __m128d __B)
5616{
5617 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5618 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5619}
5620
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005621static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005622_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005623{
5624 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5625 (__v2df) __B,
5626 (__v2df) __W,
5627 (__mmask8) __U,
5628 _MM_FROUND_CUR_DIRECTION);
5629}
5630
Craig Topper8c18e112016-05-17 04:41:50 +00005631#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5632 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5633 (__v2df)(__m128d)(B), \
5634 (__v2df)(__m128d)(W), \
5635 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005636
5637static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005638_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005639{
5640 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5641 (__v2df) __B,
5642 (__v2df) _mm_setzero_pd (),
5643 (__mmask8) __U,
5644 _MM_FROUND_CUR_DIRECTION);
5645}
5646
Craig Topper8c18e112016-05-17 04:41:50 +00005647#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5648 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5649 (__v2df)(__m128d)(B), \
5650 (__v2df)_mm_setzero_pd(), \
5651 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005652
Craig Topper8c18e112016-05-17 04:41:50 +00005653#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5654 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5655 (__v4sf)(__m128)(B), \
5656 (__v4sf)_mm_setzero_ps(), \
5657 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005658
5659static __inline__ __m128 __DEFAULT_FN_ATTRS
5660_mm_getexp_ss (__m128 __A, __m128 __B)
5661{
5662 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5663 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5664}
5665
Craig Topper58187d32016-05-17 04:41:29 +00005666static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005667_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005668{
Craig Topper58187d32016-05-17 04:41:29 +00005669 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005670 (__v4sf) __B,
5671 (__v4sf) __W,
5672 (__mmask8) __U,
5673 _MM_FROUND_CUR_DIRECTION);
5674}
5675
Craig Topper8c18e112016-05-17 04:41:50 +00005676#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5677 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5678 (__v4sf)(__m128)(B), \
5679 (__v4sf)(__m128)(W), \
5680 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005681
Craig Topper58187d32016-05-17 04:41:29 +00005682static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005683_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005684{
Craig Topper58187d32016-05-17 04:41:29 +00005685 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005686 (__v4sf) __B,
5687 (__v4sf) _mm_setzero_pd (),
5688 (__mmask8) __U,
5689 _MM_FROUND_CUR_DIRECTION);
5690}
5691
Craig Topper8c18e112016-05-17 04:41:50 +00005692#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5693 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5694 (__v4sf)(__m128)(B), \
5695 (__v4sf)_mm_setzero_ps(), \
5696 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005697
Craig Topper8c18e112016-05-17 04:41:50 +00005698#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5699 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5700 (__v2df)(__m128d)(B), \
5701 (int)(((D)<<2) | (C)), \
5702 (__v2df)_mm_setzero_pd(), \
5703 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005704
Craig Topper8c18e112016-05-17 04:41:50 +00005705#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5706 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5707 (__v2df)(__m128d)(B), \
5708 (int)(((D)<<2) | (C)), \
5709 (__v2df)_mm_setzero_pd(), \
5710 (__mmask8)-1, \
5711 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005712
Craig Topper8c18e112016-05-17 04:41:50 +00005713#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5714 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5715 (__v2df)(__m128d)(B), \
5716 (int)(((D)<<2) | (C)), \
5717 (__v2df)(__m128d)(W), \
5718 (__mmask8)(U), \
5719 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005720
Craig Topper8c18e112016-05-17 04:41:50 +00005721#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5722 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5723 (__v2df)(__m128d)(B), \
5724 (int)(((D)<<2) | (C)), \
5725 (__v2df)(__m128d)(W), \
5726 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005727
Craig Topper8c18e112016-05-17 04:41:50 +00005728#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5729 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5730 (__v2df)(__m128d)(B), \
5731 (int)(((D)<<2) | (C)), \
5732 (__v2df)_mm_setzero_pd(), \
5733 (__mmask8)(U), \
5734 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005735
Craig Topper8c18e112016-05-17 04:41:50 +00005736#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5737 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5738 (__v2df)(__m128d)(B), \
5739 (int)(((D)<<2) | (C)), \
5740 (__v2df)_mm_setzero_pd(), \
5741 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005742
Craig Topper8c18e112016-05-17 04:41:50 +00005743#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5744 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5745 (__v4sf)(__m128)(B), \
5746 (int)(((D)<<2) | (C)), \
5747 (__v4sf)_mm_setzero_ps(), \
5748 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005749
Craig Topper8c18e112016-05-17 04:41:50 +00005750#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5751 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5752 (__v4sf)(__m128)(B), \
5753 (int)(((D)<<2) | (C)), \
5754 (__v4sf)_mm_setzero_ps(), \
5755 (__mmask8)-1, \
5756 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005757
Craig Topper8c18e112016-05-17 04:41:50 +00005758#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5759 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5760 (__v4sf)(__m128)(B), \
5761 (int)(((D)<<2) | (C)), \
5762 (__v4sf)(__m128)(W), \
5763 (__mmask8)(U), \
5764 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005765
Craig Topper8c18e112016-05-17 04:41:50 +00005766#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5767 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5768 (__v4sf)(__m128)(B), \
5769 (int)(((D)<<2) | (C)), \
5770 (__v4sf)(__m128)(W), \
5771 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005772
Craig Topper8c18e112016-05-17 04:41:50 +00005773#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5774 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5775 (__v4sf)(__m128)(B), \
5776 (int)(((D)<<2) | (C)), \
5777 (__v4sf)_mm_setzero_pd(), \
5778 (__mmask8)(U), \
5779 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005780
Craig Topper8c18e112016-05-17 04:41:50 +00005781#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5782 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5783 (__v4sf)(__m128)(B), \
5784 (int)(((D)<<2) | (C)), \
5785 (__v4sf)_mm_setzero_ps(), \
5786 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005787
5788static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5789_mm512_kmov (__mmask16 __A)
5790{
5791 return __A;
5792}
5793
Craig Topper8c18e112016-05-17 04:41:50 +00005794#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5795 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5796 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005797
Craig Topper8c18e112016-05-17 04:41:50 +00005798#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5799 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5800 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005801
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005802static __inline__ __m512d __DEFAULT_FN_ATTRS
5803_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5804{
5805 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5806 (__v8df) __B,
5807 (__v8df) __W,
5808 (__mmask8) __U);
5809}
Craig Topper8c18e112016-05-17 04:41:50 +00005810#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5811 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005812static __inline__ __m512i __DEFAULT_FN_ATTRS
5813_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5814 __mmask16 __U, __m512i __B)
5815{
5816 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5817 (__v16si) __I
5818 /* idx */ ,
5819 (__v16si) __B,
5820 (__mmask16) __U);
5821}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005822static __inline__ __m512i __DEFAULT_FN_ATTRS
5823_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5824{
5825 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5826 (__v16si) __B,
5827 (__v16si)
5828 _mm512_setzero_si512 (),
5829 (__mmask16) -1);
5830}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005831
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005832static __inline__ __m512i __DEFAULT_FN_ATTRS
5833_mm512_sll_epi32 (__m512i __A, __m128i __B)
5834{
5835 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5836 (__v4si) __B,
5837 (__v16si)
5838 _mm512_setzero_si512 (),
5839 (__mmask16) -1);
5840}
5841
5842static __inline__ __m512i __DEFAULT_FN_ATTRS
5843_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5844{
5845 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5846 (__v4si) __B,
5847 (__v16si) __W,
5848 (__mmask16) __U);
5849}
5850
5851static __inline__ __m512i __DEFAULT_FN_ATTRS
5852_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5853{
5854 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5855 (__v4si) __B,
5856 (__v16si)
5857 _mm512_setzero_si512 (),
5858 (__mmask16) __U);
5859}
5860
5861static __inline__ __m512i __DEFAULT_FN_ATTRS
5862_mm512_sll_epi64 (__m512i __A, __m128i __B)
5863{
5864 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5865 (__v2di) __B,
5866 (__v8di)
5867 _mm512_setzero_si512 (),
5868 (__mmask8) -1);
5869}
5870
5871static __inline__ __m512i __DEFAULT_FN_ATTRS
5872_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5873{
5874 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5875 (__v2di) __B,
5876 (__v8di) __W,
5877 (__mmask8) __U);
5878}
5879
5880static __inline__ __m512i __DEFAULT_FN_ATTRS
5881_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5882{
5883 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5884 (__v2di) __B,
5885 (__v8di)
5886 _mm512_setzero_si512 (),
5887 (__mmask8) __U);
5888}
5889
5890static __inline__ __m512i __DEFAULT_FN_ATTRS
5891_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5892{
5893 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5894 (__v16si) __Y,
5895 (__v16si)
5896 _mm512_setzero_si512 (),
5897 (__mmask16) -1);
5898}
5899
5900static __inline__ __m512i __DEFAULT_FN_ATTRS
5901_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5902{
5903 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5904 (__v16si) __Y,
5905 (__v16si) __W,
5906 (__mmask16) __U);
5907}
5908
5909static __inline__ __m512i __DEFAULT_FN_ATTRS
5910_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5911{
5912 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5913 (__v16si) __Y,
5914 (__v16si)
5915 _mm512_setzero_si512 (),
5916 (__mmask16) __U);
5917}
5918
5919static __inline__ __m512i __DEFAULT_FN_ATTRS
5920_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5921{
5922 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5923 (__v8di) __Y,
5924 (__v8di)
5925 _mm512_undefined_pd (),
5926 (__mmask8) -1);
5927}
5928
5929static __inline__ __m512i __DEFAULT_FN_ATTRS
5930_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5931{
5932 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5933 (__v8di) __Y,
5934 (__v8di) __W,
5935 (__mmask8) __U);
5936}
5937
5938static __inline__ __m512i __DEFAULT_FN_ATTRS
5939_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5940{
5941 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5942 (__v8di) __Y,
5943 (__v8di)
5944 _mm512_setzero_si512 (),
5945 (__mmask8) __U);
5946}
5947
5948static __inline__ __m512i __DEFAULT_FN_ATTRS
5949_mm512_sra_epi32 (__m512i __A, __m128i __B)
5950{
5951 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5952 (__v4si) __B,
5953 (__v16si)
5954 _mm512_setzero_si512 (),
5955 (__mmask16) -1);
5956}
5957
5958static __inline__ __m512i __DEFAULT_FN_ATTRS
5959_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5960{
5961 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5962 (__v4si) __B,
5963 (__v16si) __W,
5964 (__mmask16) __U);
5965}
5966
5967static __inline__ __m512i __DEFAULT_FN_ATTRS
5968_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5969{
5970 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5971 (__v4si) __B,
5972 (__v16si)
5973 _mm512_setzero_si512 (),
5974 (__mmask16) __U);
5975}
5976
5977static __inline__ __m512i __DEFAULT_FN_ATTRS
5978_mm512_sra_epi64 (__m512i __A, __m128i __B)
5979{
5980 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5981 (__v2di) __B,
5982 (__v8di)
5983 _mm512_setzero_si512 (),
5984 (__mmask8) -1);
5985}
5986
5987static __inline__ __m512i __DEFAULT_FN_ATTRS
5988_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5989{
5990 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5991 (__v2di) __B,
5992 (__v8di) __W,
5993 (__mmask8) __U);
5994}
5995
5996static __inline__ __m512i __DEFAULT_FN_ATTRS
5997_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5998{
5999 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
6000 (__v2di) __B,
6001 (__v8di)
6002 _mm512_setzero_si512 (),
6003 (__mmask8) __U);
6004}
6005
6006static __inline__ __m512i __DEFAULT_FN_ATTRS
6007_mm512_srav_epi32 (__m512i __X, __m512i __Y)
6008{
6009 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6010 (__v16si) __Y,
6011 (__v16si)
6012 _mm512_setzero_si512 (),
6013 (__mmask16) -1);
6014}
6015
6016static __inline__ __m512i __DEFAULT_FN_ATTRS
6017_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6018{
6019 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6020 (__v16si) __Y,
6021 (__v16si) __W,
6022 (__mmask16) __U);
6023}
6024
6025static __inline__ __m512i __DEFAULT_FN_ATTRS
6026_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6027{
6028 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6029 (__v16si) __Y,
6030 (__v16si)
6031 _mm512_setzero_si512 (),
6032 (__mmask16) __U);
6033}
6034
6035static __inline__ __m512i __DEFAULT_FN_ATTRS
6036_mm512_srav_epi64 (__m512i __X, __m512i __Y)
6037{
6038 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6039 (__v8di) __Y,
6040 (__v8di)
6041 _mm512_setzero_si512 (),
6042 (__mmask8) -1);
6043}
6044
6045static __inline__ __m512i __DEFAULT_FN_ATTRS
6046_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6047{
6048 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6049 (__v8di) __Y,
6050 (__v8di) __W,
6051 (__mmask8) __U);
6052}
6053
6054static __inline__ __m512i __DEFAULT_FN_ATTRS
6055_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6056{
6057 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6058 (__v8di) __Y,
6059 (__v8di)
6060 _mm512_setzero_si512 (),
6061 (__mmask8) __U);
6062}
6063
6064static __inline__ __m512i __DEFAULT_FN_ATTRS
6065_mm512_srl_epi32 (__m512i __A, __m128i __B)
6066{
6067 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6068 (__v4si) __B,
6069 (__v16si)
6070 _mm512_setzero_si512 (),
6071 (__mmask16) -1);
6072}
6073
6074static __inline__ __m512i __DEFAULT_FN_ATTRS
6075_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
6076{
6077 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6078 (__v4si) __B,
6079 (__v16si) __W,
6080 (__mmask16) __U);
6081}
6082
6083static __inline__ __m512i __DEFAULT_FN_ATTRS
6084_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
6085{
6086 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6087 (__v4si) __B,
6088 (__v16si)
6089 _mm512_setzero_si512 (),
6090 (__mmask16) __U);
6091}
6092
6093static __inline__ __m512i __DEFAULT_FN_ATTRS
6094_mm512_srl_epi64 (__m512i __A, __m128i __B)
6095{
6096 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6097 (__v2di) __B,
6098 (__v8di)
6099 _mm512_setzero_si512 (),
6100 (__mmask8) -1);
6101}
6102
6103static __inline__ __m512i __DEFAULT_FN_ATTRS
6104_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
6105{
6106 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6107 (__v2di) __B,
6108 (__v8di) __W,
6109 (__mmask8) __U);
6110}
6111
6112static __inline__ __m512i __DEFAULT_FN_ATTRS
6113_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
6114{
6115 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6116 (__v2di) __B,
6117 (__v8di)
6118 _mm512_setzero_si512 (),
6119 (__mmask8) __U);
6120}
6121
6122static __inline__ __m512i __DEFAULT_FN_ATTRS
6123_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
6124{
6125 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6126 (__v16si) __Y,
6127 (__v16si)
6128 _mm512_setzero_si512 (),
6129 (__mmask16) -1);
6130}
6131
6132static __inline__ __m512i __DEFAULT_FN_ATTRS
6133_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6134{
6135 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6136 (__v16si) __Y,
6137 (__v16si) __W,
6138 (__mmask16) __U);
6139}
6140
6141static __inline__ __m512i __DEFAULT_FN_ATTRS
6142_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6143{
6144 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6145 (__v16si) __Y,
6146 (__v16si)
6147 _mm512_setzero_si512 (),
6148 (__mmask16) __U);
6149}
6150
6151static __inline__ __m512i __DEFAULT_FN_ATTRS
6152_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
6153{
6154 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6155 (__v8di) __Y,
6156 (__v8di)
6157 _mm512_setzero_si512 (),
6158 (__mmask8) -1);
6159}
6160
6161static __inline__ __m512i __DEFAULT_FN_ATTRS
6162_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6163{
6164 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6165 (__v8di) __Y,
6166 (__v8di) __W,
6167 (__mmask8) __U);
6168}
6169
6170static __inline__ __m512i __DEFAULT_FN_ATTRS
6171_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6172{
6173 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6174 (__v8di) __Y,
6175 (__v8di)
6176 _mm512_setzero_si512 (),
6177 (__mmask8) __U);
6178}
6179
Craig Topper8c18e112016-05-17 04:41:50 +00006180#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6181 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
6182 (__v16si)(__m512i)(B), \
6183 (__v16si)(__m512i)(C), (int)(imm), \
6184 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006185
Craig Topper8c18e112016-05-17 04:41:50 +00006186#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6187 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
6188 (__v16si)(__m512i)(B), \
6189 (__v16si)(__m512i)(C), (int)(imm), \
6190 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006191
Craig Topper8c18e112016-05-17 04:41:50 +00006192#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6193 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
6194 (__v16si)(__m512i)(B), \
6195 (__v16si)(__m512i)(C), \
6196 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006197
Craig Topper8c18e112016-05-17 04:41:50 +00006198#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6199 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6200 (__v8di)(__m512i)(B), \
6201 (__v8di)(__m512i)(C), (int)(imm), \
6202 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006203
Craig Topper8c18e112016-05-17 04:41:50 +00006204#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6205 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6206 (__v8di)(__m512i)(B), \
6207 (__v8di)(__m512i)(C), (int)(imm), \
6208 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006209
Craig Topper8c18e112016-05-17 04:41:50 +00006210#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6211 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
6212 (__v8di)(__m512i)(B), \
6213 (__v8di)(__m512i)(C), (int)(imm), \
6214 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006215
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006216static __inline__ __m512d __DEFAULT_FN_ATTRS
6217_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
6218{
6219 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
6220 (__v8df) __B,
6221 (__v8df)
6222 _mm512_setzero_pd (),
6223 (__mmask8) __U);
6224}
6225
6226static __inline__ __m512 __DEFAULT_FN_ATTRS
6227_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6228{
6229 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
6230 (__v16sf) __B,
6231 (__v16sf) __W,
6232 (__mmask16) __U);
6233}
6234
6235static __inline__ __m512 __DEFAULT_FN_ATTRS
6236_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
6237{
6238 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
6239 (__v16sf) __B,
6240 (__v16sf)
6241 _mm512_setzero_ps (),
6242 (__mmask16) __U);
6243}
6244
6245static __inline__ __m512d __DEFAULT_FN_ATTRS
6246_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6247{
6248 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6249 (__v8df) __B,
6250 (__v8df) __W,
6251 (__mmask8) __U);
6252}
6253
6254static __inline__ __m512d __DEFAULT_FN_ATTRS
6255_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
6256{
6257 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6258 (__v8df) __B,
6259 (__v8df)
6260 _mm512_setzero_pd (),
6261 (__mmask8) __U);
6262}
6263
6264static __inline__ __m512 __DEFAULT_FN_ATTRS
6265_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6266{
6267 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6268 (__v16sf) __B,
6269 (__v16sf) __W,
6270 (__mmask16) __U);
6271}
6272
6273static __inline__ __m512 __DEFAULT_FN_ATTRS
6274_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
6275{
6276 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6277 (__v16sf) __B,
6278 (__v16sf)
6279 _mm512_setzero_ps (),
6280 (__mmask16) __U);
6281}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00006282
Craig Topper8c18e112016-05-17 04:41:50 +00006283#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
6284 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006285
Craig Topper8c18e112016-05-17 04:41:50 +00006286#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
6287 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006288
Craig Topper8c18e112016-05-17 04:41:50 +00006289#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
6290 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006291
Craig Topper8c18e112016-05-17 04:41:50 +00006292#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
6293 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006294
6295static __inline__ unsigned __DEFAULT_FN_ATTRS
6296_mm_cvtsd_u32 (__m128d __A)
6297{
6298 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
6299 _MM_FROUND_CUR_DIRECTION);
6300}
6301
Craig Topper8c18e112016-05-17 04:41:50 +00006302#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
6303 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
6304 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006305
6306static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6307_mm_cvtsd_u64 (__m128d __A)
6308{
6309 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
6310 __A,
6311 _MM_FROUND_CUR_DIRECTION);
6312}
6313
Craig Topper8c18e112016-05-17 04:41:50 +00006314#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
6315 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006316
Craig Topper8c18e112016-05-17 04:41:50 +00006317#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
6318 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006319
Craig Topper8c18e112016-05-17 04:41:50 +00006320#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
6321 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006322
Craig Topper8c18e112016-05-17 04:41:50 +00006323#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
6324 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006325
Craig Topper8c18e112016-05-17 04:41:50 +00006326#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
6327 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006328
6329static __inline__ unsigned __DEFAULT_FN_ATTRS
6330_mm_cvtss_u32 (__m128 __A)
6331{
6332 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
6333 _MM_FROUND_CUR_DIRECTION);
6334}
6335
Craig Topper8c18e112016-05-17 04:41:50 +00006336#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
6337 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
6338 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006339
6340static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6341_mm_cvtss_u64 (__m128 __A)
6342{
6343 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
6344 __A,
6345 _MM_FROUND_CUR_DIRECTION);
6346}
6347
Craig Topper8c18e112016-05-17 04:41:50 +00006348#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
6349 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006350
Craig Topper8c18e112016-05-17 04:41:50 +00006351#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6352 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006353
6354static __inline__ int __DEFAULT_FN_ATTRS
6355_mm_cvttsd_i32 (__m128d __A)
6356{
6357 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6358 _MM_FROUND_CUR_DIRECTION);
6359}
6360
Craig Topper8c18e112016-05-17 04:41:50 +00006361#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6362 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006363
Craig Topper8c18e112016-05-17 04:41:50 +00006364#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6365 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006366
6367static __inline__ long long __DEFAULT_FN_ATTRS
6368_mm_cvttsd_i64 (__m128d __A)
6369{
6370 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6371 _MM_FROUND_CUR_DIRECTION);
6372}
6373
Craig Topper8c18e112016-05-17 04:41:50 +00006374#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6375 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006376
6377static __inline__ unsigned __DEFAULT_FN_ATTRS
6378_mm_cvttsd_u32 (__m128d __A)
6379{
6380 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6381 _MM_FROUND_CUR_DIRECTION);
6382}
6383
Craig Topper8c18e112016-05-17 04:41:50 +00006384#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6385 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6386 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006387
6388static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6389_mm_cvttsd_u64 (__m128d __A)
6390{
6391 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6392 __A,
6393 _MM_FROUND_CUR_DIRECTION);
6394}
6395
Craig Topper8c18e112016-05-17 04:41:50 +00006396#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6397 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006398
Craig Topper8c18e112016-05-17 04:41:50 +00006399#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6400 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006401
6402static __inline__ int __DEFAULT_FN_ATTRS
6403_mm_cvttss_i32 (__m128 __A)
6404{
6405 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6406 _MM_FROUND_CUR_DIRECTION);
6407}
6408
Craig Topper8c18e112016-05-17 04:41:50 +00006409#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6410 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006411
Craig Topper8c18e112016-05-17 04:41:50 +00006412#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6413 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006414
6415static __inline__ long long __DEFAULT_FN_ATTRS
6416_mm_cvttss_i64 (__m128 __A)
6417{
6418 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6419 _MM_FROUND_CUR_DIRECTION);
6420}
6421
Craig Topper8c18e112016-05-17 04:41:50 +00006422#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6423 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006424
6425static __inline__ unsigned __DEFAULT_FN_ATTRS
6426_mm_cvttss_u32 (__m128 __A)
6427{
6428 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6429 _MM_FROUND_CUR_DIRECTION);
6430}
6431
Craig Topper8c18e112016-05-17 04:41:50 +00006432#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6433 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6434 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006435
6436static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6437_mm_cvttss_u64 (__m128 __A)
6438{
6439 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6440 __A,
6441 _MM_FROUND_CUR_DIRECTION);
6442}
6443
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006444static __inline__ __m512d __DEFAULT_FN_ATTRS
6445_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6446 __m512d __B)
6447{
6448 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6449 (__v8di) __I
6450 /* idx */ ,
6451 (__v8df) __B,
6452 (__mmask8) __U);
6453}
6454
6455static __inline__ __m512 __DEFAULT_FN_ATTRS
6456_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6457 __m512 __B)
6458{
6459 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6460 (__v16si) __I
6461 /* idx */ ,
6462 (__v16sf) __B,
6463 (__mmask16) __U);
6464}
6465
6466static __inline__ __m512i __DEFAULT_FN_ATTRS
6467_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6468 __mmask8 __U, __m512i __B)
6469{
6470 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6471 (__v8di) __I
6472 /* idx */ ,
6473 (__v8di) __B,
6474 (__mmask8) __U);
6475}
6476
Craig Topper8c18e112016-05-17 04:41:50 +00006477#define _mm512_permute_pd(X, C) __extension__ ({ \
6478 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6479 (__v8df)_mm512_undefined_pd(), \
6480 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006481
Craig Topper8c18e112016-05-17 04:41:50 +00006482#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6483 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6484 (__v8df)(__m512d)(W), \
6485 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006486
Craig Topper8c18e112016-05-17 04:41:50 +00006487#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6488 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6489 (__v8df)_mm512_setzero_pd(), \
6490 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006491
Craig Topper8c18e112016-05-17 04:41:50 +00006492#define _mm512_permute_ps(X, C) __extension__ ({ \
6493 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6494 (__v16sf)_mm512_undefined_ps(), \
6495 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006496
Craig Topper8c18e112016-05-17 04:41:50 +00006497#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6498 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6499 (__v16sf)(__m512)(W), \
6500 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006501
Craig Topper8c18e112016-05-17 04:41:50 +00006502#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6503 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6504 (__v16sf)_mm512_setzero_ps(), \
6505 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006506
6507static __inline__ __m512d __DEFAULT_FN_ATTRS
6508_mm512_permutevar_pd (__m512d __A, __m512i __C)
6509{
6510 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6511 (__v8di) __C,
6512 (__v8df)
6513 _mm512_undefined_pd (),
6514 (__mmask8) -1);
6515}
6516
6517static __inline__ __m512d __DEFAULT_FN_ATTRS
6518_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6519{
6520 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6521 (__v8di) __C,
6522 (__v8df) __W,
6523 (__mmask8) __U);
6524}
6525
6526static __inline__ __m512d __DEFAULT_FN_ATTRS
6527_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6528{
6529 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6530 (__v8di) __C,
6531 (__v8df)
6532 _mm512_setzero_pd (),
6533 (__mmask8) __U);
6534}
6535
6536static __inline__ __m512 __DEFAULT_FN_ATTRS
6537_mm512_permutevar_ps (__m512 __A, __m512i __C)
6538{
6539 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6540 (__v16si) __C,
6541 (__v16sf)
6542 _mm512_undefined_ps (),
6543 (__mmask16) -1);
6544}
6545
6546static __inline__ __m512 __DEFAULT_FN_ATTRS
6547_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6548{
6549 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6550 (__v16si) __C,
6551 (__v16sf) __W,
6552 (__mmask16) __U);
6553}
6554
6555static __inline__ __m512 __DEFAULT_FN_ATTRS
6556_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6557{
6558 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6559 (__v16si) __C,
6560 (__v16sf)
6561 _mm512_setzero_ps (),
6562 (__mmask16) __U);
6563}
6564
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006565static __inline __m512d __DEFAULT_FN_ATTRS
6566_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006567{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006568 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6569 /* idx */ ,
6570 (__v8df) __A,
6571 (__v8df) __B,
6572 (__mmask8) -1);
6573}
6574
6575static __inline__ __m512d __DEFAULT_FN_ATTRS
6576_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6577{
6578 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6579 /* idx */ ,
6580 (__v8df) __A,
6581 (__v8df) __B,
6582 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006583}
6584
6585static __inline__ __m512d __DEFAULT_FN_ATTRS
6586_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6587 __m512d __B)
6588{
6589 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006590 /* idx */ ,
6591 (__v8df) __A,
6592 (__v8df) __B,
6593 (__mmask8) __U);
6594}
6595
6596static __inline __m512 __DEFAULT_FN_ATTRS
6597_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6598{
6599 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6600 /* idx */ ,
6601 (__v16sf) __A,
6602 (__v16sf) __B,
6603 (__mmask16) -1);
6604}
6605
6606static __inline__ __m512 __DEFAULT_FN_ATTRS
6607_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6608{
6609 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6610 /* idx */ ,
6611 (__v16sf) __A,
6612 (__v16sf) __B,
6613 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006614}
6615
6616static __inline__ __m512 __DEFAULT_FN_ATTRS
6617_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6618 __m512 __B)
6619{
6620 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006621 /* idx */ ,
6622 (__v16sf) __A,
6623 (__v16sf) __B,
6624 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006625}
6626
Michael Zuckerman07525092016-04-11 10:22:07 +00006627static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6628_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6629{
6630 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6631 (__v16si) __B,
6632 (__mmask16) -1);
6633}
6634
6635static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6636_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6637{
6638 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6639 (__v16si) __B, __U);
6640}
6641
6642static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6643_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6644{
6645 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6646 (__v8di) __B,
6647 (__mmask8) -1);
6648}
6649
6650static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6651_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6652{
6653 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6654 (__v8di) __B, __U);
6655}
6656
Craig Topper8c18e112016-05-17 04:41:50 +00006657#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6658 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6659 (__v8si)_mm256_undefined_si256(), \
6660 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006661
Craig Topper8c18e112016-05-17 04:41:50 +00006662#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6663 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6664 (__v8si)(__m256i)(W), \
6665 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006666
Craig Topper8c18e112016-05-17 04:41:50 +00006667#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6668 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6669 (__v8si)_mm256_setzero_si256(), \
6670 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006671
6672static __inline__ __m256i __DEFAULT_FN_ATTRS
6673_mm512_cvttpd_epu32 (__m512d __A)
6674{
6675 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6676 (__v8si)
6677 _mm256_undefined_si256 (),
6678 (__mmask8) -1,
6679 _MM_FROUND_CUR_DIRECTION);
6680}
6681
6682static __inline__ __m256i __DEFAULT_FN_ATTRS
6683_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6684{
6685 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6686 (__v8si) __W,
6687 (__mmask8) __U,
6688 _MM_FROUND_CUR_DIRECTION);
6689}
6690
6691static __inline__ __m256i __DEFAULT_FN_ATTRS
6692_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6693{
6694 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6695 (__v8si)
6696 _mm256_setzero_si256 (),
6697 (__mmask8) __U,
6698 _MM_FROUND_CUR_DIRECTION);
6699}
Michael Zuckerman07525092016-04-11 10:22:07 +00006700
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006701static __inline__ __m512i __DEFAULT_FN_ATTRS
6702_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6703 __m512i __B)
6704{
6705 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6706 (__v16si) __B,
6707 (__v16si) __W,
6708 (__mmask16) __U);
6709}
6710
6711static __inline__ __m512i __DEFAULT_FN_ATTRS
6712_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6713{
6714 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6715 (__v16si) __B,
6716 (__v16si)
6717 _mm512_setzero_si512 (),
6718 (__mmask16) __U);
6719}
6720
6721static __inline__ __m512i __DEFAULT_FN_ATTRS
6722_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6723{
6724 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6725 (__v8di) __B,
6726 (__v8di)
6727 _mm512_setzero_si512 (),
6728 (__mmask8) -1);
6729}
6730
6731static __inline__ __m512i __DEFAULT_FN_ATTRS
6732_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6733{
6734 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6735 (__v8di) __B,
6736 (__v8di) __W,
6737 (__mmask8) __U);
6738}
6739
6740static __inline__ __m512i __DEFAULT_FN_ATTRS
6741_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6742{
6743 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6744 (__v8di) __B,
6745 (__v8di)
6746 _mm512_setzero_si512 (),
6747 (__mmask8) __U);
6748}
6749
6750static __inline__ __m512i __DEFAULT_FN_ATTRS
6751_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6752{
6753 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6754 (__v16si) __B,
6755 (__v16si)
6756 _mm512_setzero_si512 (),
6757 (__mmask16) -1);
6758}
6759
6760static __inline__ __m512i __DEFAULT_FN_ATTRS
6761_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6762 __m512i __B)
6763{
6764 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6765 (__v16si) __B,
6766 (__v16si) __W,
6767 (__mmask16) __U);
6768}
6769
6770static __inline__ __m512i __DEFAULT_FN_ATTRS
6771_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6772{
6773 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6774 (__v16si) __B,
6775 (__v16si)
6776 _mm512_setzero_si512 (),
6777 (__mmask16) __U);
6778}
6779
6780static __inline__ __m512i __DEFAULT_FN_ATTRS
6781_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6782{
6783 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6784 (__v8di) __B,
6785 (__v8di)
6786 _mm512_setzero_si512 (),
6787 (__mmask8) -1);
6788}
6789
6790static __inline__ __m512i __DEFAULT_FN_ATTRS
6791_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6792{
6793 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6794 (__v8di) __B,
6795 (__v8di) __W,
6796 (__mmask8) __U);
6797}
6798
6799static __inline__ __m512i __DEFAULT_FN_ATTRS
6800_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6801{
6802 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6803 (__v8di) __B,
6804 (__v8di)
6805 _mm512_setzero_si512 (),
6806 (__mmask8) __U);
6807}
6808
Craig Topper8c18e112016-05-17 04:41:50 +00006809#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6810 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6811 (__v2df)(__m128d)(B), \
6812 (__v2df)_mm_setzero_pd(), \
6813 (__mmask8)-1, (int)(imm), \
6814 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006815
Craig Topper8c18e112016-05-17 04:41:50 +00006816#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6817 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6818 (__v2df)(__m128d)(B), \
6819 (__v2df)_mm_setzero_pd(), \
6820 (__mmask8)-1, (int)(imm), \
6821 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006822
Craig Topper8c18e112016-05-17 04:41:50 +00006823#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6824 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6825 (__v2df)(__m128d)(B), \
6826 (__v2df)(__m128d)(W), \
6827 (__mmask8)(U), (int)(imm), \
6828 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006829
Craig Topper8c18e112016-05-17 04:41:50 +00006830#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6831 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6832 (__v2df)(__m128d)(B), \
6833 (__v2df)(__m128d)(W), \
6834 (__mmask8)(U), (int)(I), \
6835 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006836
Craig Topper8c18e112016-05-17 04:41:50 +00006837#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6838 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6839 (__v2df)(__m128d)(B), \
6840 (__v2df)_mm_setzero_pd(), \
6841 (__mmask8)(U), (int)(I), \
6842 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006843
Craig Topper8c18e112016-05-17 04:41:50 +00006844#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6845 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6846 (__v2df)(__m128d)(B), \
6847 (__v2df)_mm_setzero_pd(), \
6848 (__mmask8)(U), (int)(I), \
6849 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006850
Craig Topper8c18e112016-05-17 04:41:50 +00006851#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6852 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6853 (__v4sf)(__m128)(B), \
6854 (__v4sf)_mm_setzero_ps(), \
6855 (__mmask8)-1, (int)(imm), \
6856 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006857
Craig Topper8c18e112016-05-17 04:41:50 +00006858#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6859 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6860 (__v4sf)(__m128)(B), \
6861 (__v4sf)_mm_setzero_ps(), \
6862 (__mmask8)-1, (int)(imm), \
6863 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006864
Craig Topper8c18e112016-05-17 04:41:50 +00006865#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6866 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6867 (__v4sf)(__m128)(B), \
6868 (__v4sf)(__m128)(W), \
6869 (__mmask8)(U), (int)(I), \
6870 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006871
Craig Topper8c18e112016-05-17 04:41:50 +00006872#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6873 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6874 (__v4sf)(__m128)(B), \
6875 (__v4sf)(__m128)(W), \
6876 (__mmask8)(U), (int)(I), \
6877 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006878
Craig Topper8c18e112016-05-17 04:41:50 +00006879#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6880 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6881 (__v4sf)(__m128)(B), \
6882 (__v4sf)_mm_setzero_ps(), \
6883 (__mmask8)(U), (int)(I), \
6884 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006885
Craig Topper8c18e112016-05-17 04:41:50 +00006886#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6887 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6888 (__v4sf)(__m128)(B), \
6889 (__v4sf)_mm_setzero_ps(), \
6890 (__mmask8)(U), (int)(I), \
6891 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006892
Craig Topper8c18e112016-05-17 04:41:50 +00006893#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6894 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6895 (__v8df)(__m512d)(B), \
6896 (__v8df)_mm512_undefined_pd(), \
6897 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006898
Craig Topper8c18e112016-05-17 04:41:50 +00006899#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6900 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6901 (__v8df)(__m512d)(B), \
6902 (__v8df)(__m512d)(W), \
6903 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006904
Craig Topper8c18e112016-05-17 04:41:50 +00006905#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6906 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6907 (__v8df)(__m512d)(B), \
6908 (__v8df)_mm512_setzero_pd(), \
6909 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006910
6911static __inline__ __m512d __DEFAULT_FN_ATTRS
6912_mm512_scalef_pd (__m512d __A, __m512d __B)
6913{
6914 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6915 (__v8df) __B,
6916 (__v8df)
6917 _mm512_undefined_pd (),
6918 (__mmask8) -1,
6919 _MM_FROUND_CUR_DIRECTION);
6920}
6921
6922static __inline__ __m512d __DEFAULT_FN_ATTRS
6923_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6924{
6925 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6926 (__v8df) __B,
6927 (__v8df) __W,
6928 (__mmask8) __U,
6929 _MM_FROUND_CUR_DIRECTION);
6930}
6931
6932static __inline__ __m512d __DEFAULT_FN_ATTRS
6933_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6934{
6935 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6936 (__v8df) __B,
6937 (__v8df)
6938 _mm512_setzero_pd (),
6939 (__mmask8) __U,
6940 _MM_FROUND_CUR_DIRECTION);
6941}
6942
Craig Topper8c18e112016-05-17 04:41:50 +00006943#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6944 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6945 (__v16sf)(__m512)(B), \
6946 (__v16sf)_mm512_undefined_ps(), \
6947 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006948
Craig Topper8c18e112016-05-17 04:41:50 +00006949#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6950 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6951 (__v16sf)(__m512)(B), \
6952 (__v16sf)(__m512)(W), \
6953 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006954
Craig Topper8c18e112016-05-17 04:41:50 +00006955#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6956 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6957 (__v16sf)(__m512)(B), \
6958 (__v16sf)_mm512_setzero_ps(), \
6959 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006960
6961static __inline__ __m512 __DEFAULT_FN_ATTRS
6962_mm512_scalef_ps (__m512 __A, __m512 __B)
6963{
6964 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6965 (__v16sf) __B,
6966 (__v16sf)
6967 _mm512_undefined_ps (),
6968 (__mmask16) -1,
6969 _MM_FROUND_CUR_DIRECTION);
6970}
6971
6972static __inline__ __m512 __DEFAULT_FN_ATTRS
6973_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6974{
6975 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6976 (__v16sf) __B,
6977 (__v16sf) __W,
6978 (__mmask16) __U,
6979 _MM_FROUND_CUR_DIRECTION);
6980}
6981
6982static __inline__ __m512 __DEFAULT_FN_ATTRS
6983_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6984{
6985 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6986 (__v16sf) __B,
6987 (__v16sf)
6988 _mm512_setzero_ps (),
6989 (__mmask16) __U,
6990 _MM_FROUND_CUR_DIRECTION);
6991}
6992
Craig Topper8c18e112016-05-17 04:41:50 +00006993#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6994 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6995 (__v2df)(__m128d)(B), \
6996 (__v2df)_mm_setzero_pd(), \
6997 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006998
6999static __inline__ __m128d __DEFAULT_FN_ATTRS
7000_mm_scalef_sd (__m128d __A, __m128d __B)
7001{
7002 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
7003 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
7004 (__mmask8) -1,
7005 _MM_FROUND_CUR_DIRECTION);
7006}
7007
7008static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007009_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007010{
7011 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
7012 (__v2df) __B,
7013 (__v2df) __W,
7014 (__mmask8) __U,
7015 _MM_FROUND_CUR_DIRECTION);
7016}
7017
Craig Topper8c18e112016-05-17 04:41:50 +00007018#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
7019 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
7020 (__v2df)(__m128d)(B), \
7021 (__v2df)(__m128d)(W), \
7022 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007023
7024static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007025_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007026{
7027 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
7028 (__v2df) __B,
7029 (__v2df) _mm_setzero_pd (),
7030 (__mmask8) __U,
7031 _MM_FROUND_CUR_DIRECTION);
7032}
7033
Craig Topper8c18e112016-05-17 04:41:50 +00007034#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
7035 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
7036 (__v2df)(__m128d)(B), \
7037 (__v2df)_mm_setzero_pd(), \
7038 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007039
Craig Topper8c18e112016-05-17 04:41:50 +00007040#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
7041 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7042 (__v4sf)(__m128)(B), \
7043 (__v4sf)_mm_setzero_ps(), \
7044 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007045
7046static __inline__ __m128 __DEFAULT_FN_ATTRS
7047_mm_scalef_ss (__m128 __A, __m128 __B)
7048{
7049 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
7050 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
7051 (__mmask8) -1,
7052 _MM_FROUND_CUR_DIRECTION);
7053}
7054
7055static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007056_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007057{
7058 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
7059 (__v4sf) __B,
7060 (__v4sf) __W,
7061 (__mmask8) __U,
7062 _MM_FROUND_CUR_DIRECTION);
7063}
7064
Craig Topper8c18e112016-05-17 04:41:50 +00007065#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
7066 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7067 (__v4sf)(__m128)(B), \
7068 (__v4sf)(__m128)(W), \
7069 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007070
7071static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007072_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007073{
7074 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
7075 (__v4sf) __B,
7076 (__v4sf) _mm_setzero_ps (),
7077 (__mmask8) __U,
7078 _MM_FROUND_CUR_DIRECTION);
7079}
7080
Craig Topper8c18e112016-05-17 04:41:50 +00007081#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
7082 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7083 (__v4sf)(__m128)(B), \
7084 (__v4sf)_mm_setzero_ps(), \
7085 (__mmask8)(U), \
7086 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007087
Craig Topper79d05c92016-05-15 20:10:06 +00007088#define _mm512_srai_epi32(A, B) __extension__ ({ \
7089 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7090 (__v16si)_mm512_setzero_si512(), \
7091 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007092
Craig Topper8c18e112016-05-17 04:41:50 +00007093#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
7094 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7095 (__v16si)(__m512i)(W), \
7096 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007097
Craig Topper8c18e112016-05-17 04:41:50 +00007098#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
7099 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7100 (__v16si)_mm512_setzero_si512(), \
7101 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007102
Craig Topper8c18e112016-05-17 04:41:50 +00007103#define _mm512_srai_epi64(A, B) __extension__ ({ \
7104 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7105 (__v8di)_mm512_setzero_si512(), \
7106 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007107
Craig Topper8c18e112016-05-17 04:41:50 +00007108#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
7109 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7110 (__v8di)(__m512i)(W), \
7111 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007112
Craig Topper8c18e112016-05-17 04:41:50 +00007113#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
7114 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7115 (__v8di)_mm512_setzero_si512(), \
7116 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007117
Craig Topper8c18e112016-05-17 04:41:50 +00007118#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
7119 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7120 (__v16sf)(__m512)(B), (int)(imm), \
7121 (__v16sf)_mm512_undefined_ps(), \
7122 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007123
Craig Topper8c18e112016-05-17 04:41:50 +00007124#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
7125 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7126 (__v16sf)(__m512)(B), (int)(imm), \
7127 (__v16sf)(__m512)(W), \
7128 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007129
Craig Topper8c18e112016-05-17 04:41:50 +00007130#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
7131 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7132 (__v16sf)(__m512)(B), (int)(imm), \
7133 (__v16sf)_mm512_setzero_ps(), \
7134 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007135
Craig Topper8c18e112016-05-17 04:41:50 +00007136#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
7137 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7138 (__v8df)(__m512d)(B), (int)(imm), \
7139 (__v8df)_mm512_undefined_pd(), \
7140 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007141
Craig Topper8c18e112016-05-17 04:41:50 +00007142#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
7143 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7144 (__v8df)(__m512d)(B), (int)(imm), \
7145 (__v8df)(__m512d)(W), \
7146 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007147
Craig Topper8c18e112016-05-17 04:41:50 +00007148#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
7149 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7150 (__v8df)(__m512d)(B), (int)(imm), \
7151 (__v8df)_mm512_setzero_pd(), \
7152 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007153
Craig Topper8c18e112016-05-17 04:41:50 +00007154#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
7155 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7156 (__v16si)(__m512i)(B), (int)(imm), \
7157 (__v16si)_mm512_setzero_si512(), \
7158 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007159
Craig Topper8c18e112016-05-17 04:41:50 +00007160#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
7161 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7162 (__v16si)(__m512i)(B), (int)(imm), \
7163 (__v16si)(__m512i)(W), \
7164 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007165
Craig Topper8c18e112016-05-17 04:41:50 +00007166#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
7167 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7168 (__v16si)(__m512i)(B), (int)(imm), \
7169 (__v16si)_mm512_setzero_si512(), \
7170 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007171
Craig Topper8c18e112016-05-17 04:41:50 +00007172#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
7173 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7174 (__v8di)(__m512i)(B), (int)(imm), \
7175 (__v8di)_mm512_setzero_si512(), \
7176 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007177
Craig Topper8c18e112016-05-17 04:41:50 +00007178#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
7179 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7180 (__v8di)(__m512i)(B), (int)(imm), \
7181 (__v8di)(__m512i)(W), \
7182 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007183
Craig Topper8c18e112016-05-17 04:41:50 +00007184#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
7185 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7186 (__v8di)(__m512i)(B), (int)(imm), \
7187 (__v8di)_mm512_setzero_si512(), \
7188 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007189
Craig Topper8c18e112016-05-17 04:41:50 +00007190#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
7191 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7192 (__v8df)(__m512d)(V), (int)(imm), \
7193 (__v8df)_mm512_undefined_pd(), \
7194 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007195
Craig Topper8c18e112016-05-17 04:41:50 +00007196#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
7197 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7198 (__v8df)(__m512d)(V), (int)(imm), \
7199 (__v8df)(__m512d)(W), \
7200 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007201
Craig Topper8c18e112016-05-17 04:41:50 +00007202#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
7203 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7204 (__v8df)(__m512d)(V), (int)(imm), \
7205 (__v8df)_mm512_setzero_pd(), \
7206 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007207
Craig Topper8c18e112016-05-17 04:41:50 +00007208#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
7209 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7210 (__v16sf)(__m512)(V), (int)(imm), \
7211 (__v16sf)_mm512_undefined_ps(), \
7212 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007213
Craig Topper8c18e112016-05-17 04:41:50 +00007214#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
7215 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7216 (__v16sf)(__m512)(V), (int)(imm), \
7217 (__v16sf)(__m512)(W), \
7218 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007219
Craig Topper8c18e112016-05-17 04:41:50 +00007220#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
7221 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7222 (__v16sf)(__m512)(V), (int)(imm), \
7223 (__v16sf)_mm512_setzero_ps(), \
7224 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007225
Craig Topper8c18e112016-05-17 04:41:50 +00007226#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
7227 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7228 (__v2df)(__m128d)(A), \
7229 (__v2df)_mm_setzero_pd(), \
7230 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007231
7232static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007233_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007234{
7235 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7236 (__v2df) __A,
7237 (__v2df) __W,
7238 (__mmask8) __U,
7239 _MM_FROUND_CUR_DIRECTION);
7240}
7241
Craig Topper8c18e112016-05-17 04:41:50 +00007242#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
7243 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7244 (__v2df)(__m128d)(A), \
7245 (__v2df)(__m128d)(W), \
7246 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007247
7248static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007249_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007250{
7251 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7252 (__v2df) __A,
7253 (__v2df) _mm_setzero_pd (),
7254 (__mmask8) __U,
7255 _MM_FROUND_CUR_DIRECTION);
7256}
7257
Craig Topper8c18e112016-05-17 04:41:50 +00007258#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
7259 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7260 (__v2df)(__m128d)(A), \
7261 (__v2df)_mm_setzero_pd(), \
7262 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007263
Craig Topper8c18e112016-05-17 04:41:50 +00007264#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
7265 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7266 (__v4sf)(__m128)(A), \
7267 (__v4sf)_mm_setzero_ps(), \
7268 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007269
7270static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007271_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007272{
7273 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
7274 (__v4sf) __A,
7275 (__v4sf) __W,
7276 (__mmask8) __U,
7277 _MM_FROUND_CUR_DIRECTION);
7278}
7279
Craig Topper8c18e112016-05-17 04:41:50 +00007280#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
7281 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7282 (__v4sf)(__m128)(A), \
7283 (__v4sf)(__m128)(W), (__mmask8)(U), \
7284 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007285
7286static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007287_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007288{
7289 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
7290 (__v4sf) __B,
7291 (__v4sf) _mm_setzero_ps (),
7292 (__mmask8) __U,
7293 _MM_FROUND_CUR_DIRECTION);
7294}
7295
Craig Topper8c18e112016-05-17 04:41:50 +00007296#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
7297 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7298 (__v4sf)(__m128)(A), \
7299 (__v4sf)_mm_setzero_ps(), \
7300 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007301
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007302static __inline__ __m512 __DEFAULT_FN_ATTRS
7303_mm512_broadcast_f32x4 (__m128 __A)
7304{
7305 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7306 (__v16sf)
7307 _mm512_undefined_ps (),
7308 (__mmask16) -1);
7309}
7310
7311static __inline__ __m512 __DEFAULT_FN_ATTRS
7312_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
7313{
7314 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7315 (__v16sf) __O,
7316 __M);
7317}
7318
7319static __inline__ __m512 __DEFAULT_FN_ATTRS
7320_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
7321{
7322 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7323 (__v16sf)
7324 _mm512_setzero_ps (),
7325 __M);
7326}
7327
7328static __inline__ __m512d __DEFAULT_FN_ATTRS
7329_mm512_broadcast_f64x4 (__m256d __A)
7330{
7331 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7332 (__v8df)
7333 _mm512_undefined_pd (),
7334 (__mmask8) -1);
7335}
7336
7337static __inline__ __m512d __DEFAULT_FN_ATTRS
7338_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
7339{
7340 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7341 (__v8df) __O,
7342 __M);
7343}
7344
7345static __inline__ __m512d __DEFAULT_FN_ATTRS
7346_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
7347{
7348 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7349 (__v8df)
7350 _mm512_setzero_pd (),
7351 __M);
7352}
7353
7354static __inline__ __m512i __DEFAULT_FN_ATTRS
7355_mm512_broadcast_i32x4 (__m128i __A)
7356{
7357 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7358 (__v16si)
7359 _mm512_undefined_epi32 (),
7360 (__mmask16) -1);
7361}
7362
7363static __inline__ __m512i __DEFAULT_FN_ATTRS
7364_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7365{
7366 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7367 (__v16si) __O,
7368 __M);
7369}
7370
7371static __inline__ __m512i __DEFAULT_FN_ATTRS
7372_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7373{
7374 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7375 (__v16si)
7376 _mm512_setzero_si512 (),
7377 __M);
7378}
7379
7380static __inline__ __m512i __DEFAULT_FN_ATTRS
7381_mm512_broadcast_i64x4 (__m256i __A)
7382{
7383 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7384 (__v8di)
7385 _mm512_undefined_epi32 (),
7386 (__mmask8) -1);
7387}
7388
7389static __inline__ __m512i __DEFAULT_FN_ATTRS
7390_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7391{
7392 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7393 (__v8di) __O,
7394 __M);
7395}
7396
7397static __inline__ __m512i __DEFAULT_FN_ATTRS
7398_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7399{
7400 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7401 (__v8di)
7402 _mm512_setzero_si512 (),
7403 __M);
7404}
7405
7406static __inline__ __m512d __DEFAULT_FN_ATTRS
7407_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7408{
7409 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7410 (__v8df) __O, __M);
7411}
7412
7413static __inline__ __m512d __DEFAULT_FN_ATTRS
7414_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7415{
7416 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7417 (__v8df)
7418 _mm512_setzero_pd (),
7419 __M);
7420}
7421
7422static __inline__ __m512 __DEFAULT_FN_ATTRS
7423_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7424{
7425 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7426 (__v16sf) __O, __M);
7427}
7428
7429static __inline__ __m512 __DEFAULT_FN_ATTRS
7430_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7431{
7432 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7433 (__v16sf)
7434 _mm512_setzero_ps (),
7435 __M);
7436}
7437
Michael Zuckermane1680612016-04-13 15:02:04 +00007438static __inline__ __m128i __DEFAULT_FN_ATTRS
7439_mm512_cvtsepi32_epi8 (__m512i __A)
7440{
7441 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7442 (__v16qi) _mm_undefined_si128 (),
7443 (__mmask16) -1);
7444}
7445
7446static __inline__ __m128i __DEFAULT_FN_ATTRS
7447_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7448{
7449 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7450 (__v16qi) __O, __M);
7451}
7452
7453static __inline__ __m128i __DEFAULT_FN_ATTRS
7454_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7455{
7456 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7457 (__v16qi) _mm_setzero_si128 (),
7458 __M);
7459}
7460
7461static __inline__ void __DEFAULT_FN_ATTRS
7462_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7463{
7464 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7465}
7466
7467static __inline__ __m256i __DEFAULT_FN_ATTRS
7468_mm512_cvtsepi32_epi16 (__m512i __A)
7469{
7470 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7471 (__v16hi) _mm256_undefined_si256 (),
7472 (__mmask16) -1);
7473}
7474
7475static __inline__ __m256i __DEFAULT_FN_ATTRS
7476_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7477{
7478 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7479 (__v16hi) __O, __M);
7480}
7481
7482static __inline__ __m256i __DEFAULT_FN_ATTRS
7483_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7484{
7485 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7486 (__v16hi) _mm256_setzero_si256 (),
7487 __M);
7488}
7489
7490static __inline__ void __DEFAULT_FN_ATTRS
7491_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7492{
7493 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7494}
7495
7496static __inline__ __m128i __DEFAULT_FN_ATTRS
7497_mm512_cvtsepi64_epi8 (__m512i __A)
7498{
7499 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7500 (__v16qi) _mm_undefined_si128 (),
7501 (__mmask8) -1);
7502}
7503
7504static __inline__ __m128i __DEFAULT_FN_ATTRS
7505_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7506{
7507 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7508 (__v16qi) __O, __M);
7509}
7510
7511static __inline__ __m128i __DEFAULT_FN_ATTRS
7512_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7513{
7514 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7515 (__v16qi) _mm_setzero_si128 (),
7516 __M);
7517}
7518
7519static __inline__ void __DEFAULT_FN_ATTRS
7520_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7521{
7522 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7523}
7524
7525static __inline__ __m256i __DEFAULT_FN_ATTRS
7526_mm512_cvtsepi64_epi32 (__m512i __A)
7527{
7528 __v8si __O;
7529 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7530 (__v8si) _mm256_undefined_si256 (),
7531 (__mmask8) -1);
7532}
7533
7534static __inline__ __m256i __DEFAULT_FN_ATTRS
7535_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7536{
7537 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7538 (__v8si) __O, __M);
7539}
7540
7541static __inline__ __m256i __DEFAULT_FN_ATTRS
7542_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7543{
7544 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7545 (__v8si) _mm256_setzero_si256 (),
7546 __M);
7547}
7548
7549static __inline__ void __DEFAULT_FN_ATTRS
7550_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7551{
7552 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7553}
7554
7555static __inline__ __m128i __DEFAULT_FN_ATTRS
7556_mm512_cvtsepi64_epi16 (__m512i __A)
7557{
7558 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7559 (__v8hi) _mm_undefined_si128 (),
7560 (__mmask8) -1);
7561}
7562
7563static __inline__ __m128i __DEFAULT_FN_ATTRS
7564_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7565{
7566 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7567 (__v8hi) __O, __M);
7568}
7569
7570static __inline__ __m128i __DEFAULT_FN_ATTRS
7571_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7572{
7573 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7574 (__v8hi) _mm_setzero_si128 (),
7575 __M);
7576}
7577
7578static __inline__ void __DEFAULT_FN_ATTRS
7579_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7580{
7581 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7582}
7583
Michael Zuckermand8715312016-04-14 06:48:09 +00007584static __inline__ __m128i __DEFAULT_FN_ATTRS
7585_mm512_cvtusepi32_epi8 (__m512i __A)
7586{
7587 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7588 (__v16qi) _mm_undefined_si128 (),
7589 (__mmask16) -1);
7590}
7591
7592static __inline__ __m128i __DEFAULT_FN_ATTRS
7593_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7594{
7595 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7596 (__v16qi) __O,
7597 __M);
7598}
7599
7600static __inline__ __m128i __DEFAULT_FN_ATTRS
7601_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7602{
7603 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7604 (__v16qi) _mm_setzero_si128 (),
7605 __M);
7606}
7607
7608static __inline__ void __DEFAULT_FN_ATTRS
7609_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7610{
7611 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7612}
7613
7614static __inline__ __m256i __DEFAULT_FN_ATTRS
7615_mm512_cvtusepi32_epi16 (__m512i __A)
7616{
7617 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7618 (__v16hi) _mm256_undefined_si256 (),
7619 (__mmask16) -1);
7620}
7621
7622static __inline__ __m256i __DEFAULT_FN_ATTRS
7623_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7624{
7625 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7626 (__v16hi) __O,
7627 __M);
7628}
7629
7630static __inline__ __m256i __DEFAULT_FN_ATTRS
7631_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7632{
7633 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7634 (__v16hi) _mm256_setzero_si256 (),
7635 __M);
7636}
7637
7638static __inline__ void __DEFAULT_FN_ATTRS
7639_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7640{
7641 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7642}
7643
7644static __inline__ __m128i __DEFAULT_FN_ATTRS
7645_mm512_cvtusepi64_epi8 (__m512i __A)
7646{
7647 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7648 (__v16qi) _mm_undefined_si128 (),
7649 (__mmask8) -1);
7650}
7651
7652static __inline__ __m128i __DEFAULT_FN_ATTRS
7653_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7654{
7655 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7656 (__v16qi) __O,
7657 __M);
7658}
7659
7660static __inline__ __m128i __DEFAULT_FN_ATTRS
7661_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7662{
7663 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7664 (__v16qi) _mm_setzero_si128 (),
7665 __M);
7666}
7667
7668static __inline__ void __DEFAULT_FN_ATTRS
7669_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7670{
7671 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7672}
7673
7674static __inline__ __m256i __DEFAULT_FN_ATTRS
7675_mm512_cvtusepi64_epi32 (__m512i __A)
7676{
7677 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7678 (__v8si) _mm256_undefined_si256 (),
7679 (__mmask8) -1);
7680}
7681
7682static __inline__ __m256i __DEFAULT_FN_ATTRS
7683_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7684{
7685 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7686 (__v8si) __O, __M);
7687}
7688
7689static __inline__ __m256i __DEFAULT_FN_ATTRS
7690_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7691{
7692 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7693 (__v8si) _mm256_setzero_si256 (),
7694 __M);
7695}
7696
7697static __inline__ void __DEFAULT_FN_ATTRS
7698_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7699{
7700 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7701}
7702
7703static __inline__ __m128i __DEFAULT_FN_ATTRS
7704_mm512_cvtusepi64_epi16 (__m512i __A)
7705{
7706 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7707 (__v8hi) _mm_undefined_si128 (),
7708 (__mmask8) -1);
7709}
7710
7711static __inline__ __m128i __DEFAULT_FN_ATTRS
7712_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7713{
7714 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7715 (__v8hi) __O, __M);
7716}
7717
7718static __inline__ __m128i __DEFAULT_FN_ATTRS
7719_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7720{
7721 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7722 (__v8hi) _mm_setzero_si128 (),
7723 __M);
7724}
7725
7726static __inline__ void __DEFAULT_FN_ATTRS
7727_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7728{
7729 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7730}
7731
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007732static __inline__ __m128i __DEFAULT_FN_ATTRS
7733_mm512_cvtepi32_epi8 (__m512i __A)
7734{
7735 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7736 (__v16qi) _mm_undefined_si128 (),
7737 (__mmask16) -1);
7738}
7739
7740static __inline__ __m128i __DEFAULT_FN_ATTRS
7741_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7742{
7743 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7744 (__v16qi) __O, __M);
7745}
7746
7747static __inline__ __m128i __DEFAULT_FN_ATTRS
7748_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7749{
7750 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7751 (__v16qi) _mm_setzero_si128 (),
7752 __M);
7753}
7754
7755static __inline__ void __DEFAULT_FN_ATTRS
7756_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7757{
7758 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7759}
7760
7761static __inline__ __m256i __DEFAULT_FN_ATTRS
7762_mm512_cvtepi32_epi16 (__m512i __A)
7763{
7764 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7765 (__v16hi) _mm256_undefined_si256 (),
7766 (__mmask16) -1);
7767}
7768
7769static __inline__ __m256i __DEFAULT_FN_ATTRS
7770_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7771{
7772 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7773 (__v16hi) __O, __M);
7774}
7775
7776static __inline__ __m256i __DEFAULT_FN_ATTRS
7777_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7778{
7779 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7780 (__v16hi) _mm256_setzero_si256 (),
7781 __M);
7782}
7783
7784static __inline__ void __DEFAULT_FN_ATTRS
7785_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7786{
7787 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7788}
7789
7790static __inline__ __m128i __DEFAULT_FN_ATTRS
7791_mm512_cvtepi64_epi8 (__m512i __A)
7792{
7793 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7794 (__v16qi) _mm_undefined_si128 (),
7795 (__mmask8) -1);
7796}
7797
7798static __inline__ __m128i __DEFAULT_FN_ATTRS
7799_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7800{
7801 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7802 (__v16qi) __O, __M);
7803}
7804
7805static __inline__ __m128i __DEFAULT_FN_ATTRS
7806_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7807{
7808 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7809 (__v16qi) _mm_setzero_si128 (),
7810 __M);
7811}
7812
7813static __inline__ void __DEFAULT_FN_ATTRS
7814_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7815{
7816 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7817}
7818
7819static __inline__ __m256i __DEFAULT_FN_ATTRS
7820_mm512_cvtepi64_epi32 (__m512i __A)
7821{
7822 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7823 (__v8si) _mm256_undefined_si256 (),
7824 (__mmask8) -1);
7825}
7826
7827static __inline__ __m256i __DEFAULT_FN_ATTRS
7828_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7829{
7830 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7831 (__v8si) __O, __M);
7832}
7833
7834static __inline__ __m256i __DEFAULT_FN_ATTRS
7835_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7836{
7837 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7838 (__v8si) _mm256_setzero_si256 (),
7839 __M);
7840}
7841
7842static __inline__ void __DEFAULT_FN_ATTRS
7843_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7844{
7845 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7846}
7847
7848static __inline__ __m128i __DEFAULT_FN_ATTRS
7849_mm512_cvtepi64_epi16 (__m512i __A)
7850{
7851 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7852 (__v8hi) _mm_undefined_si128 (),
7853 (__mmask8) -1);
7854}
7855
7856static __inline__ __m128i __DEFAULT_FN_ATTRS
7857_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7858{
7859 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7860 (__v8hi) __O, __M);
7861}
7862
7863static __inline__ __m128i __DEFAULT_FN_ATTRS
7864_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7865{
7866 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7867 (__v8hi) _mm_setzero_si128 (),
7868 __M);
7869}
7870
7871static __inline__ void __DEFAULT_FN_ATTRS
7872_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7873{
7874 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7875}
7876
Craig Topper8c18e112016-05-17 04:41:50 +00007877#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7878 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7879 (__v4si)_mm_undefined_si128(), \
7880 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007881
Craig Topper8c18e112016-05-17 04:41:50 +00007882#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7883 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7884 (__v4si)(__m128i)(W), \
7885 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007886
Craig Topper8c18e112016-05-17 04:41:50 +00007887#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7888 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7889 (__v4si)_mm_setzero_si128(), \
7890 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007891
Craig Topper8c18e112016-05-17 04:41:50 +00007892#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7893 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7894 (__v4di)_mm256_undefined_si256(), \
7895 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007896
Craig Topper8c18e112016-05-17 04:41:50 +00007897#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7898 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7899 (__v4di)(__m256i)(W), \
7900 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007901
Craig Topper8c18e112016-05-17 04:41:50 +00007902#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7903 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7904 (__v4di)_mm256_setzero_si256(), \
7905 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007906
Craig Topper8c18e112016-05-17 04:41:50 +00007907#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7908 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7909 (__v4df)(__m256d)(B), (int)(imm), \
7910 (__v8df)_mm512_undefined_pd(), \
7911 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007912
Craig Topper8c18e112016-05-17 04:41:50 +00007913#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7914 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7915 (__v4df)(__m256d)(B), (int)(imm), \
7916 (__v8df)(__m512d)(W), \
7917 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007918
Craig Topper8c18e112016-05-17 04:41:50 +00007919#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7920 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7921 (__v4df)(__m256d)(B), (int)(imm), \
7922 (__v8df)_mm512_setzero_pd(), \
7923 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007924
Craig Topper8c18e112016-05-17 04:41:50 +00007925#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7926 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7927 (__v4di)(__m256i)(B), (int)(imm), \
7928 (__v8di)_mm512_setzero_si512(), \
7929 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007930
Craig Topper8c18e112016-05-17 04:41:50 +00007931#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7932 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7933 (__v4di)(__m256i)(B), (int)(imm), \
7934 (__v8di)(__m512i)(W), \
7935 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007936
Craig Topper8c18e112016-05-17 04:41:50 +00007937#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7938 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7939 (__v4di)(__m256i)(B), (int)(imm), \
7940 (__v8di)_mm512_setzero_si512(), \
7941 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007942
Craig Topper8c18e112016-05-17 04:41:50 +00007943#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7944 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7945 (__v4sf)(__m128)(B), (int)(imm), \
7946 (__v16sf)_mm512_undefined_ps(), \
7947 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007948
Craig Topper8c18e112016-05-17 04:41:50 +00007949#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7950 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7951 (__v4sf)(__m128)(B), (int)(imm), \
7952 (__v16sf)(__m512)(W), \
7953 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007954
Craig Topper8c18e112016-05-17 04:41:50 +00007955#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7956 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7957 (__v4sf)(__m128)(B), (int)(imm), \
7958 (__v16sf)_mm512_setzero_ps(), \
7959 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007960
Craig Topper8c18e112016-05-17 04:41:50 +00007961#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7962 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7963 (__v4si)(__m128i)(B), (int)(imm), \
7964 (__v16si)_mm512_setzero_si512(), \
7965 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007966
Craig Topper8c18e112016-05-17 04:41:50 +00007967#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7968 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7969 (__v4si)(__m128i)(B), (int)(imm), \
7970 (__v16si)(__m512i)(W), \
7971 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007972
Craig Topper8c18e112016-05-17 04:41:50 +00007973#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7974 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7975 (__v4si)(__m128i)(B), (int)(imm), \
7976 (__v16si)_mm512_setzero_si512(), \
7977 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007978
Craig Topper8c18e112016-05-17 04:41:50 +00007979#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7980 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7981 (int)(((C)<<2) | (B)), \
7982 (__v8df)_mm512_undefined_pd(), \
7983 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007984
Craig Topper8c18e112016-05-17 04:41:50 +00007985#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7986 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7987 (int)(((C)<<2) | (B)), \
7988 (__v8df)(__m512d)(W), \
7989 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007990
Craig Topper8c18e112016-05-17 04:41:50 +00007991#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7992 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7993 (int)(((C)<<2) | (B)), \
7994 (__v8df)_mm512_setzero_pd(), \
7995 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007996
Craig Topper8c18e112016-05-17 04:41:50 +00007997#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7998 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7999 (int)(((C)<<2) | (B)), \
8000 (__v8df)_mm512_setzero_pd(), \
8001 (__mmask8)-1, \
8002 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008003
Craig Topper8c18e112016-05-17 04:41:50 +00008004#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
8005 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
8006 (int)(((C)<<2) | (B)), \
8007 (__v8df)(__m512d)(W), \
8008 (__mmask8)(U), \
8009 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008010
Craig Topper8c18e112016-05-17 04:41:50 +00008011#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
8012 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
8013 (int)(((C)<<2) | (B)), \
8014 (__v8df)_mm512_setzero_pd(), \
8015 (__mmask8)(U), \
8016 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008017
Craig Topper8c18e112016-05-17 04:41:50 +00008018#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
8019 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8020 (int)(((C)<<2) | (B)), \
8021 (__v16sf)_mm512_undefined_ps(), \
8022 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008023
Craig Topper8c18e112016-05-17 04:41:50 +00008024#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
8025 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8026 (int)(((C)<<2) | (B)), \
8027 (__v16sf)(__m512)(W), \
8028 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008029
Craig Topper8c18e112016-05-17 04:41:50 +00008030#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
8031 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8032 (int)(((C)<<2) | (B)), \
8033 (__v16sf)_mm512_setzero_ps(), \
8034 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008035
Craig Topper8c18e112016-05-17 04:41:50 +00008036#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
8037 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8038 (int)(((C)<<2)|(B)), \
8039 (__v16sf)_mm512_undefined_ps(), \
8040 (__mmask16)-1, \
8041 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008042
Craig Topper8c18e112016-05-17 04:41:50 +00008043#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8044 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8045 (int)(((C)<<2)|(B)), \
8046 (__v16sf)(__m512)(W), \
8047 (__mmask16)(U), \
8048 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008049
Craig Topper8c18e112016-05-17 04:41:50 +00008050#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8051 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8052 (int)(((C)<<2)|(B)), \
8053 (__v16sf)_mm512_setzero_ps(), \
8054 (__mmask16)(U), \
8055 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008056
Craig Topper8c18e112016-05-17 04:41:50 +00008057#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
8058 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8059 (__v8df)_mm512_undefined_pd(), \
8060 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008061
Craig Topper8c18e112016-05-17 04:41:50 +00008062#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
8063 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8064 (__v8df)(__m512d)(W), \
8065 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008066
Craig Topper8c18e112016-05-17 04:41:50 +00008067#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
8068 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8069 (__v8df)_mm512_setzero_pd(), \
8070 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008071
8072static __inline__ __m512d __DEFAULT_FN_ATTRS
8073_mm512_getexp_pd (__m512d __A)
8074{
8075 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8076 (__v8df) _mm512_undefined_pd (),
8077 (__mmask8) -1,
8078 _MM_FROUND_CUR_DIRECTION);
8079}
8080
8081static __inline__ __m512d __DEFAULT_FN_ATTRS
8082_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
8083{
8084 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8085 (__v8df) __W,
8086 (__mmask8) __U,
8087 _MM_FROUND_CUR_DIRECTION);
8088}
8089
8090static __inline__ __m512d __DEFAULT_FN_ATTRS
8091_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
8092{
8093 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8094 (__v8df) _mm512_setzero_pd (),
8095 (__mmask8) __U,
8096 _MM_FROUND_CUR_DIRECTION);
8097}
8098
Craig Topper8c18e112016-05-17 04:41:50 +00008099#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
8100 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8101 (__v16sf)_mm512_undefined_ps(), \
8102 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008103
Craig Topper8c18e112016-05-17 04:41:50 +00008104#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
8105 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8106 (__v16sf)(__m512)(W), \
8107 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008108
Craig Topper8c18e112016-05-17 04:41:50 +00008109#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
8110 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8111 (__v16sf)_mm512_setzero_ps(), \
8112 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008113
8114static __inline__ __m512 __DEFAULT_FN_ATTRS
8115_mm512_getexp_ps (__m512 __A)
8116{
8117 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8118 (__v16sf) _mm512_undefined_ps (),
8119 (__mmask16) -1,
8120 _MM_FROUND_CUR_DIRECTION);
8121}
8122
8123static __inline__ __m512 __DEFAULT_FN_ATTRS
8124_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
8125{
8126 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8127 (__v16sf) __W,
8128 (__mmask16) __U,
8129 _MM_FROUND_CUR_DIRECTION);
8130}
8131
8132static __inline__ __m512 __DEFAULT_FN_ATTRS
8133_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
8134{
8135 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8136 (__v16sf) _mm512_setzero_ps (),
8137 (__mmask16) __U,
8138 _MM_FROUND_CUR_DIRECTION);
8139}
8140
Craig Topper8c18e112016-05-17 04:41:50 +00008141#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
8142 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
8143 (float const *)(addr), \
8144 (__v8di)(__m512i)(index), (__mmask8)-1, \
8145 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008146
8147#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
8148 __addr, __scale) __extension__({\
8149__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
8150 __addr,(__v8di) __index, __mask, __scale);\
8151})
8152
Craig Topper8c18e112016-05-17 04:41:50 +00008153#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
8154 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
8155 (int const *)(addr), \
8156 (__v8di)(__m512i)(index), \
8157 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008158
Craig Topper8c18e112016-05-17 04:41:50 +00008159#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8160 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
8161 (int const *)(addr), \
8162 (__v8di)(__m512i)(index), \
8163 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008164
Craig Topper8c18e112016-05-17 04:41:50 +00008165#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
8166 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
8167 (double const *)(addr), \
8168 (__v8di)(__m512i)(index), (__mmask8)-1, \
8169 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008170
Craig Topper8c18e112016-05-17 04:41:50 +00008171#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8172 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
8173 (double const *)(addr), \
8174 (__v8di)(__m512i)(index), \
8175 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008176
Craig Topper8c18e112016-05-17 04:41:50 +00008177#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
8178 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
8179 (long long const *)(addr), \
8180 (__v8di)(__m512i)(index), (__mmask8)-1, \
8181 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008182
Craig Topper8c18e112016-05-17 04:41:50 +00008183#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8184 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
8185 (long long const *)(addr), \
8186 (__v8di)(__m512i)(index), \
8187 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008188
Craig Topper8c18e112016-05-17 04:41:50 +00008189#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
8190 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
8191 (float const *)(addr), \
8192 (__v16sf)(__m512)(index), \
8193 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008194
Craig Topper8c18e112016-05-17 04:41:50 +00008195#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8196 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
8197 (float const *)(addr), \
8198 (__v16sf)(__m512)(index), \
8199 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008200
Craig Topper8c18e112016-05-17 04:41:50 +00008201#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
8202 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
8203 (int const *)(addr), \
8204 (__v16si)(__m512i)(index), \
8205 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008206
Craig Topper8c18e112016-05-17 04:41:50 +00008207#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8208 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
8209 (int const *)(addr), \
8210 (__v16si)(__m512i)(index), \
8211 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008212
Craig Topper8c18e112016-05-17 04:41:50 +00008213#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
8214 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
8215 (double const *)(addr), \
8216 (__v8si)(__m256i)(index), (__mmask8)-1, \
8217 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008218
Craig Topper8c18e112016-05-17 04:41:50 +00008219#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8220 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
8221 (double const *)(addr), \
8222 (__v8si)(__m256i)(index), \
8223 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008224
Craig Topper8c18e112016-05-17 04:41:50 +00008225#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
8226 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
8227 (long long const *)(addr), \
8228 (__v8si)(__m256i)(index), (__mmask8)-1, \
8229 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008230
Craig Topper8c18e112016-05-17 04:41:50 +00008231#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8232 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
8233 (long long const *)(addr), \
8234 (__v8si)(__m256i)(index), \
8235 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008236
Craig Topper8c18e112016-05-17 04:41:50 +00008237#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
8238 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
8239 (__v8di)(__m512i)(index), \
8240 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008241
Craig Topper8c18e112016-05-17 04:41:50 +00008242#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8243 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
8244 (__v8di)(__m512i)(index), \
8245 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008246
Craig Topper8c18e112016-05-17 04:41:50 +00008247#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
8248 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
8249 (__v8di)(__m512i)(index), \
8250 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008251
Craig Topper8c18e112016-05-17 04:41:50 +00008252#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8253 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
8254 (__v8di)(__m512i)(index), \
8255 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008256
Craig Topper8c18e112016-05-17 04:41:50 +00008257#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
8258 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
8259 (__v8di)(__m512i)(index), \
8260 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008261
Craig Topper8c18e112016-05-17 04:41:50 +00008262#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8263 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
8264 (__v8di)(__m512i)(index), \
8265 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008266
Craig Topper8c18e112016-05-17 04:41:50 +00008267#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
8268 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
8269 (__v8di)(__m512i)(index), \
8270 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008271
Craig Topper8c18e112016-05-17 04:41:50 +00008272#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8273 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
8274 (__v8di)(__m512i)(index), \
8275 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008276
Craig Topper8c18e112016-05-17 04:41:50 +00008277#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
8278 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
8279 (__v16si)(__m512i)(index), \
8280 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008281
Craig Topper8c18e112016-05-17 04:41:50 +00008282#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8283 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
8284 (__v16si)(__m512i)(index), \
8285 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008286
Craig Topper8c18e112016-05-17 04:41:50 +00008287#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
8288 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
8289 (__v16si)(__m512i)(index), \
8290 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008291
Craig Topper8c18e112016-05-17 04:41:50 +00008292#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8293 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
8294 (__v16si)(__m512i)(index), \
8295 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008296
Craig Topper8c18e112016-05-17 04:41:50 +00008297#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
8298 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
8299 (__v8si)(__m256i)(index), \
8300 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008301
Craig Topper8c18e112016-05-17 04:41:50 +00008302#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8303 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
8304 (__v8si)(__m256i)(index), \
8305 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008306
Craig Topper8c18e112016-05-17 04:41:50 +00008307#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
8308 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
8309 (__v8si)(__m256i)(index), \
8310 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008311
Craig Topper8c18e112016-05-17 04:41:50 +00008312#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8313 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
8314 (__v8si)(__m256i)(index), \
8315 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008316
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008317static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008318_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008319{
8320 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
8321 (__v4sf) __B,
8322 (__v4sf) __W,
8323 (__mmask8) __U,
8324 _MM_FROUND_CUR_DIRECTION);
8325}
8326
Craig Topper8c18e112016-05-17 04:41:50 +00008327#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
8328 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8329 (__v4sf)(__m128)(B), \
8330 (__v4sf)(__m128)(W), (__mmask8)(U), \
8331 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008332
8333static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008334_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008335{
8336 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8337 (__v4sf) __B,
8338 (__v4sf) __C,
8339 (__mmask8) __U,
8340 _MM_FROUND_CUR_DIRECTION);
8341}
8342
Craig Topper8c18e112016-05-17 04:41:50 +00008343#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
8344 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8345 (__v4sf)(__m128)(B), \
8346 (__v4sf)(__m128)(C), (__mmask8)(U), \
8347 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008348
8349static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008350_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008351{
8352 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8353 (__v4sf) __X,
8354 (__v4sf) __Y,
8355 (__mmask8) __U,
8356 _MM_FROUND_CUR_DIRECTION);
8357}
8358
Craig Topper8c18e112016-05-17 04:41:50 +00008359#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8360 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8361 (__v4sf)(__m128)(X), \
8362 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8363 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008364
8365static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008366_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008367{
8368 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008369 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008370 (__v4sf) __W,
8371 (__mmask8) __U,
8372 _MM_FROUND_CUR_DIRECTION);
8373}
8374
Craig Topper8c18e112016-05-17 04:41:50 +00008375#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8376 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8377 -(__v4sf)(__m128)(B), \
8378 (__v4sf)(__m128)(W), (__mmask8)(U), \
8379 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008380
8381static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008382_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008383{
8384 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8385 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008386 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008387 (__mmask8) __U,
8388 _MM_FROUND_CUR_DIRECTION);
8389}
8390
Craig Topper8c18e112016-05-17 04:41:50 +00008391#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8392 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8393 (__v4sf)(__m128)(B), \
8394 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8395 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008396
8397static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008398_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008399{
8400 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8401 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008402 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008403 (__mmask8) __U,
8404 _MM_FROUND_CUR_DIRECTION);
8405}
8406
Craig Topper8c18e112016-05-17 04:41:50 +00008407#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8408 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8409 (__v4sf)(__m128)(X), \
8410 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8411 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008412
8413static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008414_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008415{
Craig Topper9864c592016-05-15 20:10:03 +00008416 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008417 (__v4sf) __B,
8418 (__v4sf) __W,
8419 (__mmask8) __U,
8420 _MM_FROUND_CUR_DIRECTION);
8421}
8422
Craig Topper8c18e112016-05-17 04:41:50 +00008423#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8424 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8425 (__v4sf)(__m128)(B), \
8426 (__v4sf)(__m128)(W), (__mmask8)(U), \
8427 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008428
8429static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008430_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008431{
Craig Topper9864c592016-05-15 20:10:03 +00008432 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008433 (__v4sf) __B,
8434 (__v4sf) __C,
8435 (__mmask8) __U,
8436 _MM_FROUND_CUR_DIRECTION);
8437}
8438
Craig Topper8c18e112016-05-17 04:41:50 +00008439#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8440 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8441 (__v4sf)(__m128)(B), \
8442 (__v4sf)(__m128)(C), (__mmask8)(U), \
8443 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008444
8445static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008446_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008447{
Craig Topper9864c592016-05-15 20:10:03 +00008448 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008449 (__v4sf) __X,
8450 (__v4sf) __Y,
8451 (__mmask8) __U,
8452 _MM_FROUND_CUR_DIRECTION);
8453}
8454
Craig Topper8c18e112016-05-17 04:41:50 +00008455#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8456 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8457 (__v4sf)(__m128)(X), \
8458 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8459 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008460
8461static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008462_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008463{
Craig Topper9864c592016-05-15 20:10:03 +00008464 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8465 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008466 (__v4sf) __W,
8467 (__mmask8) __U,
8468 _MM_FROUND_CUR_DIRECTION);
8469}
8470
Craig Topper8c18e112016-05-17 04:41:50 +00008471#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8472 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8473 -(__v4sf)(__m128)(B), \
8474 (__v4sf)(__m128)(W), (__mmask8)(U), \
8475 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008476
8477static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008478_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008479{
Craig Topper9864c592016-05-15 20:10:03 +00008480 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008481 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008482 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008483 (__mmask8) __U,
8484 _MM_FROUND_CUR_DIRECTION);
8485}
8486
Craig Topper8c18e112016-05-17 04:41:50 +00008487#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8488 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8489 (__v4sf)(__m128)(B), \
8490 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8491 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008492
8493static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008494_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008495{
Craig Topper9864c592016-05-15 20:10:03 +00008496 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008497 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008498 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008499 (__mmask8) __U,
8500 _MM_FROUND_CUR_DIRECTION);
8501}
8502
Craig Topper8c18e112016-05-17 04:41:50 +00008503#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8504 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8505 (__v4sf)(__m128)(X), \
8506 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8507 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008508
Craig Topper58187d32016-05-17 04:41:29 +00008509static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008510_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008511{
Craig Topper58187d32016-05-17 04:41:29 +00008512 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008513 (__v2df) __B,
8514 (__v2df) __W,
8515 (__mmask8) __U,
8516 _MM_FROUND_CUR_DIRECTION);
8517}
8518
Craig Topper8c18e112016-05-17 04:41:50 +00008519#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8520 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8521 (__v2df)(__m128d)(B), \
8522 (__v2df)(__m128d)(W), (__mmask8)(U), \
8523 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008524
Craig Topper58187d32016-05-17 04:41:29 +00008525static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008526_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008527{
Craig Topper58187d32016-05-17 04:41:29 +00008528 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008529 (__v2df) __B,
8530 (__v2df) __C,
8531 (__mmask8) __U,
8532 _MM_FROUND_CUR_DIRECTION);
8533}
8534
Craig Topper8c18e112016-05-17 04:41:50 +00008535#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8536 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8537 (__v2df)(__m128d)(B), \
8538 (__v2df)(__m128d)(C), (__mmask8)(U), \
8539 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008540
Craig Topper58187d32016-05-17 04:41:29 +00008541static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008542_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008543{
Craig Topper58187d32016-05-17 04:41:29 +00008544 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008545 (__v2df) __X,
8546 (__v2df) __Y,
8547 (__mmask8) __U,
8548 _MM_FROUND_CUR_DIRECTION);
8549}
8550
Craig Topper8c18e112016-05-17 04:41:50 +00008551#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8552 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8553 (__v2df)(__m128d)(X), \
8554 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8555 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008556
Craig Topper58187d32016-05-17 04:41:29 +00008557static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008558_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008559{
Craig Topper58187d32016-05-17 04:41:29 +00008560 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008561 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008562 (__v2df) __W,
8563 (__mmask8) __U,
8564 _MM_FROUND_CUR_DIRECTION);
8565}
8566
Craig Topper8c18e112016-05-17 04:41:50 +00008567#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8568 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8569 -(__v2df)(__m128d)(B), \
8570 (__v2df)(__m128d)(W), (__mmask8)(U), \
8571 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008572
Craig Topper58187d32016-05-17 04:41:29 +00008573static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008574_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008575{
Craig Topper58187d32016-05-17 04:41:29 +00008576 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008577 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008578 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008579 (__mmask8) __U,
8580 _MM_FROUND_CUR_DIRECTION);
8581}
8582
Craig Topper8c18e112016-05-17 04:41:50 +00008583#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8584 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8585 (__v2df)(__m128d)(B), \
8586 -(__v2df)(__m128d)(C), \
8587 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008588
Craig Topper58187d32016-05-17 04:41:29 +00008589static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008590_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008591{
Craig Topper58187d32016-05-17 04:41:29 +00008592 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008593 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008594 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008595 (__mmask8) __U,
8596 _MM_FROUND_CUR_DIRECTION);
8597}
8598
Craig Topper8c18e112016-05-17 04:41:50 +00008599#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8600 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8601 (__v2df)(__m128d)(X), \
8602 -(__v2df)(__m128d)(Y), \
8603 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008604
Craig Topper58187d32016-05-17 04:41:29 +00008605static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008606_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008607{
Craig Topper58187d32016-05-17 04:41:29 +00008608 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008609 (__v2df) __B,
8610 (__v2df) __W,
8611 (__mmask8) __U,
8612 _MM_FROUND_CUR_DIRECTION);
8613}
8614
Craig Topper8c18e112016-05-17 04:41:50 +00008615#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8616 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8617 (__v2df)(__m128d)(B), \
8618 (__v2df)(__m128d)(W), (__mmask8)(U), \
8619 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008620
Craig Topper58187d32016-05-17 04:41:29 +00008621static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008622_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008623{
Craig Topper58187d32016-05-17 04:41:29 +00008624 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008625 (__v2df) __B,
8626 (__v2df) __C,
8627 (__mmask8) __U,
8628 _MM_FROUND_CUR_DIRECTION);
8629}
8630
Craig Topper8c18e112016-05-17 04:41:50 +00008631#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8632 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8633 (__v2df)(__m128d)(B), \
8634 (__v2df)(__m128d)(C), (__mmask8)(U), \
8635 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008636
Craig Topper58187d32016-05-17 04:41:29 +00008637static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008638_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008639{
Craig Topper58187d32016-05-17 04:41:29 +00008640 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008641 (__v2df) __X,
8642 (__v2df) __Y,
8643 (__mmask8) __U,
8644 _MM_FROUND_CUR_DIRECTION);
8645}
8646
Craig Topper8c18e112016-05-17 04:41:50 +00008647#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8648 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8649 (__v2df)(__m128d)(X), \
8650 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8651 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008652
Craig Topper58187d32016-05-17 04:41:29 +00008653static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008654_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008655{
Craig Topper58187d32016-05-17 04:41:29 +00008656 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008657 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008658 (__v2df) __W,
8659 (__mmask8) __U,
8660 _MM_FROUND_CUR_DIRECTION);
8661}
8662
Craig Topper8c18e112016-05-17 04:41:50 +00008663#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8664 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8665 -(__v2df)(__m128d)(B), \
8666 (__v2df)(__m128d)(W), (__mmask8)(U), \
8667 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008668
Craig Topper58187d32016-05-17 04:41:29 +00008669static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008670_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008671{
Craig Topper58187d32016-05-17 04:41:29 +00008672 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008673 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008674 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008675 (__mmask8) __U,
8676 _MM_FROUND_CUR_DIRECTION);
8677}
8678
Craig Topper8c18e112016-05-17 04:41:50 +00008679#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8680 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8681 (__v2df)(__m128d)(B), \
8682 -(__v2df)(__m128d)(C), \
8683 (__mmask8)(U), \
8684 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008685
Craig Topper58187d32016-05-17 04:41:29 +00008686static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008687_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008688{
Craig Topper58187d32016-05-17 04:41:29 +00008689 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008690 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008691 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008692 (__mmask8) __U,
8693 _MM_FROUND_CUR_DIRECTION);
8694}
8695
Craig Topper8c18e112016-05-17 04:41:50 +00008696#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8697 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8698 (__v2df)(__m128d)(X), \
8699 -(__v2df)(__m128d)(Y), \
8700 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008701
Craig Topper8c18e112016-05-17 04:41:50 +00008702#define _mm512_permutex_pd(X, M) __extension__ ({ \
8703 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8704 (__v8df)_mm512_undefined_pd(), \
8705 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008706
Craig Topper8c18e112016-05-17 04:41:50 +00008707#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8708 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8709 (__v8df)(__m512d)(W), \
8710 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008711
Craig Topper8c18e112016-05-17 04:41:50 +00008712#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8713 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8714 (__v8df)_mm512_setzero_pd(), \
8715 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008716
Craig Topper8c18e112016-05-17 04:41:50 +00008717#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8718 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8719 (__v8di)_mm512_undefined_epi32(), \
8720 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008721
Craig Topper8c18e112016-05-17 04:41:50 +00008722#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8723 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8724 (__v8di)(__m512i)(W), \
8725 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008726
Craig Topper8c18e112016-05-17 04:41:50 +00008727#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8728 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8729 (__v8di)_mm512_setzero_si512(), \
8730 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008731
8732static __inline__ __m512d __DEFAULT_FN_ATTRS
8733_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8734{
8735 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8736 (__v8di) __X,
8737 (__v8df) _mm512_undefined_pd (),
8738 (__mmask8) -1);
8739}
8740
8741static __inline__ __m512d __DEFAULT_FN_ATTRS
8742_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8743{
8744 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8745 (__v8di) __X,
8746 (__v8df) __W,
8747 (__mmask8) __U);
8748}
8749
8750static __inline__ __m512d __DEFAULT_FN_ATTRS
8751_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8752{
8753 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8754 (__v8di) __X,
8755 (__v8df) _mm512_setzero_pd (),
8756 (__mmask8) __U);
8757}
8758
8759static __inline__ __m512i __DEFAULT_FN_ATTRS
8760_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8761{
8762 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8763 (__v8di) __X,
8764 (__v8di) _mm512_setzero_si512 (),
8765 __M);
8766}
8767
8768static __inline__ __m512i __DEFAULT_FN_ATTRS
8769_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8770{
8771 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8772 (__v8di) __X,
8773 (__v8di) _mm512_undefined_epi32 (),
8774 (__mmask8) -1);
8775}
8776
8777static __inline__ __m512i __DEFAULT_FN_ATTRS
8778_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8779 __m512i __Y)
8780{
8781 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8782 (__v8di) __X,
8783 (__v8di) __W,
8784 __M);
8785}
8786
8787static __inline__ __m512 __DEFAULT_FN_ATTRS
8788_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8789{
8790 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8791 (__v16si) __X,
8792 (__v16sf) _mm512_undefined_ps (),
8793 (__mmask16) -1);
8794}
8795
8796static __inline__ __m512 __DEFAULT_FN_ATTRS
8797_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8798{
8799 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8800 (__v16si) __X,
8801 (__v16sf) __W,
8802 (__mmask16) __U);
8803}
8804
8805static __inline__ __m512 __DEFAULT_FN_ATTRS
8806_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8807{
8808 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8809 (__v16si) __X,
8810 (__v16sf) _mm512_setzero_ps (),
8811 (__mmask16) __U);
8812}
8813
8814static __inline__ __m512i __DEFAULT_FN_ATTRS
8815_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8816{
8817 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8818 (__v16si) __X,
8819 (__v16si) _mm512_setzero_si512 (),
8820 __M);
8821}
8822
8823static __inline__ __m512i __DEFAULT_FN_ATTRS
8824_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8825{
8826 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8827 (__v16si) __X,
8828 (__v16si) _mm512_undefined_epi32 (),
8829 (__mmask16) -1);
8830}
8831
8832static __inline__ __m512i __DEFAULT_FN_ATTRS
8833_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8834 __m512i __Y)
8835{
8836 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8837 (__v16si) __X,
8838 (__v16si) __W,
8839 __M);
8840}
8841
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008842static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8843_mm512_kand (__mmask16 __A, __mmask16 __B)
8844{
8845 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8846}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008847
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008848static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8849_mm512_kandn (__mmask16 __A, __mmask16 __B)
8850{
8851 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8852}
8853
8854static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8855_mm512_kor (__mmask16 __A, __mmask16 __B)
8856{
8857 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8858}
8859
8860static __inline__ int __DEFAULT_FN_ATTRS
8861_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8862{
Craig Topper91f23d92016-05-16 01:09:16 +00008863 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008864}
8865
8866static __inline__ int __DEFAULT_FN_ATTRS
8867_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8868{
Craig Topper91f23d92016-05-16 01:09:16 +00008869 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008870}
8871
8872static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8873_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8874{
8875 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8876}
8877
8878static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8879_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8880{
8881 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8882}
8883
8884static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8885_mm512_kxor (__mmask16 __A, __mmask16 __B)
8886{
8887 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8888}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008889
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008890static __inline__ void __DEFAULT_FN_ATTRS
8891_mm512_stream_si512 (__m512i * __P, __m512i __A)
8892{
8893 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8894}
8895
8896static __inline__ __m512i __DEFAULT_FN_ATTRS
8897_mm512_stream_load_si512 (void *__P)
8898{
8899 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8900}
8901
8902static __inline__ void __DEFAULT_FN_ATTRS
8903_mm512_stream_pd (double *__P, __m512d __A)
8904{
8905 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8906}
8907
8908static __inline__ void __DEFAULT_FN_ATTRS
8909_mm512_stream_ps (float *__P, __m512 __A)
8910{
8911 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8912}
8913
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008914static __inline__ __m512d __DEFAULT_FN_ATTRS
8915_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8916{
8917 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8918 (__v8df) __W,
8919 (__mmask8) __U);
8920}
8921
8922static __inline__ __m512d __DEFAULT_FN_ATTRS
8923_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8924{
8925 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8926 (__v8df)
8927 _mm512_setzero_pd (),
8928 (__mmask8) __U);
8929}
8930
8931static __inline__ __m512i __DEFAULT_FN_ATTRS
8932_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8933{
8934 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8935 (__v8di) __W,
8936 (__mmask8) __U);
8937}
8938
8939static __inline__ __m512i __DEFAULT_FN_ATTRS
8940_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8941{
8942 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8943 (__v8di)
8944 _mm512_setzero_si512 (),
8945 (__mmask8) __U);
8946}
8947
8948static __inline__ __m512 __DEFAULT_FN_ATTRS
8949_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8950{
8951 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8952 (__v16sf) __W,
8953 (__mmask16) __U);
8954}
8955
8956static __inline__ __m512 __DEFAULT_FN_ATTRS
8957_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8958{
8959 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8960 (__v16sf)
8961 _mm512_setzero_ps (),
8962 (__mmask16) __U);
8963}
8964
8965static __inline__ __m512i __DEFAULT_FN_ATTRS
8966_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8967{
8968 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8969 (__v16si) __W,
8970 (__mmask16) __U);
8971}
8972
8973static __inline__ __m512i __DEFAULT_FN_ATTRS
8974_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8975{
8976 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8977 (__v16si)
8978 _mm512_setzero_si512 (),
8979 (__mmask16) __U);
8980}
8981
Craig Topper8c18e112016-05-17 04:41:50 +00008982#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8983 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8984 (__v4sf)(__m128)(Y), (int)(P), \
8985 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008986
Craig Topper8c18e112016-05-17 04:41:50 +00008987#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8988 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8989 (__v4sf)(__m128)(Y), (int)(P), \
8990 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008991
Craig Topper8c18e112016-05-17 04:41:50 +00008992#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8993 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8994 (__v4sf)(__m128)(Y), (int)(P), \
8995 (__mmask8)-1, \
8996 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008997
Craig Topper8c18e112016-05-17 04:41:50 +00008998#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8999 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
9000 (__v4sf)(__m128)(Y), (int)(P), \
9001 (__mmask8)(M), \
9002 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009003
Craig Topper8c18e112016-05-17 04:41:50 +00009004#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
9005 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9006 (__v2df)(__m128d)(Y), (int)(P), \
9007 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009008
Craig Topper8c18e112016-05-17 04:41:50 +00009009#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
9010 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9011 (__v2df)(__m128d)(Y), (int)(P), \
9012 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009013
Craig Topper8c18e112016-05-17 04:41:50 +00009014#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
9015 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9016 (__v2df)(__m128d)(Y), (int)(P), \
9017 (__mmask8)-1, \
9018 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009019
Craig Topper8c18e112016-05-17 04:41:50 +00009020#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
9021 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9022 (__v2df)(__m128d)(Y), (int)(P), \
9023 (__mmask8)(M), \
9024 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009025
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009026static __inline__ __m512 __DEFAULT_FN_ATTRS
9027_mm512_movehdup_ps (__m512 __A)
9028{
9029 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
9030 (__v16sf)
9031 _mm512_undefined_ps (),
9032 (__mmask16) -1);
9033}
9034
9035static __inline__ __m512 __DEFAULT_FN_ATTRS
9036_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
9037{
9038 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
9039 (__v16sf) __W,
9040 (__mmask16) __U);
9041}
9042
9043static __inline__ __m512 __DEFAULT_FN_ATTRS
9044_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
9045{
9046 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
9047 (__v16sf)
9048 _mm512_setzero_ps (),
9049 (__mmask16) __U);
9050}
9051
9052static __inline__ __m512 __DEFAULT_FN_ATTRS
9053_mm512_moveldup_ps (__m512 __A)
9054{
9055 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
9056 (__v16sf)
9057 _mm512_undefined_ps (),
9058 (__mmask16) -1);
9059}
9060
9061static __inline__ __m512 __DEFAULT_FN_ATTRS
9062_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
9063{
9064 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
9065 (__v16sf) __W,
9066 (__mmask16) __U);
9067}
9068
9069static __inline__ __m512 __DEFAULT_FN_ATTRS
9070_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
9071{
9072 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
9073 (__v16sf)
9074 _mm512_setzero_ps (),
9075 (__mmask16) __U);
9076}
9077
Craig Topper8c18e112016-05-17 04:41:50 +00009078#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
9079 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
9080 (__v16si)_mm512_undefined_epi32(), \
9081 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009082
Craig Topper8c18e112016-05-17 04:41:50 +00009083#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
9084 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
9085 (__v16si)(__m512i)(W), \
9086 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009087
Craig Topper8c18e112016-05-17 04:41:50 +00009088#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
9089 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
9090 (__v16si)_mm512_setzero_si512(), \
9091 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009092
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00009093static __inline__ __m512d __DEFAULT_FN_ATTRS
9094_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
9095{
9096 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
9097 (__v8df) __W,
9098 (__mmask8) __U);
9099}
9100
9101static __inline__ __m512d __DEFAULT_FN_ATTRS
9102_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
9103{
9104 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
9105 (__v8df) _mm512_setzero_pd (),
9106 (__mmask8) __U);
9107}
9108
9109static __inline__ __m512i __DEFAULT_FN_ATTRS
9110_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
9111{
9112 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
9113 (__v8di) __W,
9114 (__mmask8) __U);
9115}
9116
9117static __inline__ __m512i __DEFAULT_FN_ATTRS
9118_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
9119{
9120 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
9121 (__v8di) _mm512_setzero_pd (),
9122 (__mmask8) __U);
9123}
9124
9125static __inline__ __m512d __DEFAULT_FN_ATTRS
9126_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
9127{
9128 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
9129 (__v8df) __W,
9130 (__mmask8) __U);
9131}
9132
9133static __inline__ __m512d __DEFAULT_FN_ATTRS
9134_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
9135{
9136 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
9137 (__v8df) _mm512_setzero_pd(),
9138 (__mmask8) __U);
9139}
9140
9141static __inline__ __m512i __DEFAULT_FN_ATTRS
9142_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
9143{
9144 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
9145 (__v8di) __W,
9146 (__mmask8) __U);
9147}
9148
9149static __inline__ __m512i __DEFAULT_FN_ATTRS
9150_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
9151{
9152 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
9153 (__v8di) _mm512_setzero_pd(),
9154 (__mmask8) __U);
9155}
9156
9157static __inline__ __m512 __DEFAULT_FN_ATTRS
9158_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
9159{
9160 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
9161 (__v16sf) __W,
9162 (__mmask16) __U);
9163}
9164
9165static __inline__ __m512 __DEFAULT_FN_ATTRS
9166_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
9167{
9168 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
9169 (__v16sf) _mm512_setzero_ps(),
9170 (__mmask16) __U);
9171}
9172
9173static __inline__ __m512i __DEFAULT_FN_ATTRS
9174_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
9175{
9176 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
9177 (__v16si) __W,
9178 (__mmask16) __U);
9179}
9180
9181static __inline__ __m512i __DEFAULT_FN_ATTRS
9182_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
9183{
9184 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
9185 (__v16si) _mm512_setzero_ps(),
9186 (__mmask16) __U);
9187}
9188
9189static __inline__ __m512 __DEFAULT_FN_ATTRS
9190_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
9191{
9192 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
9193 (__v16sf) __W,
9194 (__mmask16) __U);
9195}
9196
9197static __inline__ __m512 __DEFAULT_FN_ATTRS
9198_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
9199{
9200 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
9201 (__v16sf) _mm512_setzero_ps(),
9202 (__mmask16) __U);
9203}
9204
9205static __inline__ __m512i __DEFAULT_FN_ATTRS
9206_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
9207{
9208 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9209 (__v16si) __W,
9210 (__mmask16) __U);
9211}
9212
9213static __inline__ __m512i __DEFAULT_FN_ATTRS
9214_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
9215{
9216 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9217 (__v16si) _mm512_setzero_ps(),
9218 (__mmask16) __U);
9219}
9220
Craig Topper8c18e112016-05-17 04:41:50 +00009221#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
9222 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9223 (__v8df)_mm512_undefined_pd(), \
9224 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009225
Craig Topper8c18e112016-05-17 04:41:50 +00009226#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
9227 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9228 (__v8df)(__m512d)(W), \
9229 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009230
Craig Topper8c18e112016-05-17 04:41:50 +00009231#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
9232 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9233 (__v8df)_mm512_setzero_pd(), \
9234 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009235
9236static __inline__ __m512d __DEFAULT_FN_ATTRS
9237_mm512_cvtps_pd (__m256 __A)
9238{
9239 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9240 (__v8df)
9241 _mm512_undefined_pd (),
9242 (__mmask8) -1,
9243 _MM_FROUND_CUR_DIRECTION);
9244}
9245
9246static __inline__ __m512d __DEFAULT_FN_ATTRS
9247_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
9248{
9249 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9250 (__v8df) __W,
9251 (__mmask8) __U,
9252 _MM_FROUND_CUR_DIRECTION);
9253}
9254
9255static __inline__ __m512d __DEFAULT_FN_ATTRS
9256_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
9257{
9258 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9259 (__v8df)
9260 _mm512_setzero_pd (),
9261 (__mmask8) __U,
9262 _MM_FROUND_CUR_DIRECTION);
9263}
9264
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009265static __inline__ __m512d __DEFAULT_FN_ATTRS
9266_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
9267{
9268 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9269 (__v8df) __W,
9270 (__mmask8) __U);
9271}
9272
9273static __inline__ __m512d __DEFAULT_FN_ATTRS
9274_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
9275{
9276 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9277 (__v8df)
9278 _mm512_setzero_pd (),
9279 (__mmask8) __U);
9280}
9281
9282static __inline__ __m512 __DEFAULT_FN_ATTRS
9283_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
9284{
9285 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9286 (__v16sf) __W,
9287 (__mmask16) __U);
9288}
9289
9290static __inline__ __m512 __DEFAULT_FN_ATTRS
9291_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
9292{
9293 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9294 (__v16sf)
9295 _mm512_setzero_ps (),
9296 (__mmask16) __U);
9297}
9298
Michael Zuckerman708e7592016-05-03 10:42:46 +00009299static __inline__ void __DEFAULT_FN_ATTRS
9300_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
9301{
9302 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
9303 (__mmask8) __U);
9304}
9305
9306static __inline__ void __DEFAULT_FN_ATTRS
9307_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
9308{
9309 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
9310 (__mmask8) __U);
9311}
9312
9313static __inline__ void __DEFAULT_FN_ATTRS
9314_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
9315{
9316 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
9317 (__mmask16) __U);
9318}
9319
9320static __inline__ void __DEFAULT_FN_ATTRS
9321_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
9322{
9323 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
9324 (__mmask16) __U);
9325}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009326
Craig Topper8c18e112016-05-17 04:41:50 +00009327#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
9328 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9329 (__v2df)(__m128d)(B), \
9330 (__v4sf)_mm_undefined_ps(), \
9331 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009332
Craig Topper8c18e112016-05-17 04:41:50 +00009333#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
9334 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9335 (__v2df)(__m128d)(B), \
9336 (__v4sf)(__m128)(W), \
9337 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009338
Craig Topper8c18e112016-05-17 04:41:50 +00009339#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
9340 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9341 (__v2df)(__m128d)(B), \
9342 (__v4sf)_mm_setzero_ps(), \
9343 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009344
Asaf Badouh89f65762016-06-02 08:11:35 +00009345static __inline__ __m128 __DEFAULT_FN_ATTRS
9346_mm_mask_cvtsd_ss (__m128 W, __mmask8 U, __m128 A, __m128d B)
9347{
9348 return __builtin_ia32_cvtsd2ss_round_mask ((__v4sf)(A),
9349 (__v2df)(B),
9350 (__v4sf)(W),
9351 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION);
9352}
9353
9354static __inline__ __m128 __DEFAULT_FN_ATTRS
9355_mm_maskz_cvtsd_ss (__mmask8 U, __m128 A, __m128d B)
9356{
9357 return __builtin_ia32_cvtsd2ss_round_mask ((__v4sf)(A),
9358 (__v2df)(B),
9359 (__v4sf)_mm_setzero_ps(),
9360 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION);
9361}
9362
9363#define _mm_cvtss_i32 _mm_cvtss_si32
9364#define _mm_cvtss_i64 _mm_cvtss_si64
9365#define _mm_cvtsd_i32 _mm_cvtsd_si32
9366#define _mm_cvtsd_i64 _mm_cvtsd_si64
9367#define _mm_cvti32_sd _mm_cvtsi32_sd
9368#define _mm_cvti64_sd _mm_cvtsi64_sd
9369#define _mm_cvti32_ss _mm_cvtsi32_ss
9370#define _mm_cvti64_ss _mm_cvtsi64_ss
9371
Craig Topper8c18e112016-05-17 04:41:50 +00009372#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
9373 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9374 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009375
Craig Topper8c18e112016-05-17 04:41:50 +00009376#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
9377 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9378 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009379
Craig Topper8c18e112016-05-17 04:41:50 +00009380#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9381 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009382
Craig Topper8c18e112016-05-17 04:41:50 +00009383#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9384 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009385
Craig Topper8c18e112016-05-17 04:41:50 +00009386#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9387 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9388 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009389
Craig Topper8c18e112016-05-17 04:41:50 +00009390#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9391 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9392 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009393
Craig Topper8c18e112016-05-17 04:41:50 +00009394#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9395 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9396 (__v4sf)(__m128)(B), \
9397 (__v2df)_mm_undefined_pd(), \
9398 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009399
Craig Topper8c18e112016-05-17 04:41:50 +00009400#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9401 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9402 (__v4sf)(__m128)(B), \
9403 (__v2df)(__m128d)(W), \
9404 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009405
Craig Topper8c18e112016-05-17 04:41:50 +00009406#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9407 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9408 (__v4sf)(__m128)(B), \
9409 (__v2df)_mm_setzero_pd(), \
9410 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009411
9412static __inline__ __m128d __DEFAULT_FN_ATTRS
Asaf Badouh89f65762016-06-02 08:11:35 +00009413_mm_mask_cvtss_sd (__m128d W, __mmask8 U, __m128d A, __m128 B)
9414{
9415 return __builtin_ia32_cvtss2sd_round_mask((__v2df)(A),
9416 (__v4sf)(B),
9417 (__v2df)(W),
9418 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION);
9419}
9420
9421static __inline__ __m128d __DEFAULT_FN_ATTRS
9422_mm_maskz_cvtss_sd (__mmask8 U, __m128d A, __m128 B)
9423{
9424 return __builtin_ia32_cvtss2sd_round_mask((__v2df)(A),
9425 (__v4sf)(B),
9426 (__v2df)_mm_setzero_pd(),
9427 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION);
9428}
9429
9430static __inline__ __m128d __DEFAULT_FN_ATTRS
Michael Zuckermane6f73892016-05-04 08:55:11 +00009431_mm_cvtu32_sd (__m128d __A, unsigned __B)
9432{
9433 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9434}
9435
Craig Topper8c18e112016-05-17 04:41:50 +00009436#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9437 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9438 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009439
9440static __inline__ __m128d __DEFAULT_FN_ATTRS
9441_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9442{
9443 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9444 _MM_FROUND_CUR_DIRECTION);
9445}
9446
Craig Topper8c18e112016-05-17 04:41:50 +00009447#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9448 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9449 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009450
9451static __inline__ __m128 __DEFAULT_FN_ATTRS
9452_mm_cvtu32_ss (__m128 __A, unsigned __B)
9453{
9454 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9455 _MM_FROUND_CUR_DIRECTION);
9456}
9457
Craig Topper8c18e112016-05-17 04:41:50 +00009458#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9459 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9460 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009461
9462static __inline__ __m128 __DEFAULT_FN_ATTRS
9463_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9464{
9465 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9466 _MM_FROUND_CUR_DIRECTION);
9467}
9468
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009469static __inline__ __m512i __DEFAULT_FN_ATTRS
9470_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9471{
9472 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9473 __M);
9474}
9475
9476static __inline__ __m512i __DEFAULT_FN_ATTRS
9477_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9478{
9479 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9480 __M);
9481}
9482
Michael Zuckerman178113e2016-05-19 12:07:49 +00009483static __inline __m512i __DEFAULT_FN_ATTRS
9484_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9485 int __E, int __F, int __G, int __H,
9486 int __I, int __J, int __K, int __L,
9487 int __M, int __N, int __O, int __P)
9488{
9489 return __extension__ (__m512i)(__v16si)
9490 { __P, __O, __N, __M, __L, __K, __J, __I,
9491 __H, __G, __F, __E, __D, __C, __B, __A };
9492}
9493
9494#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9495 e8,e9,e10,e11,e12,e13,e14,e15) \
9496 _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00009497
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009498static __inline__ __m512i __DEFAULT_FN_ATTRS
9499_mm512_set_epi64 (long long __A, long long __B, long long __C,
9500 long long __D, long long __E, long long __F,
9501 long long __G, long long __H)
9502{
9503 return __extension__ (__m512i) (__v8di)
9504 { __H, __G, __F, __E, __D, __C, __B, __A };
9505}
9506
Michael Zuckerman178113e2016-05-19 12:07:49 +00009507#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9508 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9509
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009510static __inline__ __m512d __DEFAULT_FN_ATTRS
9511_mm512_set_pd (double __A, double __B, double __C, double __D,
9512 double __E, double __F, double __G, double __H)
9513{
9514 return __extension__ (__m512d)
9515 { __H, __G, __F, __E, __D, __C, __B, __A };
9516}
9517
Michael Zuckerman178113e2016-05-19 12:07:49 +00009518#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9519 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9520
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009521static __inline__ __m512 __DEFAULT_FN_ATTRS
9522_mm512_set_ps (float __A, float __B, float __C, float __D,
9523 float __E, float __F, float __G, float __H,
9524 float __I, float __J, float __K, float __L,
9525 float __M, float __N, float __O, float __P)
9526{
9527 return __extension__ (__m512)
9528 { __P, __O, __N, __M, __L, __K, __J, __I,
9529 __H, __G, __F, __E, __D, __C, __B, __A };
9530}
9531
Michael Zuckerman178113e2016-05-19 12:07:49 +00009532#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9533 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9534
Michael Kupersteine45af542015-06-30 13:36:19 +00009535#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009536
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009537#endif // __AVX512FINTRIN_H