blob: 99c2162aadc0fd859f17fd7bf424a36322afc056 [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
37typedef float __m512 __attribute__((__vector_size__(64)));
38typedef double __m512d __attribute__((__vector_size__(64)));
39typedef long long __m512i __attribute__((__vector_size__(64)));
40
41typedef unsigned char __mmask8;
42typedef unsigned short __mmask16;
43
44/* Rounding mode macros. */
45#define _MM_FROUND_TO_NEAREST_INT 0x00
46#define _MM_FROUND_TO_NEG_INF 0x01
47#define _MM_FROUND_TO_POS_INF 0x02
48#define _MM_FROUND_TO_ZERO 0x03
49#define _MM_FROUND_CUR_DIRECTION 0x04
50
Michael Zuckermandef78752016-03-28 12:23:09 +000051typedef enum
52{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000053 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
54 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
55 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
56 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
57 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
58 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
59 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
60 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
61 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
62 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
63 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
64 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
65 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
66 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
67 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
68 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
69 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
70 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
71 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
72 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
73 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
74 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
75 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
76 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
77 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
78 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
79 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
80 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
81 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
82 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
83 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
84 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
85 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
86 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
87 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
88 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
89 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
90 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
91 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
92 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
93 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
94 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
95 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
96 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
97 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
98 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
99 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
100 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
101 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
102 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
103 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
104 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
105 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
106 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
107 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
108 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
109 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
110 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
111 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
112 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
113 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
114 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
115 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
116 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
117 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
118 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
119 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
120 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
121 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
122 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
123 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
124 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
125 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
126 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
127 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
128 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
129 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
130 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
131 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
132 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
133 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
134 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
135 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
136 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
137 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
138 _MM_PERM_DDDD = 0xFF
139} _MM_PERM_ENUM;
140
141typedef enum
142{
Michael Zuckermandef78752016-03-28 12:23:09 +0000143 _MM_MANT_NORM_1_2, /* interval [1, 2) */
144 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
145 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
146 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
147} _MM_MANTISSA_NORM_ENUM;
148
149typedef enum
150{
151 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
152 _MM_MANT_SIGN_zero, /* sign = 0 */
153 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
154} _MM_MANTISSA_SIGN_ENUM;
155
Eric Christopher4d1851682015-06-17 07:09:20 +0000156/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000157#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000158
Adam Nemet0d5bb552014-07-28 17:14:40 +0000159/* Create vectors with repeated elements */
160
Michael Kupersteine45af542015-06-30 13:36:19 +0000161static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000162_mm512_setzero_si512(void)
163{
164 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
165}
166
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000167static __inline__ __m512d __DEFAULT_FN_ATTRS
168_mm512_undefined_pd()
169{
170 return (__m512d)__builtin_ia32_undef512();
171}
172
173static __inline__ __m512 __DEFAULT_FN_ATTRS
174_mm512_undefined()
175{
176 return (__m512)__builtin_ia32_undef512();
177}
178
179static __inline__ __m512 __DEFAULT_FN_ATTRS
180_mm512_undefined_ps()
181{
182 return (__m512)__builtin_ia32_undef512();
183}
184
185static __inline__ __m512i __DEFAULT_FN_ATTRS
186_mm512_undefined_epi32()
187{
188 return (__m512i)__builtin_ia32_undef512();
189}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000190static __inline__ __m512i __DEFAULT_FN_ATTRS
191_mm512_broadcastd_epi32 (__m128i __A)
192{
193 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
194 (__v16si)
195 _mm512_undefined_epi32 (),
196 (__mmask16) -1);
197}
198
199static __inline__ __m512i __DEFAULT_FN_ATTRS
200_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
201{
202 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
203 (__v16si) __O, __M);
204}
205
206static __inline__ __m512i __DEFAULT_FN_ATTRS
207_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
208{
209 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
210 (__v16si)
211 _mm512_setzero_si512 (),
212 __M);
213}
214
215static __inline__ __m512i __DEFAULT_FN_ATTRS
216_mm512_broadcastq_epi64 (__m128i __A)
217{
218 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
219 (__v8di)
220 _mm512_undefined_pd (),
221 (__mmask8) -1);
222}
223
224static __inline__ __m512i __DEFAULT_FN_ATTRS
225_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
226{
227 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
228 (__v8di) __O, __M);
229}
230
231static __inline__ __m512i __DEFAULT_FN_ATTRS
232_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
233{
234 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
235 (__v8di)
236 _mm512_setzero_si512 (),
237 __M);
238}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000239
Michael Kupersteine45af542015-06-30 13:36:19 +0000240static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000241_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
242{
243 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
244 (__v16si)
245 _mm512_setzero_si512 (),
246 __M);
247}
248
Michael Kupersteine45af542015-06-30 13:36:19 +0000249static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000250_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
251{
252#ifdef __x86_64__
253 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
254 (__v8di)
255 _mm512_setzero_si512 (),
256 __M);
257#else
258 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
259 (__v8di)
260 _mm512_setzero_si512 (),
261 __M);
262#endif
263}
264
Michael Kupersteine45af542015-06-30 13:36:19 +0000265static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000266_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000267{
268 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
269 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
270}
Michael Kupersteine45af542015-06-30 13:36:19 +0000271static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000272_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000273{
274 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
275}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000276
Michael Kupersteine45af542015-06-30 13:36:19 +0000277static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000278_mm512_set1_ps(float __w)
279{
280 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
281 __w, __w, __w, __w, __w, __w, __w, __w };
282}
283
Michael Kupersteine45af542015-06-30 13:36:19 +0000284static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000285_mm512_set1_pd(double __w)
286{
287 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
288}
289
Michael Kupersteine45af542015-06-30 13:36:19 +0000290static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +0000291_mm512_set1_epi8(char __w)
292{
293 return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w,
294 __w, __w, __w, __w, __w, __w, __w, __w,
295 __w, __w, __w, __w, __w, __w, __w, __w,
296 __w, __w, __w, __w, __w, __w, __w, __w,
297 __w, __w, __w, __w, __w, __w, __w, __w,
298 __w, __w, __w, __w, __w, __w, __w, __w,
299 __w, __w, __w, __w, __w, __w, __w, __w,
300 __w, __w, __w, __w, __w, __w, __w, __w };
301}
302
303static __inline __m512i __DEFAULT_FN_ATTRS
304_mm512_set1_epi16(short __w)
305{
306 return (__m512i)(__v32hi){ __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}
311
312static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000313_mm512_set1_epi32(int __s)
314{
315 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
316 __s, __s, __s, __s, __s, __s, __s, __s };
317}
318
Michael Kupersteine45af542015-06-30 13:36:19 +0000319static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000320_mm512_set1_epi64(long long __d)
321{
322 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
323}
324
Michael Kupersteine45af542015-06-30 13:36:19 +0000325static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000326_mm512_broadcastss_ps(__m128 __X)
327{
328 float __f = __X[0];
329 return (__v16sf){ __f, __f, __f, __f,
330 __f, __f, __f, __f,
331 __f, __f, __f, __f,
332 __f, __f, __f, __f };
333}
334
Michael Kupersteine45af542015-06-30 13:36:19 +0000335static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000336_mm512_broadcastsd_pd(__m128d __X)
337{
338 double __d = __X[0];
339 return (__v8df){ __d, __d, __d, __d,
340 __d, __d, __d, __d };
341}
342
Adam Nemetc871ff92014-07-30 16:51:24 +0000343/* Cast between vector types */
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000346_mm512_castpd256_pd512(__m256d __a)
347{
348 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
349}
350
Michael Kupersteine45af542015-06-30 13:36:19 +0000351static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000352_mm512_castps256_ps512(__m256 __a)
353{
354 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
355 -1, -1, -1, -1, -1, -1, -1, -1);
356}
357
Michael Kupersteine45af542015-06-30 13:36:19 +0000358static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000359_mm512_castpd512_pd128(__m512d __a)
360{
361 return __builtin_shufflevector(__a, __a, 0, 1);
362}
363
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000364static __inline __m256d __DEFAULT_FN_ATTRS
365_mm512_castpd512_pd256 (__m512d __A)
366{
367 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
368}
369
Michael Kupersteine45af542015-06-30 13:36:19 +0000370static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000371_mm512_castps512_ps128(__m512 __a)
372{
373 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
374}
375
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000376static __inline __m256 __DEFAULT_FN_ATTRS
377_mm512_castps512_ps256 (__m512 __A)
378{
379 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
380}
381
382static __inline __m512 __DEFAULT_FN_ATTRS
383_mm512_castpd_ps (__m512d __A)
384{
385 return (__m512) (__A);
386}
387
388static __inline __m512i __DEFAULT_FN_ATTRS
389_mm512_castpd_si512 (__m512d __A)
390{
391 return (__m512i) (__A);
392}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000393
394static __inline__ __m512d __DEFAULT_FN_ATTRS
395_mm512_castpd128_pd512 (__m128d __A)
396{
397 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
398}
399
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000400static __inline __m512d __DEFAULT_FN_ATTRS
401_mm512_castps_pd (__m512 __A)
402{
403 return (__m512d) (__A);
404}
405
406static __inline __m512i __DEFAULT_FN_ATTRS
407_mm512_castps_si512 (__m512 __A)
408{
409 return (__m512i) (__A);
410}
411
Michael Zuckermanc6677032016-05-03 14:26:52 +0000412static __inline__ __m512 __DEFAULT_FN_ATTRS
413_mm512_castps128_ps512 (__m128 __A)
414{
415 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
416}
417
418static __inline__ __m512i __DEFAULT_FN_ATTRS
419_mm512_castsi128_si512 (__m128i __A)
420{
421 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
422}
423
424static __inline__ __m512i __DEFAULT_FN_ATTRS
425_mm512_castsi256_si512 (__m256i __A)
426{
427 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
428}
429
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000430static __inline __m512 __DEFAULT_FN_ATTRS
431_mm512_castsi512_ps (__m512i __A)
432{
433 return (__m512) (__A);
434}
435
436static __inline __m512d __DEFAULT_FN_ATTRS
437_mm512_castsi512_pd (__m512i __A)
438{
439 return (__m512d) (__A);
440}
441
442static __inline __m128i __DEFAULT_FN_ATTRS
443_mm512_castsi512_si128 (__m512i __A)
444{
445 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
446}
447
Michael Zuckerman22c47e62016-05-26 14:32:11 +0000448static __inline __m256i __DEFAULT_FN_ATTRS
449_mm512_castsi512_si256 (__m512i __A)
450{
451 return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
452}
453
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000454/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000456_mm512_and_epi32(__m512i __a, __m512i __b)
457{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000458 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000459}
460
Michael Kupersteine45af542015-06-30 13:36:19 +0000461static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000462_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
463{
464 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
465 (__v16si) __b,
466 (__v16si) __src,
467 (__mmask16) __k);
468}
Michael Kupersteine45af542015-06-30 13:36:19 +0000469static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000470_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
471{
472 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
473 (__v16si) __b,
474 (__v16si)
475 _mm512_setzero_si512 (),
476 (__mmask16) __k);
477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000480_mm512_and_epi64(__m512i __a, __m512i __b)
481{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000482 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483}
484
Michael Kupersteine45af542015-06-30 13:36:19 +0000485static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000486_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
487{
488 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
489 (__v8di) __b,
490 (__v8di) __src,
491 (__mmask8) __k);
492}
Michael Kupersteine45af542015-06-30 13:36:19 +0000493static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000494_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
495{
496 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
497 (__v8di) __b,
498 (__v8di)
499 _mm512_setzero_si512 (),
500 (__mmask8) __k);
501}
502
Michael Kupersteine45af542015-06-30 13:36:19 +0000503static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000504_mm512_andnot_si512 (__m512i __A, __m512i __B)
505{
506 return (__m512i)(~(__A) & __B);
507}
508
509static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000510_mm512_andnot_epi32 (__m512i __A, __m512i __B)
511{
512 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
513 (__v16si) __B,
514 (__v16si)
515 _mm512_setzero_si512 (),
516 (__mmask16) -1);
517}
518
Michael Kupersteine45af542015-06-30 13:36:19 +0000519static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000520_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
521{
522 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
523 (__v16si) __B,
524 (__v16si) __W,
525 (__mmask16) __U);
526}
527
Michael Kupersteine45af542015-06-30 13:36:19 +0000528static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000529_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
530{
531 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
532 (__v16si) __B,
533 (__v16si)
534 _mm512_setzero_si512 (),
535 (__mmask16) __U);
536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000539_mm512_andnot_epi64 (__m512i __A, __m512i __B)
540{
541 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
542 (__v8di) __B,
543 (__v8di)
544 _mm512_setzero_si512 (),
545 (__mmask8) -1);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000549_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
550{
551 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
552 (__v8di) __B,
553 (__v8di) __W, __U);
554}
555
Michael Kupersteine45af542015-06-30 13:36:19 +0000556static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000557_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
558{
559 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
560 (__v8di) __B,
561 (__v8di)
562 _mm512_setzero_pd (),
563 __U);
564}
Michael Kupersteine45af542015-06-30 13:36:19 +0000565static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000566_mm512_or_epi32(__m512i __a, __m512i __b)
567{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000568 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000569}
570
Michael Kupersteine45af542015-06-30 13:36:19 +0000571static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000572_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
573{
574 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
575 (__v16si) __b,
576 (__v16si) __src,
577 (__mmask16) __k);
578}
Michael Kupersteine45af542015-06-30 13:36:19 +0000579static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000580_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
581{
582 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
583 (__v16si) __b,
584 (__v16si)
585 _mm512_setzero_si512 (),
586 (__mmask16) __k);
587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000590_mm512_or_epi64(__m512i __a, __m512i __b)
591{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000592 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000593}
594
Michael Kupersteine45af542015-06-30 13:36:19 +0000595static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000596_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
597{
598 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
599 (__v8di) __b,
600 (__v8di) __src,
601 (__mmask8) __k);
602}
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000604_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
605{
606 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
607 (__v8di) __b,
608 (__v8di)
609 _mm512_setzero_si512 (),
610 (__mmask8) __k);
611}
612
Michael Kupersteine45af542015-06-30 13:36:19 +0000613static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614_mm512_xor_epi32(__m512i __a, __m512i __b)
615{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000616 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000617}
618
Michael Kupersteine45af542015-06-30 13:36:19 +0000619static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000620_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
621{
622 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
623 (__v16si) __b,
624 (__v16si) __src,
625 (__mmask16) __k);
626}
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000628_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
629{
630 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
631 (__v16si) __b,
632 (__v16si)
633 _mm512_setzero_si512 (),
634 (__mmask16) __k);
635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000638_mm512_xor_epi64(__m512i __a, __m512i __b)
639{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000640 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000641}
642
Michael Kupersteine45af542015-06-30 13:36:19 +0000643static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000644_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
645{
646 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
647 (__v8di) __b,
648 (__v8di) __src,
649 (__mmask8) __k);
650}
Michael Kupersteine45af542015-06-30 13:36:19 +0000651static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000652_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
653{
654 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
655 (__v8di) __b,
656 (__v8di)
657 _mm512_setzero_si512 (),
658 (__mmask8) __k);
659}
660
Michael Kupersteine45af542015-06-30 13:36:19 +0000661static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000662_mm512_and_si512(__m512i __a, __m512i __b)
663{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000664 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000665}
666
Michael Kupersteine45af542015-06-30 13:36:19 +0000667static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000668_mm512_or_si512(__m512i __a, __m512i __b)
669{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000670 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000671}
672
Michael Kupersteine45af542015-06-30 13:36:19 +0000673static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000674_mm512_xor_si512(__m512i __a, __m512i __b)
675{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000676 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000677}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000678/* Arithmetic */
679
Michael Kupersteine45af542015-06-30 13:36:19 +0000680static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000681_mm512_add_pd(__m512d __a, __m512d __b)
682{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000683 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000684}
685
Michael Kupersteine45af542015-06-30 13:36:19 +0000686static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000687_mm512_add_ps(__m512 __a, __m512 __b)
688{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000689 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000693_mm512_mul_pd(__m512d __a, __m512d __b)
694{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000695 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000699_mm512_mul_ps(__m512 __a, __m512 __b)
700{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000701 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000702}
703
Michael Kupersteine45af542015-06-30 13:36:19 +0000704static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000705_mm512_sub_pd(__m512d __a, __m512d __b)
706{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000707 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000708}
709
Michael Kupersteine45af542015-06-30 13:36:19 +0000710static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000711_mm512_sub_ps(__m512 __a, __m512 __b)
712{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000713 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000714}
715
Michael Kupersteine45af542015-06-30 13:36:19 +0000716static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000717_mm512_add_epi64 (__m512i __A, __m512i __B)
718{
719 return (__m512i) ((__v8di) __A + (__v8di) __B);
720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000723_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
724{
725 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
726 (__v8di) __B,
727 (__v8di) __W,
728 (__mmask8) __U);
729}
730
Michael Kupersteine45af542015-06-30 13:36:19 +0000731static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000732_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
733{
734 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
735 (__v8di) __B,
736 (__v8di)
737 _mm512_setzero_si512 (),
738 (__mmask8) __U);
739}
740
Michael Kupersteine45af542015-06-30 13:36:19 +0000741static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000742_mm512_sub_epi64 (__m512i __A, __m512i __B)
743{
744 return (__m512i) ((__v8di) __A - (__v8di) __B);
745}
746
Michael Kupersteine45af542015-06-30 13:36:19 +0000747static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000748_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
749{
750 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
751 (__v8di) __B,
752 (__v8di) __W,
753 (__mmask8) __U);
754}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000757_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
758{
759 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
760 (__v8di) __B,
761 (__v8di)
762 _mm512_setzero_si512 (),
763 (__mmask8) __U);
764}
765
Michael Kupersteine45af542015-06-30 13:36:19 +0000766static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000767_mm512_add_epi32 (__m512i __A, __m512i __B)
768{
769 return (__m512i) ((__v16si) __A + (__v16si) __B);
770}
771
Michael Kupersteine45af542015-06-30 13:36:19 +0000772static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000773_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
774{
775 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
776 (__v16si) __B,
777 (__v16si) __W,
778 (__mmask16) __U);
779}
780
Michael Kupersteine45af542015-06-30 13:36:19 +0000781static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000782_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
783{
784 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
785 (__v16si) __B,
786 (__v16si)
787 _mm512_setzero_si512 (),
788 (__mmask16) __U);
789}
790
Michael Kupersteine45af542015-06-30 13:36:19 +0000791static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000792_mm512_sub_epi32 (__m512i __A, __m512i __B)
793{
794 return (__m512i) ((__v16si) __A - (__v16si) __B);
795}
796
Michael Kupersteine45af542015-06-30 13:36:19 +0000797static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000798_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
799{
800 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
801 (__v16si) __B,
802 (__v16si) __W,
803 (__mmask16) __U);
804}
805
Michael Kupersteine45af542015-06-30 13:36:19 +0000806static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000807_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
808{
809 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
810 (__v16si) __B,
811 (__v16si)
812 _mm512_setzero_si512 (),
813 (__mmask16) __U);
814}
815
Michael Kupersteine45af542015-06-30 13:36:19 +0000816static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000817_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000818{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000819 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
820 (__v8df) __B,
821 (__v8df)
822 _mm512_setzero_pd (),
823 (__mmask8) -1,
824 _MM_FROUND_CUR_DIRECTION);
825}
826
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000827static __inline__ __m512d __DEFAULT_FN_ATTRS
828_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
829{
830 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
831 (__v8df) __B,
832 (__v8df) __W,
833 (__mmask8) __U,
834 _MM_FROUND_CUR_DIRECTION);
835}
836
837static __inline__ __m512d __DEFAULT_FN_ATTRS
838_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
839{
840 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
841 (__v8df) __B,
842 (__v8df)
843 _mm512_setzero_pd (),
844 (__mmask8) __U,
845 _MM_FROUND_CUR_DIRECTION);
846}
847
Michael Kupersteine45af542015-06-30 13:36:19 +0000848static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000849_mm512_max_ps(__m512 __A, __m512 __B)
850{
851 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
852 (__v16sf) __B,
853 (__v16sf)
854 _mm512_setzero_ps (),
855 (__mmask16) -1,
856 _MM_FROUND_CUR_DIRECTION);
857}
858
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000859static __inline__ __m512 __DEFAULT_FN_ATTRS
860_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
861{
862 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
863 (__v16sf) __B,
864 (__v16sf) __W,
865 (__mmask16) __U,
866 _MM_FROUND_CUR_DIRECTION);
867}
868
869static __inline__ __m512 __DEFAULT_FN_ATTRS
870_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
871{
872 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
873 (__v16sf) __B,
874 (__v16sf)
875 _mm512_setzero_ps (),
876 (__mmask16) __U,
877 _MM_FROUND_CUR_DIRECTION);
878}
879
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000880static __inline__ __m128 __DEFAULT_FN_ATTRS
881_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000882 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000883 (__v4sf) __B,
884 (__v4sf) __W,
885 (__mmask8) __U,
886 _MM_FROUND_CUR_DIRECTION);
887}
888
889static __inline__ __m128 __DEFAULT_FN_ATTRS
890_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000891 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000892 (__v4sf) __B,
893 (__v4sf) _mm_setzero_ps (),
894 (__mmask8) __U,
895 _MM_FROUND_CUR_DIRECTION);
896}
897
Craig Topper8c18e112016-05-17 04:41:50 +0000898#define _mm_max_round_ss(A, B, R) __extension__ ({ \
899 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
900 (__v4sf)(__m128)(B), \
901 (__v4sf)_mm_setzero_ps(), \
902 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000903
Craig Topper8c18e112016-05-17 04:41:50 +0000904#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
905 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
906 (__v4sf)(__m128)(B), \
907 (__v4sf)(__m128)(W), (__mmask8)(U), \
908 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000909
Craig Topper8c18e112016-05-17 04:41:50 +0000910#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
911 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
912 (__v4sf)(__m128)(B), \
913 (__v4sf)_mm_setzero_ps(), \
914 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000915
916static __inline__ __m128d __DEFAULT_FN_ATTRS
917_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000918 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000919 (__v2df) __B,
920 (__v2df) __W,
921 (__mmask8) __U,
922 _MM_FROUND_CUR_DIRECTION);
923}
924
925static __inline__ __m128d __DEFAULT_FN_ATTRS
926_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000927 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000928 (__v2df) __B,
929 (__v2df) _mm_setzero_pd (),
930 (__mmask8) __U,
931 _MM_FROUND_CUR_DIRECTION);
932}
933
Craig Topper8c18e112016-05-17 04:41:50 +0000934#define _mm_max_round_sd(A, B, R) __extension__ ({ \
935 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
936 (__v2df)(__m128d)(B), \
937 (__v2df)_mm_setzero_pd(), \
938 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000939
Craig Topper8c18e112016-05-17 04:41:50 +0000940#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
941 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
942 (__v2df)(__m128d)(B), \
943 (__v2df)(__m128d)(W), \
944 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000945
Craig Topper8c18e112016-05-17 04:41:50 +0000946#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
947 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
948 (__v2df)(__m128d)(B), \
949 (__v2df)_mm_setzero_pd(), \
950 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000951
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +0000952static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000953__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000954_mm512_max_epi32(__m512i __A, __m512i __B)
955{
956 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
957 (__v16si) __B,
958 (__v16si)
959 _mm512_setzero_si512 (),
960 (__mmask16) -1);
961}
962
Michael Zuckermande860e52016-05-10 11:34:19 +0000963static __inline__ __m512i __DEFAULT_FN_ATTRS
964_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
965{
966 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
967 (__v16si) __B,
968 (__v16si) __W, __M);
969}
970
971static __inline__ __m512i __DEFAULT_FN_ATTRS
972_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
973{
974 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
975 (__v16si) __B,
976 (__v16si)
977 _mm512_setzero_si512 (),
978 __M);
979}
980
Michael Kupersteine45af542015-06-30 13:36:19 +0000981static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000982_mm512_max_epu32(__m512i __A, __m512i __B)
983{
984 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
985 (__v16si) __B,
986 (__v16si)
987 _mm512_setzero_si512 (),
988 (__mmask16) -1);
989}
990
Michael Zuckermande860e52016-05-10 11:34:19 +0000991static __inline__ __m512i __DEFAULT_FN_ATTRS
992_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
993{
994 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
995 (__v16si) __B,
996 (__v16si) __W, __M);
997}
998
999static __inline__ __m512i __DEFAULT_FN_ATTRS
1000_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1001{
1002 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1003 (__v16si) __B,
1004 (__v16si)
1005 _mm512_setzero_si512 (),
1006 __M);
1007}
1008
Michael Kupersteine45af542015-06-30 13:36:19 +00001009static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001010_mm512_max_epi64(__m512i __A, __m512i __B)
1011{
1012 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1013 (__v8di) __B,
1014 (__v8di)
1015 _mm512_setzero_si512 (),
1016 (__mmask8) -1);
1017}
1018
Michael Zuckermande860e52016-05-10 11:34:19 +00001019static __inline__ __m512i __DEFAULT_FN_ATTRS
1020_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1021{
1022 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1023 (__v8di) __B,
1024 (__v8di) __W, __M);
1025}
1026
1027static __inline__ __m512i __DEFAULT_FN_ATTRS
1028_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1029{
1030 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1031 (__v8di) __B,
1032 (__v8di)
1033 _mm512_setzero_si512 (),
1034 __M);
1035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001038_mm512_max_epu64(__m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1041 (__v8di) __B,
1042 (__v8di)
1043 _mm512_setzero_si512 (),
1044 (__mmask8) -1);
1045}
1046
Michael Zuckermande860e52016-05-10 11:34:19 +00001047static __inline__ __m512i __DEFAULT_FN_ATTRS
1048_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1049{
1050 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1051 (__v8di) __B,
1052 (__v8di) __W, __M);
1053}
1054
1055static __inline__ __m512i __DEFAULT_FN_ATTRS
1056_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1057{
1058 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1059 (__v8di) __B,
1060 (__v8di)
1061 _mm512_setzero_si512 (),
1062 __M);
1063}
1064
Michael Kupersteine45af542015-06-30 13:36:19 +00001065static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001066_mm512_min_pd(__m512d __A, __m512d __B)
1067{
1068 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1069 (__v8df) __B,
1070 (__v8df)
1071 _mm512_setzero_pd (),
1072 (__mmask8) -1,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001076static __inline__ __m512d __DEFAULT_FN_ATTRS
1077_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1078{
1079 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1080 (__v8df) __B,
1081 (__v8df) __W,
1082 (__mmask8) __U,
1083 _MM_FROUND_CUR_DIRECTION);
1084}
1085
1086static __inline__ __m512d __DEFAULT_FN_ATTRS
1087_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1088{
1089 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1090 (__v8df) __B,
1091 (__v8df)
1092 _mm512_setzero_pd (),
1093 (__mmask8) __U,
1094 _MM_FROUND_CUR_DIRECTION);
1095}
1096
Michael Kupersteine45af542015-06-30 13:36:19 +00001097static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001098_mm512_min_ps(__m512 __A, __m512 __B)
1099{
1100 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1101 (__v16sf) __B,
1102 (__v16sf)
1103 _mm512_setzero_ps (),
1104 (__mmask16) -1,
1105 _MM_FROUND_CUR_DIRECTION);
1106}
1107
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001108static __inline__ __m512 __DEFAULT_FN_ATTRS
1109_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1110{
1111 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1112 (__v16sf) __B,
1113 (__v16sf) __W,
1114 (__mmask16) __U,
1115 _MM_FROUND_CUR_DIRECTION);
1116}
1117
1118static __inline__ __m512 __DEFAULT_FN_ATTRS
1119_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1120{
1121 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1122 (__v16sf) __B,
1123 (__v16sf)
1124 _mm512_setzero_ps (),
1125 (__mmask16) __U,
1126 _MM_FROUND_CUR_DIRECTION);
1127}
1128
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001129static __inline__ __m128 __DEFAULT_FN_ATTRS
1130_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001131 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001132 (__v4sf) __B,
1133 (__v4sf) __W,
1134 (__mmask8) __U,
1135 _MM_FROUND_CUR_DIRECTION);
1136}
1137
1138static __inline__ __m128 __DEFAULT_FN_ATTRS
1139_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001140 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001141 (__v4sf) __B,
1142 (__v4sf) _mm_setzero_ps (),
1143 (__mmask8) __U,
1144 _MM_FROUND_CUR_DIRECTION);
1145}
1146
Craig Topper8c18e112016-05-17 04:41:50 +00001147#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1148 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1149 (__v4sf)(__m128)(B), \
1150 (__v4sf)_mm_setzero_ps(), \
1151 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001152
Craig Topper8c18e112016-05-17 04:41:50 +00001153#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1154 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1155 (__v4sf)(__m128)(B), \
1156 (__v4sf)(__m128)(W), (__mmask8)(U), \
1157 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158
Craig Topper8c18e112016-05-17 04:41:50 +00001159#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1160 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1161 (__v4sf)(__m128)(B), \
1162 (__v4sf)_mm_setzero_ps(), \
1163 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001164
1165static __inline__ __m128d __DEFAULT_FN_ATTRS
1166_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001167 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001168 (__v2df) __B,
1169 (__v2df) __W,
1170 (__mmask8) __U,
1171 _MM_FROUND_CUR_DIRECTION);
1172}
1173
1174static __inline__ __m128d __DEFAULT_FN_ATTRS
1175_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001176 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001177 (__v2df) __B,
1178 (__v2df) _mm_setzero_pd (),
1179 (__mmask8) __U,
1180 _MM_FROUND_CUR_DIRECTION);
1181}
1182
Craig Topper8c18e112016-05-17 04:41:50 +00001183#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1184 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1185 (__v2df)(__m128d)(B), \
1186 (__v2df)_mm_setzero_pd(), \
1187 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001188
Craig Topper8c18e112016-05-17 04:41:50 +00001189#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1190 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1191 (__v2df)(__m128d)(B), \
1192 (__v2df)(__m128d)(W), \
1193 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001194
Craig Topper8c18e112016-05-17 04:41:50 +00001195#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1196 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1197 (__v2df)(__m128d)(B), \
1198 (__v2df)_mm_setzero_pd(), \
1199 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001200
Adam Nemet0d5bb552014-07-28 17:14:40 +00001201static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001202__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001203_mm512_min_epi32(__m512i __A, __m512i __B)
1204{
1205 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1206 (__v16si) __B,
1207 (__v16si)
1208 _mm512_setzero_si512 (),
1209 (__mmask16) -1);
1210}
1211
Michael Zuckermande860e52016-05-10 11:34:19 +00001212static __inline__ __m512i __DEFAULT_FN_ATTRS
1213_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1214{
1215 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1216 (__v16si) __B,
1217 (__v16si) __W, __M);
1218}
1219
1220static __inline__ __m512i __DEFAULT_FN_ATTRS
1221_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1222{
1223 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1224 (__v16si) __B,
1225 (__v16si)
1226 _mm512_setzero_si512 (),
1227 __M);
1228}
1229
Michael Kupersteine45af542015-06-30 13:36:19 +00001230static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001231_mm512_min_epu32(__m512i __A, __m512i __B)
1232{
1233 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1234 (__v16si) __B,
1235 (__v16si)
1236 _mm512_setzero_si512 (),
1237 (__mmask16) -1);
1238}
1239
Michael Zuckermande860e52016-05-10 11:34:19 +00001240static __inline__ __m512i __DEFAULT_FN_ATTRS
1241_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1242{
1243 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1244 (__v16si) __B,
1245 (__v16si) __W, __M);
1246}
1247
1248static __inline__ __m512i __DEFAULT_FN_ATTRS
1249_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1250{
1251 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1252 (__v16si) __B,
1253 (__v16si)
1254 _mm512_setzero_si512 (),
1255 __M);
1256}
1257
Michael Kupersteine45af542015-06-30 13:36:19 +00001258static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001259_mm512_min_epi64(__m512i __A, __m512i __B)
1260{
1261 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1262 (__v8di) __B,
1263 (__v8di)
1264 _mm512_setzero_si512 (),
1265 (__mmask8) -1);
1266}
1267
Michael Zuckermande860e52016-05-10 11:34:19 +00001268static __inline__ __m512i __DEFAULT_FN_ATTRS
1269_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1270{
1271 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1272 (__v8di) __B,
1273 (__v8di) __W, __M);
1274}
1275
1276static __inline__ __m512i __DEFAULT_FN_ATTRS
1277_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1278{
1279 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1280 (__v8di) __B,
1281 (__v8di)
1282 _mm512_setzero_si512 (),
1283 __M);
1284}
1285
Michael Kupersteine45af542015-06-30 13:36:19 +00001286static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001287_mm512_min_epu64(__m512i __A, __m512i __B)
1288{
1289 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1290 (__v8di) __B,
1291 (__v8di)
1292 _mm512_setzero_si512 (),
1293 (__mmask8) -1);
1294}
1295
Michael Zuckermande860e52016-05-10 11:34:19 +00001296static __inline__ __m512i __DEFAULT_FN_ATTRS
1297_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1298{
1299 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1300 (__v8di) __B,
1301 (__v8di) __W, __M);
1302}
1303
1304static __inline__ __m512i __DEFAULT_FN_ATTRS
1305_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1306{
1307 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1308 (__v8di) __B,
1309 (__v8di)
1310 _mm512_setzero_si512 (),
1311 __M);
1312}
1313
Michael Kupersteine45af542015-06-30 13:36:19 +00001314static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001315_mm512_mul_epi32(__m512i __X, __m512i __Y)
1316{
1317 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1318 (__v16si) __Y,
1319 (__v8di)
1320 _mm512_setzero_si512 (),
1321 (__mmask8) -1);
1322}
1323
Michael Kupersteine45af542015-06-30 13:36:19 +00001324static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001325_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1326{
1327 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1328 (__v16si) __Y,
1329 (__v8di) __W, __M);
1330}
1331
Michael Kupersteine45af542015-06-30 13:36:19 +00001332static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001333_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1334{
1335 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1336 (__v16si) __Y,
1337 (__v8di)
1338 _mm512_setzero_si512 (),
1339 __M);
1340}
1341
Michael Kupersteine45af542015-06-30 13:36:19 +00001342static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001343_mm512_mul_epu32(__m512i __X, __m512i __Y)
1344{
1345 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1346 (__v16si) __Y,
1347 (__v8di)
1348 _mm512_setzero_si512 (),
1349 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001350}
1351
Michael Kupersteine45af542015-06-30 13:36:19 +00001352static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001353_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1354{
1355 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1356 (__v16si) __Y,
1357 (__v8di) __W, __M);
1358}
1359
Michael Kupersteine45af542015-06-30 13:36:19 +00001360static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001361_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1362{
1363 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1364 (__v16si) __Y,
1365 (__v8di)
1366 _mm512_setzero_si512 (),
1367 __M);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001371_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1372{
1373 return (__m512i) ((__v16si) __A * (__v16si) __B);
1374}
1375
Michael Kupersteine45af542015-06-30 13:36:19 +00001376static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001377_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1378{
1379 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1380 (__v16si) __B,
1381 (__v16si)
1382 _mm512_setzero_si512 (),
1383 __M);
1384}
1385
Michael Kupersteine45af542015-06-30 13:36:19 +00001386static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001387_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1388{
1389 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1390 (__v16si) __B,
1391 (__v16si) __W, __M);
1392}
1393
Michael Kupersteine45af542015-06-30 13:36:19 +00001394static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001395_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001396{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001397 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001398 (__v8df) _mm512_setzero_pd (),
1399 (__mmask8) -1,
1400 _MM_FROUND_CUR_DIRECTION);
1401}
1402
Michael Zuckermancb856772016-05-16 11:42:01 +00001403static __inline__ __m512d __DEFAULT_FN_ATTRS
1404_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1405{
1406 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1407 (__v8df) __W,
1408 (__mmask8) __U,
1409 _MM_FROUND_CUR_DIRECTION);
1410}
1411
1412static __inline__ __m512d __DEFAULT_FN_ATTRS
1413_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1414{
1415 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1416 (__v8df)
1417 _mm512_setzero_pd (),
1418 (__mmask8) __U,
1419 _MM_FROUND_CUR_DIRECTION);
1420}
1421
Michael Kupersteine45af542015-06-30 13:36:19 +00001422static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001423_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001424{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001425 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001426 (__v16sf) _mm512_setzero_ps (),
1427 (__mmask16) -1,
1428 _MM_FROUND_CUR_DIRECTION);
1429}
1430
Michael Zuckermancb856772016-05-16 11:42:01 +00001431static __inline__ __m512 __DEFAULT_FN_ATTRS
1432_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1433{
1434 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1435 (__v16sf) __W,
1436 (__mmask16) __U,
1437 _MM_FROUND_CUR_DIRECTION);
1438}
1439
1440static __inline__ __m512 __DEFAULT_FN_ATTRS
1441_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1442{
1443 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1444 (__v16sf) _mm512_setzero_ps (),
1445 (__mmask16) __U,
1446 _MM_FROUND_CUR_DIRECTION);
1447}
1448
Michael Kupersteine45af542015-06-30 13:36:19 +00001449static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001450_mm512_rsqrt14_pd(__m512d __A)
1451{
1452 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1453 (__v8df)
1454 _mm512_setzero_pd (),
1455 (__mmask8) -1);}
1456
Michael Zuckermancb856772016-05-16 11:42:01 +00001457static __inline__ __m512d __DEFAULT_FN_ATTRS
1458_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1459{
1460 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1461 (__v8df) __W,
1462 (__mmask8) __U);
1463}
1464
1465static __inline__ __m512d __DEFAULT_FN_ATTRS
1466_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1467{
1468 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1469 (__v8df)
1470 _mm512_setzero_pd (),
1471 (__mmask8) __U);
1472}
1473
Michael Kupersteine45af542015-06-30 13:36:19 +00001474static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001475_mm512_rsqrt14_ps(__m512 __A)
1476{
1477 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1478 (__v16sf)
1479 _mm512_setzero_ps (),
1480 (__mmask16) -1);
1481}
1482
Michael Zuckermancb856772016-05-16 11:42:01 +00001483static __inline__ __m512 __DEFAULT_FN_ATTRS
1484_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1485{
1486 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1487 (__v16sf) __W,
1488 (__mmask16) __U);
1489}
1490
1491static __inline__ __m512 __DEFAULT_FN_ATTRS
1492_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1493{
1494 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1495 (__v16sf)
1496 _mm512_setzero_ps (),
1497 (__mmask16) __U);
1498}
1499
Michael Kupersteine45af542015-06-30 13:36:19 +00001500static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001501_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1502{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001503 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001504 (__v4sf) __B,
1505 (__v4sf)
1506 _mm_setzero_ps (),
1507 (__mmask8) -1);
1508}
1509
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001510static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001511_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001512{
1513 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1514 (__v4sf) __B,
1515 (__v4sf) __W,
1516 (__mmask8) __U);
1517}
1518
1519static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001520_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001521{
1522 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1523 (__v4sf) __B,
1524 (__v4sf) _mm_setzero_ps (),
1525 (__mmask8) __U);
1526}
1527
Michael Kupersteine45af542015-06-30 13:36:19 +00001528static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001529_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1530{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001531 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001532 (__v2df) __B,
1533 (__v2df)
1534 _mm_setzero_pd (),
1535 (__mmask8) -1);
1536}
1537
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001538static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001539_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001540{
1541 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1542 (__v2df) __B,
1543 (__v2df) __W,
1544 (__mmask8) __U);
1545}
1546
1547static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001548_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001549{
1550 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1551 (__v2df) __B,
1552 (__v2df) _mm_setzero_pd (),
1553 (__mmask8) __U);
1554}
1555
Michael Kupersteine45af542015-06-30 13:36:19 +00001556static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001557_mm512_rcp14_pd(__m512d __A)
1558{
1559 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1560 (__v8df)
1561 _mm512_setzero_pd (),
1562 (__mmask8) -1);
1563}
1564
Michael Zuckermancb856772016-05-16 11:42:01 +00001565static __inline__ __m512d __DEFAULT_FN_ATTRS
1566_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1567{
1568 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1569 (__v8df) __W,
1570 (__mmask8) __U);
1571}
1572
1573static __inline__ __m512d __DEFAULT_FN_ATTRS
1574_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1575{
1576 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1577 (__v8df)
1578 _mm512_setzero_pd (),
1579 (__mmask8) __U);
1580}
1581
Michael Kupersteine45af542015-06-30 13:36:19 +00001582static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001583_mm512_rcp14_ps(__m512 __A)
1584{
1585 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1586 (__v16sf)
1587 _mm512_setzero_ps (),
1588 (__mmask16) -1);
1589}
Michael Zuckermancb856772016-05-16 11:42:01 +00001590
1591static __inline__ __m512 __DEFAULT_FN_ATTRS
1592_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1593{
1594 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1595 (__v16sf) __W,
1596 (__mmask16) __U);
1597}
1598
1599static __inline__ __m512 __DEFAULT_FN_ATTRS
1600_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1601{
1602 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1603 (__v16sf)
1604 _mm512_setzero_ps (),
1605 (__mmask16) __U);
1606}
1607
Michael Kupersteine45af542015-06-30 13:36:19 +00001608static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001609_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001610{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001611 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001612 (__v4sf) __B,
1613 (__v4sf)
1614 _mm_setzero_ps (),
1615 (__mmask8) -1);
1616}
1617
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001618static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001619_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001620{
1621 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1622 (__v4sf) __B,
1623 (__v4sf) __W,
1624 (__mmask8) __U);
1625}
1626
1627static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001628_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001629{
1630 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1631 (__v4sf) __B,
1632 (__v4sf) _mm_setzero_ps (),
1633 (__mmask8) __U);
1634}
1635
Michael Kupersteine45af542015-06-30 13:36:19 +00001636static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001637_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001638{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001639 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001640 (__v2df) __B,
1641 (__v2df)
1642 _mm_setzero_pd (),
1643 (__mmask8) -1);
1644}
1645
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001646static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001647_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001648{
1649 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1650 (__v2df) __B,
1651 (__v2df) __W,
1652 (__mmask8) __U);
1653}
1654
1655static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001656_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001657{
1658 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1659 (__v2df) __B,
1660 (__v2df) _mm_setzero_pd (),
1661 (__mmask8) __U);
1662}
1663
Michael Kupersteine45af542015-06-30 13:36:19 +00001664static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001665_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001666{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001667 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1668 _MM_FROUND_FLOOR,
1669 (__v16sf) __A, -1,
1670 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001671}
1672
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001673static __inline__ __m512 __DEFAULT_FN_ATTRS
1674_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1675{
1676 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1677 _MM_FROUND_FLOOR,
1678 (__v16sf) __W, __U,
1679 _MM_FROUND_CUR_DIRECTION);
1680}
1681
1682
Michael Kupersteine45af542015-06-30 13:36:19 +00001683static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001684_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001685{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001686 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1687 _MM_FROUND_FLOOR,
1688 (__v8df) __A, -1,
1689 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001690}
1691
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001692static __inline__ __m512d __DEFAULT_FN_ATTRS
1693_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1694{
1695 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1696 _MM_FROUND_FLOOR,
1697 (__v8df) __W, __U,
1698 _MM_FROUND_CUR_DIRECTION);
1699}
1700
1701
1702static __inline__ __m512 __DEFAULT_FN_ATTRS
1703_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1704{
1705 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1706 _MM_FROUND_CEIL,
1707 (__v16sf) __W, __U,
1708 _MM_FROUND_CUR_DIRECTION);
1709}
1710
Michael Kupersteine45af542015-06-30 13:36:19 +00001711static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001712_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001713{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001714 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1715 _MM_FROUND_CEIL,
1716 (__v16sf) __A, -1,
1717 _MM_FROUND_CUR_DIRECTION);
1718}
1719
Michael Kupersteine45af542015-06-30 13:36:19 +00001720static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001721_mm512_ceil_pd(__m512d __A)
1722{
1723 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1724 _MM_FROUND_CEIL,
1725 (__v8df) __A, -1,
1726 _MM_FROUND_CUR_DIRECTION);
1727}
1728
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001729static __inline__ __m512d __DEFAULT_FN_ATTRS
1730_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1731{
1732 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1733 _MM_FROUND_CEIL,
1734 (__v8df) __W, __U,
1735 _MM_FROUND_CUR_DIRECTION);
1736}
1737
Michael Kupersteine45af542015-06-30 13:36:19 +00001738static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001739_mm512_abs_epi64(__m512i __A)
1740{
1741 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1742 (__v8di)
1743 _mm512_setzero_si512 (),
1744 (__mmask8) -1);
1745}
1746
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001747static __inline__ __m512i __DEFAULT_FN_ATTRS
1748_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1749{
1750 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1751 (__v8di) __W,
1752 (__mmask8) __U);
1753}
1754
1755static __inline__ __m512i __DEFAULT_FN_ATTRS
1756_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1757{
1758 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1759 (__v8di)
1760 _mm512_setzero_si512 (),
1761 (__mmask8) __U);
1762}
1763
Michael Kupersteine45af542015-06-30 13:36:19 +00001764static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001765_mm512_abs_epi32(__m512i __A)
1766{
1767 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1768 (__v16si)
1769 _mm512_setzero_si512 (),
1770 (__mmask16) -1);
1771}
1772
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001773static __inline__ __m512i __DEFAULT_FN_ATTRS
1774_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1775{
1776 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1777 (__v16si) __W,
1778 (__mmask16) __U);
1779}
1780
1781static __inline__ __m512i __DEFAULT_FN_ATTRS
1782_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1783{
1784 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1785 (__v16si)
1786 _mm512_setzero_si512 (),
1787 (__mmask16) __U);
1788}
1789
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001790static __inline__ __m128 __DEFAULT_FN_ATTRS
1791_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001792 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001793 (__v4sf) __B,
1794 (__v4sf) __W,
1795 (__mmask8) __U,
1796 _MM_FROUND_CUR_DIRECTION);
1797}
1798
1799static __inline__ __m128 __DEFAULT_FN_ATTRS
1800_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001801 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001802 (__v4sf) __B,
1803 (__v4sf) _mm_setzero_ps (),
1804 (__mmask8) __U,
1805 _MM_FROUND_CUR_DIRECTION);
1806}
1807
Craig Topper8c18e112016-05-17 04:41:50 +00001808#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1809 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1810 (__v4sf)(__m128)(B), \
1811 (__v4sf)_mm_setzero_ps(), \
1812 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001813
Craig Topper8c18e112016-05-17 04:41:50 +00001814#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1815 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1816 (__v4sf)(__m128)(B), \
1817 (__v4sf)(__m128)(W), (__mmask8)(U), \
1818 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001819
Craig Topper8c18e112016-05-17 04:41:50 +00001820#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1821 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1822 (__v4sf)(__m128)(B), \
1823 (__v4sf)_mm_setzero_ps(), \
1824 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001825
1826static __inline__ __m128d __DEFAULT_FN_ATTRS
1827_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001828 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001829 (__v2df) __B,
1830 (__v2df) __W,
1831 (__mmask8) __U,
1832 _MM_FROUND_CUR_DIRECTION);
1833}
1834
1835static __inline__ __m128d __DEFAULT_FN_ATTRS
1836_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001837 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001838 (__v2df) __B,
1839 (__v2df) _mm_setzero_pd (),
1840 (__mmask8) __U,
1841 _MM_FROUND_CUR_DIRECTION);
1842}
Craig Topper8c18e112016-05-17 04:41:50 +00001843#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1844 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1845 (__v2df)(__m128d)(B), \
1846 (__v2df)_mm_setzero_pd(), \
1847 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001848
Craig Topper8c18e112016-05-17 04:41:50 +00001849#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1850 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1851 (__v2df)(__m128d)(B), \
1852 (__v2df)(__m128d)(W), \
1853 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001854
Craig Topper8c18e112016-05-17 04:41:50 +00001855#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1856 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1857 (__v2df)(__m128d)(B), \
1858 (__v2df)_mm_setzero_pd(), \
1859 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001860
Asaf Badouhffeb6242015-07-21 15:27:28 +00001861static __inline__ __m512d __DEFAULT_FN_ATTRS
1862_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1863 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1864 (__v8df) __B,
1865 (__v8df) __W,
1866 (__mmask8) __U,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
1870static __inline__ __m512d __DEFAULT_FN_ATTRS
1871_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1872 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1873 (__v8df) __B,
1874 (__v8df) _mm512_setzero_pd (),
1875 (__mmask8) __U,
1876 _MM_FROUND_CUR_DIRECTION);
1877}
1878
1879static __inline__ __m512 __DEFAULT_FN_ATTRS
1880_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1881 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1882 (__v16sf) __B,
1883 (__v16sf) __W,
1884 (__mmask16) __U,
1885 _MM_FROUND_CUR_DIRECTION);
1886}
1887
1888static __inline__ __m512 __DEFAULT_FN_ATTRS
1889_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1890 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1891 (__v16sf) __B,
1892 (__v16sf) _mm512_setzero_ps (),
1893 (__mmask16) __U,
1894 _MM_FROUND_CUR_DIRECTION);
1895}
1896
Craig Topper8c18e112016-05-17 04:41:50 +00001897#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1898 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1899 (__v8df)(__m512d)(B), \
1900 (__v8df)_mm512_setzero_pd(), \
1901 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001902
Craig Topper8c18e112016-05-17 04:41:50 +00001903#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1904 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1905 (__v8df)(__m512d)(B), \
1906 (__v8df)(__m512d)(W), (__mmask8)(U), \
1907 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001908
Craig Topper8c18e112016-05-17 04:41:50 +00001909#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1910 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1911 (__v8df)(__m512d)(B), \
1912 (__v8df)_mm512_setzero_pd(), \
1913 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001914
Craig Topper8c18e112016-05-17 04:41:50 +00001915#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1916 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1917 (__v16sf)(__m512)(B), \
1918 (__v16sf)_mm512_setzero_ps(), \
1919 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001920
Craig Topper8c18e112016-05-17 04:41:50 +00001921#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1922 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1923 (__v16sf)(__m512)(B), \
1924 (__v16sf)(__m512)(W), (__mmask16)(U), \
1925 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001926
Craig Topper8c18e112016-05-17 04:41:50 +00001927#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1928 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1929 (__v16sf)(__m512)(B), \
1930 (__v16sf)_mm512_setzero_ps(), \
1931 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001932
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001933static __inline__ __m128 __DEFAULT_FN_ATTRS
1934_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001935 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001936 (__v4sf) __B,
1937 (__v4sf) __W,
1938 (__mmask8) __U,
1939 _MM_FROUND_CUR_DIRECTION);
1940}
1941
1942static __inline__ __m128 __DEFAULT_FN_ATTRS
1943_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001944 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001945 (__v4sf) __B,
1946 (__v4sf) _mm_setzero_ps (),
1947 (__mmask8) __U,
1948 _MM_FROUND_CUR_DIRECTION);
1949}
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)_mm_setzero_ps(), \
1954 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
Craig Topper8c18e112016-05-17 04:41:50 +00001956#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1957 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1958 (__v4sf)(__m128)(B), \
1959 (__v4sf)(__m128)(W), (__mmask8)(U), \
1960 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001961
Craig Topper8c18e112016-05-17 04:41:50 +00001962#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1963 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1964 (__v4sf)(__m128)(B), \
1965 (__v4sf)_mm_setzero_ps(), \
1966 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001967
1968static __inline__ __m128d __DEFAULT_FN_ATTRS
1969_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001970 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001971 (__v2df) __B,
1972 (__v2df) __W,
1973 (__mmask8) __U,
1974 _MM_FROUND_CUR_DIRECTION);
1975}
1976
1977static __inline__ __m128d __DEFAULT_FN_ATTRS
1978_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001979 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001980 (__v2df) __B,
1981 (__v2df) _mm_setzero_pd (),
1982 (__mmask8) __U,
1983 _MM_FROUND_CUR_DIRECTION);
1984}
1985
Craig Topper8c18e112016-05-17 04:41:50 +00001986#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1987 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1988 (__v2df)(__m128d)(B), \
1989 (__v2df)_mm_setzero_pd(), \
1990 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001991
Craig Topper8c18e112016-05-17 04:41:50 +00001992#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1993 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1994 (__v2df)(__m128d)(B), \
1995 (__v2df)(__m128d)(W), \
1996 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001997
Craig Topper8c18e112016-05-17 04:41:50 +00001998#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1999 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2000 (__v2df)(__m128d)(B), \
2001 (__v2df)_mm_setzero_pd(), \
2002 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002003
Asaf Badouhffeb6242015-07-21 15:27:28 +00002004static __inline__ __m512d __DEFAULT_FN_ATTRS
2005_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2006 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2007 (__v8df) __B,
2008 (__v8df) __W,
2009 (__mmask8) __U,
2010 _MM_FROUND_CUR_DIRECTION);
2011}
2012
2013static __inline__ __m512d __DEFAULT_FN_ATTRS
2014_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2015 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2016 (__v8df) __B,
2017 (__v8df)
2018 _mm512_setzero_pd (),
2019 (__mmask8) __U,
2020 _MM_FROUND_CUR_DIRECTION);
2021}
2022
2023static __inline__ __m512 __DEFAULT_FN_ATTRS
2024_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2025 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2026 (__v16sf) __B,
2027 (__v16sf) __W,
2028 (__mmask16) __U,
2029 _MM_FROUND_CUR_DIRECTION);
2030}
2031
2032static __inline__ __m512 __DEFAULT_FN_ATTRS
2033_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2034 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2035 (__v16sf) __B,
2036 (__v16sf)
2037 _mm512_setzero_ps (),
2038 (__mmask16) __U,
2039 _MM_FROUND_CUR_DIRECTION);
2040}
2041
Craig Topper8c18e112016-05-17 04:41:50 +00002042#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2043 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2044 (__v8df)(__m512d)(B), \
2045 (__v8df)_mm512_setzero_pd(), \
2046 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002047
Craig Topper8c18e112016-05-17 04:41:50 +00002048#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2049 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2050 (__v8df)(__m512d)(B), \
2051 (__v8df)(__m512d)(W), (__mmask8)(U), \
2052 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002053
Craig Topper8c18e112016-05-17 04:41:50 +00002054#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2055 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2056 (__v8df)(__m512d)(B), \
2057 (__v8df)_mm512_setzero_pd(), \
2058 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002059
Craig Topper8c18e112016-05-17 04:41:50 +00002060#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2061 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2062 (__v16sf)(__m512)(B), \
2063 (__v16sf)_mm512_setzero_ps(), \
2064 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002065
Craig Topper8c18e112016-05-17 04:41:50 +00002066#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2067 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2068 (__v16sf)(__m512)(B), \
2069 (__v16sf)(__m512)(W), (__mmask16)(U), \
2070 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002071
Craig Topper8c18e112016-05-17 04:41:50 +00002072#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2073 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2074 (__v16sf)(__m512)(B), \
2075 (__v16sf)_mm512_setzero_ps(), \
2076 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002077
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002078static __inline__ __m128 __DEFAULT_FN_ATTRS
2079_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002080 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002081 (__v4sf) __B,
2082 (__v4sf) __W,
2083 (__mmask8) __U,
2084 _MM_FROUND_CUR_DIRECTION);
2085}
2086
2087static __inline__ __m128 __DEFAULT_FN_ATTRS
2088_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002089 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002090 (__v4sf) __B,
2091 (__v4sf) _mm_setzero_ps (),
2092 (__mmask8) __U,
2093 _MM_FROUND_CUR_DIRECTION);
2094}
Craig Topper8c18e112016-05-17 04:41:50 +00002095#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2096 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2097 (__v4sf)(__m128)(B), \
2098 (__v4sf)_mm_setzero_ps(), \
2099 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002100
Craig Topper8c18e112016-05-17 04:41:50 +00002101#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2102 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2103 (__v4sf)(__m128)(B), \
2104 (__v4sf)(__m128)(W), (__mmask8)(U), \
2105 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002106
Craig Topper8c18e112016-05-17 04:41:50 +00002107#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2108 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2109 (__v4sf)(__m128)(B), \
2110 (__v4sf)_mm_setzero_ps(), \
2111 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002112
2113static __inline__ __m128d __DEFAULT_FN_ATTRS
2114_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002115 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002116 (__v2df) __B,
2117 (__v2df) __W,
2118 (__mmask8) __U,
2119 _MM_FROUND_CUR_DIRECTION);
2120}
2121
2122static __inline__ __m128d __DEFAULT_FN_ATTRS
2123_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002124 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002125 (__v2df) __B,
2126 (__v2df) _mm_setzero_pd (),
2127 (__mmask8) __U,
2128 _MM_FROUND_CUR_DIRECTION);
2129}
2130
Craig Topper8c18e112016-05-17 04:41:50 +00002131#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2132 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2133 (__v2df)(__m128d)(B), \
2134 (__v2df)_mm_setzero_pd(), \
2135 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002136
Craig Topper8c18e112016-05-17 04:41:50 +00002137#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2138 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2139 (__v2df)(__m128d)(B), \
2140 (__v2df)(__m128d)(W), \
2141 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002142
Craig Topper8c18e112016-05-17 04:41:50 +00002143#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2144 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2145 (__v2df)(__m128d)(B), \
2146 (__v2df)_mm_setzero_pd(), \
2147 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002148
Asaf Badouhffeb6242015-07-21 15:27:28 +00002149static __inline__ __m512d __DEFAULT_FN_ATTRS
2150_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2151 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2152 (__v8df) __B,
2153 (__v8df) __W,
2154 (__mmask8) __U,
2155 _MM_FROUND_CUR_DIRECTION);
2156}
2157
2158static __inline__ __m512d __DEFAULT_FN_ATTRS
2159_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2160 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2161 (__v8df) __B,
2162 (__v8df)
2163 _mm512_setzero_pd (),
2164 (__mmask8) __U,
2165 _MM_FROUND_CUR_DIRECTION);
2166}
2167
2168static __inline__ __m512 __DEFAULT_FN_ATTRS
2169_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2170 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2171 (__v16sf) __B,
2172 (__v16sf) __W,
2173 (__mmask16) __U,
2174 _MM_FROUND_CUR_DIRECTION);
2175}
2176
2177static __inline__ __m512 __DEFAULT_FN_ATTRS
2178_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2179 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2180 (__v16sf) __B,
2181 (__v16sf)
2182 _mm512_setzero_ps (),
2183 (__mmask16) __U,
2184 _MM_FROUND_CUR_DIRECTION);
2185}
2186
Craig Topper8c18e112016-05-17 04:41:50 +00002187#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2188 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2189 (__v8df)(__m512d)(B), \
2190 (__v8df)_mm512_setzero_pd(), \
2191 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002192
Craig Topper8c18e112016-05-17 04:41:50 +00002193#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2194 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2195 (__v8df)(__m512d)(B), \
2196 (__v8df)(__m512d)(W), (__mmask8)(U), \
2197 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002198
Craig Topper8c18e112016-05-17 04:41:50 +00002199#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2200 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2201 (__v8df)(__m512d)(B), \
2202 (__v8df)_mm512_setzero_pd(), \
2203 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002204
Craig Topper8c18e112016-05-17 04:41:50 +00002205#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2206 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2207 (__v16sf)(__m512)(B), \
2208 (__v16sf)_mm512_setzero_ps(), \
2209 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002210
Craig Topper8c18e112016-05-17 04:41:50 +00002211#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2212 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2213 (__v16sf)(__m512)(B), \
2214 (__v16sf)(__m512)(W), (__mmask16)(U), \
2215 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002216
Craig Topper8c18e112016-05-17 04:41:50 +00002217#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2218 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2219 (__v16sf)(__m512)(B), \
2220 (__v16sf)_mm512_setzero_ps(), \
2221 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002222
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002223static __inline__ __m128 __DEFAULT_FN_ATTRS
2224_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002225 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002226 (__v4sf) __B,
2227 (__v4sf) __W,
2228 (__mmask8) __U,
2229 _MM_FROUND_CUR_DIRECTION);
2230}
2231
2232static __inline__ __m128 __DEFAULT_FN_ATTRS
2233_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002234 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002235 (__v4sf) __B,
2236 (__v4sf) _mm_setzero_ps (),
2237 (__mmask8) __U,
2238 _MM_FROUND_CUR_DIRECTION);
2239}
2240
Craig Topper8c18e112016-05-17 04:41:50 +00002241#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2242 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2243 (__v4sf)(__m128)(B), \
2244 (__v4sf)_mm_setzero_ps(), \
2245 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246
Craig Topper8c18e112016-05-17 04:41:50 +00002247#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2248 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2249 (__v4sf)(__m128)(B), \
2250 (__v4sf)(__m128)(W), (__mmask8)(U), \
2251 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002252
Craig Topper8c18e112016-05-17 04:41:50 +00002253#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2254 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2255 (__v4sf)(__m128)(B), \
2256 (__v4sf)_mm_setzero_ps(), \
2257 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002258
2259static __inline__ __m128d __DEFAULT_FN_ATTRS
2260_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002261 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002262 (__v2df) __B,
2263 (__v2df) __W,
2264 (__mmask8) __U,
2265 _MM_FROUND_CUR_DIRECTION);
2266}
2267
2268static __inline__ __m128d __DEFAULT_FN_ATTRS
2269_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002270 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002271 (__v2df) __B,
2272 (__v2df) _mm_setzero_pd (),
2273 (__mmask8) __U,
2274 _MM_FROUND_CUR_DIRECTION);
2275}
2276
Craig Topper8c18e112016-05-17 04:41:50 +00002277#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2278 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2279 (__v2df)(__m128d)(B), \
2280 (__v2df)_mm_setzero_pd(), \
2281 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002282
Craig Topper8c18e112016-05-17 04:41:50 +00002283#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2284 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2285 (__v2df)(__m128d)(B), \
2286 (__v2df)(__m128d)(W), \
2287 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002288
Craig Topper8c18e112016-05-17 04:41:50 +00002289#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2290 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2291 (__v2df)(__m128d)(B), \
2292 (__v2df)_mm_setzero_pd(), \
2293 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002294
Asaf Badouhffeb6242015-07-21 15:27:28 +00002295static __inline__ __m512d __DEFAULT_FN_ATTRS
2296_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2297 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2298 (__v8df) __B,
2299 (__v8df) __W,
2300 (__mmask8) __U,
2301 _MM_FROUND_CUR_DIRECTION);
2302}
2303
2304static __inline__ __m512d __DEFAULT_FN_ATTRS
2305_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2306 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2307 (__v8df) __B,
2308 (__v8df)
2309 _mm512_setzero_pd (),
2310 (__mmask8) __U,
2311 _MM_FROUND_CUR_DIRECTION);
2312}
2313
2314static __inline__ __m512 __DEFAULT_FN_ATTRS
2315_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2316 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2317 (__v16sf) __B,
2318 (__v16sf) __W,
2319 (__mmask16) __U,
2320 _MM_FROUND_CUR_DIRECTION);
2321}
2322
2323static __inline__ __m512 __DEFAULT_FN_ATTRS
2324_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2325 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2326 (__v16sf) __B,
2327 (__v16sf)
2328 _mm512_setzero_ps (),
2329 (__mmask16) __U,
2330 _MM_FROUND_CUR_DIRECTION);
2331}
2332
Craig Topper8c18e112016-05-17 04:41:50 +00002333#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2334 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2335 (__v8df)(__m512d)(B), \
2336 (__v8df)_mm512_setzero_pd(), \
2337 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002338
Craig Topper8c18e112016-05-17 04:41:50 +00002339#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2340 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2341 (__v8df)(__m512d)(B), \
2342 (__v8df)(__m512d)(W), (__mmask8)(U), \
2343 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002344
Craig Topper8c18e112016-05-17 04:41:50 +00002345#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2346 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2347 (__v8df)(__m512d)(B), \
2348 (__v8df)_mm512_setzero_pd(), \
2349 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002350
Craig Topper8c18e112016-05-17 04:41:50 +00002351#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2352 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2353 (__v16sf)(__m512)(B), \
2354 (__v16sf)_mm512_setzero_ps(), \
2355 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002356
Craig Topper8c18e112016-05-17 04:41:50 +00002357#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2358 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2359 (__v16sf)(__m512)(B), \
2360 (__v16sf)(__m512)(W), (__mmask16)(U), \
2361 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002362
Craig Topper8c18e112016-05-17 04:41:50 +00002363#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2364 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2365 (__v16sf)(__m512)(B), \
2366 (__v16sf)_mm512_setzero_ps(), \
2367 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002368
Craig Topper72c7d512015-02-01 07:35:35 +00002369#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002370 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2371 (__v16sf)(__m512)(A), (__mmask16)-1, \
2372 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002373
Craig Topper8c18e112016-05-17 04:41:50 +00002374#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2375 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2376 (__v16sf)(__m512)(A), (__mmask16)(B), \
2377 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002378
Craig Topper8c18e112016-05-17 04:41:50 +00002379#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2380 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2381 (__v16sf)_mm512_setzero_ps(), \
2382 (__mmask16)(A), \
2383 _MM_FROUND_CUR_DIRECTION); })
2384
Craig Topper72c7d512015-02-01 07:35:35 +00002385#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002386 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2387 (__v8df)(__m512d)(A), (__mmask8)-1, \
2388 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002389
Craig Topper8c18e112016-05-17 04:41:50 +00002390#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2391 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2392 (__v8df)(__m512d)(A), (__mmask8)(B), \
2393 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002394
Craig Topper8c18e112016-05-17 04:41:50 +00002395#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2396 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2397 (__v8df)_mm512_setzero_pd(), \
2398 (__mmask8)(A), \
2399 _MM_FROUND_CUR_DIRECTION); })
2400
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002401#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002402 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2403 (__v8df)(__m512d)(B), \
2404 (__v8df)(__m512d)(C), (__mmask8)-1, \
2405 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002406
2407
2408#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002409 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2410 (__v8df)(__m512d)(B), \
2411 (__v8df)(__m512d)(C), \
2412 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002413
2414
2415#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002416 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2417 (__v8df)(__m512d)(B), \
2418 (__v8df)(__m512d)(C), \
2419 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002420
2421
2422#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002423 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2424 (__v8df)(__m512d)(B), \
2425 (__v8df)(__m512d)(C), \
2426 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002427
2428
2429#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002430 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2431 (__v8df)(__m512d)(B), \
2432 -(__v8df)(__m512d)(C), \
2433 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002434
2435
2436#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002437 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2438 (__v8df)(__m512d)(B), \
2439 -(__v8df)(__m512d)(C), \
2440 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002441
2442
2443#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002444 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2445 (__v8df)(__m512d)(B), \
2446 -(__v8df)(__m512d)(C), \
2447 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002448
2449
2450#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002451 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2452 (__v8df)(__m512d)(B), \
2453 (__v8df)(__m512d)(C), (__mmask8)-1, \
2454 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002455
2456
2457#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002458 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2459 (__v8df)(__m512d)(B), \
2460 (__v8df)(__m512d)(C), \
2461 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002462
2463
2464#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002465 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2466 (__v8df)(__m512d)(B), \
2467 (__v8df)(__m512d)(C), \
2468 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002469
2470
2471#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002472 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2473 (__v8df)(__m512d)(B), \
2474 -(__v8df)(__m512d)(C), \
2475 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002476
2477
2478#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002479 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2480 (__v8df)(__m512d)(B), \
2481 -(__v8df)(__m512d)(C), \
2482 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002483
2484
Michael Kupersteine45af542015-06-30 13:36:19 +00002485static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002486_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2487{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002488 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2489 (__v8df) __B,
2490 (__v8df) __C,
2491 (__mmask8) -1,
2492 _MM_FROUND_CUR_DIRECTION);
2493}
2494
Michael Kupersteine45af542015-06-30 13:36:19 +00002495static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002496_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2497{
2498 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2499 (__v8df) __B,
2500 (__v8df) __C,
2501 (__mmask8) __U,
2502 _MM_FROUND_CUR_DIRECTION);
2503}
2504
Michael Kupersteine45af542015-06-30 13:36:19 +00002505static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002506_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2507{
2508 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2509 (__v8df) __B,
2510 (__v8df) __C,
2511 (__mmask8) __U,
2512 _MM_FROUND_CUR_DIRECTION);
2513}
2514
Michael Kupersteine45af542015-06-30 13:36:19 +00002515static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002516_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2517{
2518 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2519 (__v8df) __B,
2520 (__v8df) __C,
2521 (__mmask8) __U,
2522 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002523}
2524
Michael Kupersteine45af542015-06-30 13:36:19 +00002525static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002526_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2527{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002528 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2529 (__v8df) __B,
2530 -(__v8df) __C,
2531 (__mmask8) -1,
2532 _MM_FROUND_CUR_DIRECTION);
2533}
2534
Michael Kupersteine45af542015-06-30 13:36:19 +00002535static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002536_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2537{
2538 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2539 (__v8df) __B,
2540 -(__v8df) __C,
2541 (__mmask8) __U,
2542 _MM_FROUND_CUR_DIRECTION);
2543}
2544
Michael Kupersteine45af542015-06-30 13:36:19 +00002545static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002546_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2547{
2548 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2549 (__v8df) __B,
2550 -(__v8df) __C,
2551 (__mmask8) __U,
2552 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002553}
2554
Michael Kupersteine45af542015-06-30 13:36:19 +00002555static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002556_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2557{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002558 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2559 (__v8df) __B,
2560 (__v8df) __C,
2561 (__mmask8) -1,
2562 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002563}
2564
Michael Kupersteine45af542015-06-30 13:36:19 +00002565static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002566_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2567{
2568 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2569 (__v8df) __B,
2570 (__v8df) __C,
2571 (__mmask8) __U,
2572 _MM_FROUND_CUR_DIRECTION);
2573}
2574
Michael Kupersteine45af542015-06-30 13:36:19 +00002575static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002576_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2577{
2578 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2579 (__v8df) __B,
2580 (__v8df) __C,
2581 (__mmask8) __U,
2582 _MM_FROUND_CUR_DIRECTION);
2583}
2584
Michael Kupersteine45af542015-06-30 13:36:19 +00002585static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002586_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2587{
2588 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2589 (__v8df) __B,
2590 -(__v8df) __C,
2591 (__mmask8) -1,
2592 _MM_FROUND_CUR_DIRECTION);
2593}
2594
Michael Kupersteine45af542015-06-30 13:36:19 +00002595static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002596_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2597{
2598 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2599 (__v8df) __B,
2600 -(__v8df) __C,
2601 (__mmask8) __U,
2602 _MM_FROUND_CUR_DIRECTION);
2603}
2604
2605#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002606 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2607 (__v16sf)(__m512)(B), \
2608 (__v16sf)(__m512)(C), (__mmask16)-1, \
2609 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002610
2611
2612#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002613 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2614 (__v16sf)(__m512)(B), \
2615 (__v16sf)(__m512)(C), \
2616 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002617
2618
2619#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002620 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2621 (__v16sf)(__m512)(B), \
2622 (__v16sf)(__m512)(C), \
2623 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002624
2625
2626#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002627 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2628 (__v16sf)(__m512)(B), \
2629 (__v16sf)(__m512)(C), \
2630 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002631
2632
2633#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002634 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2635 (__v16sf)(__m512)(B), \
2636 -(__v16sf)(__m512)(C), \
2637 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002638
2639
2640#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002641 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2642 (__v16sf)(__m512)(B), \
2643 -(__v16sf)(__m512)(C), \
2644 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002645
2646
2647#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002648 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2649 (__v16sf)(__m512)(B), \
2650 -(__v16sf)(__m512)(C), \
2651 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002652
2653
2654#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002655 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2656 (__v16sf)(__m512)(B), \
2657 (__v16sf)(__m512)(C), (__mmask16)-1, \
2658 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002659
2660
2661#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002662 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2663 (__v16sf)(__m512)(B), \
2664 (__v16sf)(__m512)(C), \
2665 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002666
2667
2668#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002669 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2670 (__v16sf)(__m512)(B), \
2671 (__v16sf)(__m512)(C), \
2672 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002673
2674
2675#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002676 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2677 (__v16sf)(__m512)(B), \
2678 -(__v16sf)(__m512)(C), \
2679 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002680
2681
2682#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002683 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2684 (__v16sf)(__m512)(B), \
2685 -(__v16sf)(__m512)(C), \
2686 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002687
2688
Michael Kupersteine45af542015-06-30 13:36:19 +00002689static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002690_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2691{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002692 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2693 (__v16sf) __B,
2694 (__v16sf) __C,
2695 (__mmask16) -1,
2696 _MM_FROUND_CUR_DIRECTION);
2697}
2698
Michael Kupersteine45af542015-06-30 13:36:19 +00002699static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002700_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2701{
2702 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2703 (__v16sf) __B,
2704 (__v16sf) __C,
2705 (__mmask16) __U,
2706 _MM_FROUND_CUR_DIRECTION);
2707}
2708
Michael Kupersteine45af542015-06-30 13:36:19 +00002709static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002710_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2711{
2712 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2713 (__v16sf) __B,
2714 (__v16sf) __C,
2715 (__mmask16) __U,
2716 _MM_FROUND_CUR_DIRECTION);
2717}
2718
Michael Kupersteine45af542015-06-30 13:36:19 +00002719static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002720_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2721{
2722 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2723 (__v16sf) __B,
2724 (__v16sf) __C,
2725 (__mmask16) __U,
2726 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002727}
2728
Michael Kupersteine45af542015-06-30 13:36:19 +00002729static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002730_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2731{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002732 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2733 (__v16sf) __B,
2734 -(__v16sf) __C,
2735 (__mmask16) -1,
2736 _MM_FROUND_CUR_DIRECTION);
2737}
2738
Michael Kupersteine45af542015-06-30 13:36:19 +00002739static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002740_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2741{
2742 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2743 (__v16sf) __B,
2744 -(__v16sf) __C,
2745 (__mmask16) __U,
2746 _MM_FROUND_CUR_DIRECTION);
2747}
2748
Michael Kupersteine45af542015-06-30 13:36:19 +00002749static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002750_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2751{
2752 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2753 (__v16sf) __B,
2754 -(__v16sf) __C,
2755 (__mmask16) __U,
2756 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002757}
2758
Michael Kupersteine45af542015-06-30 13:36:19 +00002759static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002760_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2761{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002762 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2763 (__v16sf) __B,
2764 (__v16sf) __C,
2765 (__mmask16) -1,
2766 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002767}
2768
Michael Kupersteine45af542015-06-30 13:36:19 +00002769static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002770_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2771{
2772 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2773 (__v16sf) __B,
2774 (__v16sf) __C,
2775 (__mmask16) __U,
2776 _MM_FROUND_CUR_DIRECTION);
2777}
2778
Michael Kupersteine45af542015-06-30 13:36:19 +00002779static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002780_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2781{
2782 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2783 (__v16sf) __B,
2784 (__v16sf) __C,
2785 (__mmask16) __U,
2786 _MM_FROUND_CUR_DIRECTION);
2787}
2788
Michael Kupersteine45af542015-06-30 13:36:19 +00002789static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002790_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2791{
2792 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2793 (__v16sf) __B,
2794 -(__v16sf) __C,
2795 (__mmask16) -1,
2796 _MM_FROUND_CUR_DIRECTION);
2797}
2798
Michael Kupersteine45af542015-06-30 13:36:19 +00002799static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002800_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2801{
2802 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2803 (__v16sf) __B,
2804 -(__v16sf) __C,
2805 (__mmask16) __U,
2806 _MM_FROUND_CUR_DIRECTION);
2807}
2808
2809#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002810 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2811 (__v8df)(__m512d)(B), \
2812 (__v8df)(__m512d)(C), \
2813 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002814
2815
2816#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002817 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2818 (__v8df)(__m512d)(B), \
2819 (__v8df)(__m512d)(C), \
2820 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002821
2822
2823#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002824 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2825 (__v8df)(__m512d)(B), \
2826 (__v8df)(__m512d)(C), \
2827 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002828
2829
2830#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002831 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2832 (__v8df)(__m512d)(B), \
2833 (__v8df)(__m512d)(C), \
2834 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002835
2836
2837#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002838 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2839 (__v8df)(__m512d)(B), \
2840 -(__v8df)(__m512d)(C), \
2841 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002842
2843
2844#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002845 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2846 (__v8df)(__m512d)(B), \
2847 -(__v8df)(__m512d)(C), \
2848 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002849
2850
2851#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002852 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2853 (__v8df)(__m512d)(B), \
2854 -(__v8df)(__m512d)(C), \
2855 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002856
2857
Michael Kupersteine45af542015-06-30 13:36:19 +00002858static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002859_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2860{
2861 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2862 (__v8df) __B,
2863 (__v8df) __C,
2864 (__mmask8) -1,
2865 _MM_FROUND_CUR_DIRECTION);
2866}
2867
Michael Kupersteine45af542015-06-30 13:36:19 +00002868static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002869_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2870{
2871 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2872 (__v8df) __B,
2873 (__v8df) __C,
2874 (__mmask8) __U,
2875 _MM_FROUND_CUR_DIRECTION);
2876}
2877
Michael Kupersteine45af542015-06-30 13:36:19 +00002878static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002879_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2880{
2881 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2882 (__v8df) __B,
2883 (__v8df) __C,
2884 (__mmask8) __U,
2885 _MM_FROUND_CUR_DIRECTION);
2886}
2887
Michael Kupersteine45af542015-06-30 13:36:19 +00002888static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002889_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2890{
2891 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2892 (__v8df) __B,
2893 (__v8df) __C,
2894 (__mmask8) __U,
2895 _MM_FROUND_CUR_DIRECTION);
2896}
2897
Michael Kupersteine45af542015-06-30 13:36:19 +00002898static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002899_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2900{
2901 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2902 (__v8df) __B,
2903 -(__v8df) __C,
2904 (__mmask8) -1,
2905 _MM_FROUND_CUR_DIRECTION);
2906}
2907
Michael Kupersteine45af542015-06-30 13:36:19 +00002908static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002909_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2910{
2911 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2912 (__v8df) __B,
2913 -(__v8df) __C,
2914 (__mmask8) __U,
2915 _MM_FROUND_CUR_DIRECTION);
2916}
2917
Michael Kupersteine45af542015-06-30 13:36:19 +00002918static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002919_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2920{
2921 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2922 (__v8df) __B,
2923 -(__v8df) __C,
2924 (__mmask8) __U,
2925 _MM_FROUND_CUR_DIRECTION);
2926}
2927
2928#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002929 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2930 (__v16sf)(__m512)(B), \
2931 (__v16sf)(__m512)(C), \
2932 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002933
2934
2935#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002936 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2937 (__v16sf)(__m512)(B), \
2938 (__v16sf)(__m512)(C), \
2939 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002940
2941
2942#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002943 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2944 (__v16sf)(__m512)(B), \
2945 (__v16sf)(__m512)(C), \
2946 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002947
2948
2949#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002950 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2951 (__v16sf)(__m512)(B), \
2952 (__v16sf)(__m512)(C), \
2953 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002954
2955
2956#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002957 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2958 (__v16sf)(__m512)(B), \
2959 -(__v16sf)(__m512)(C), \
2960 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002961
2962
2963#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002964 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2965 (__v16sf)(__m512)(B), \
2966 -(__v16sf)(__m512)(C), \
2967 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002968
2969
2970#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002971 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2972 (__v16sf)(__m512)(B), \
2973 -(__v16sf)(__m512)(C), \
2974 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002975
2976
Michael Kupersteine45af542015-06-30 13:36:19 +00002977static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002978_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2979{
2980 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2981 (__v16sf) __B,
2982 (__v16sf) __C,
2983 (__mmask16) -1,
2984 _MM_FROUND_CUR_DIRECTION);
2985}
2986
Michael Kupersteine45af542015-06-30 13:36:19 +00002987static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002988_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2989{
2990 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2991 (__v16sf) __B,
2992 (__v16sf) __C,
2993 (__mmask16) __U,
2994 _MM_FROUND_CUR_DIRECTION);
2995}
2996
Michael Kupersteine45af542015-06-30 13:36:19 +00002997static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002998_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2999{
3000 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3001 (__v16sf) __B,
3002 (__v16sf) __C,
3003 (__mmask16) __U,
3004 _MM_FROUND_CUR_DIRECTION);
3005}
3006
Michael Kupersteine45af542015-06-30 13:36:19 +00003007static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003008_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3009{
3010 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3011 (__v16sf) __B,
3012 (__v16sf) __C,
3013 (__mmask16) __U,
3014 _MM_FROUND_CUR_DIRECTION);
3015}
3016
Michael Kupersteine45af542015-06-30 13:36:19 +00003017static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003018_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3019{
3020 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3021 (__v16sf) __B,
3022 -(__v16sf) __C,
3023 (__mmask16) -1,
3024 _MM_FROUND_CUR_DIRECTION);
3025}
3026
Michael Kupersteine45af542015-06-30 13:36:19 +00003027static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003028_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3029{
3030 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3031 (__v16sf) __B,
3032 -(__v16sf) __C,
3033 (__mmask16) __U,
3034 _MM_FROUND_CUR_DIRECTION);
3035}
3036
Michael Kupersteine45af542015-06-30 13:36:19 +00003037static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003038_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3039{
3040 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3041 (__v16sf) __B,
3042 -(__v16sf) __C,
3043 (__mmask16) __U,
3044 _MM_FROUND_CUR_DIRECTION);
3045}
3046
3047#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003048 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3049 (__v8df)(__m512d)(B), \
3050 (__v8df)(__m512d)(C), \
3051 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003052
3053
Michael Kupersteine45af542015-06-30 13:36:19 +00003054static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003055_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3056{
3057 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3058 (__v8df) __B,
3059 (__v8df) __C,
3060 (__mmask8) __U,
3061 _MM_FROUND_CUR_DIRECTION);
3062}
3063
3064#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003065 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3066 (__v16sf)(__m512)(B), \
3067 (__v16sf)(__m512)(C), \
3068 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003069
3070
Michael Kupersteine45af542015-06-30 13:36:19 +00003071static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003072_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3073{
3074 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3075 (__v16sf) __B,
3076 (__v16sf) __C,
3077 (__mmask16) __U,
3078 _MM_FROUND_CUR_DIRECTION);
3079}
3080
3081#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003082 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3083 (__v8df)(__m512d)(B), \
3084 (__v8df)(__m512d)(C), \
3085 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003086
3087
Michael Kupersteine45af542015-06-30 13:36:19 +00003088static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003089_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3090{
3091 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3092 (__v8df) __B,
3093 (__v8df) __C,
3094 (__mmask8) __U,
3095 _MM_FROUND_CUR_DIRECTION);
3096}
3097
3098#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003099 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3100 (__v16sf)(__m512)(B), \
3101 (__v16sf)(__m512)(C), \
3102 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003103
3104
Michael Kupersteine45af542015-06-30 13:36:19 +00003105static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003106_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3107{
3108 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3109 (__v16sf) __B,
3110 (__v16sf) __C,
3111 (__mmask16) __U,
3112 _MM_FROUND_CUR_DIRECTION);
3113}
3114
3115#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003116 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3117 (__v8df)(__m512d)(B), \
3118 (__v8df)(__m512d)(C), \
3119 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003120
3121
Michael Kupersteine45af542015-06-30 13:36:19 +00003122static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003123_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3124{
3125 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3126 (__v8df) __B,
3127 (__v8df) __C,
3128 (__mmask8) __U,
3129 _MM_FROUND_CUR_DIRECTION);
3130}
3131
3132#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003133 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3134 (__v16sf)(__m512)(B), \
3135 (__v16sf)(__m512)(C), \
3136 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003137
3138
Michael Kupersteine45af542015-06-30 13:36:19 +00003139static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003140_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3141{
3142 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3143 (__v16sf) __B,
3144 (__v16sf) __C,
3145 (__mmask16) __U,
3146 _MM_FROUND_CUR_DIRECTION);
3147}
3148
3149#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003150 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3151 (__v8df)(__m512d)(B), \
3152 (__v8df)(__m512d)(C), \
3153 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003154
3155
3156#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003157 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3158 (__v8df)(__m512d)(B), \
3159 (__v8df)(__m512d)(C), \
3160 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003161
3162
Michael Kupersteine45af542015-06-30 13:36:19 +00003163static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003164_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3165{
3166 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3167 (__v8df) __B,
3168 (__v8df) __C,
3169 (__mmask8) __U,
3170 _MM_FROUND_CUR_DIRECTION);
3171}
3172
Michael Kupersteine45af542015-06-30 13:36:19 +00003173static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003174_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3175{
3176 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3177 (__v8df) __B,
3178 (__v8df) __C,
3179 (__mmask8) __U,
3180 _MM_FROUND_CUR_DIRECTION);
3181}
3182
3183#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003184 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3185 (__v16sf)(__m512)(B), \
3186 (__v16sf)(__m512)(C), \
3187 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003188
3189
3190#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003191 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3192 (__v16sf)(__m512)(B), \
3193 (__v16sf)(__m512)(C), \
3194 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003195
3196
Michael Kupersteine45af542015-06-30 13:36:19 +00003197static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003198_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3199{
3200 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3201 (__v16sf) __B,
3202 (__v16sf) __C,
3203 (__mmask16) __U,
3204 _MM_FROUND_CUR_DIRECTION);
3205}
3206
Michael Kupersteine45af542015-06-30 13:36:19 +00003207static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003208_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3209{
3210 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3211 (__v16sf) __B,
3212 (__v16sf) __C,
3213 (__mmask16) __U,
3214 _MM_FROUND_CUR_DIRECTION);
3215}
3216
3217
3218
Adam Nemet0d5bb552014-07-28 17:14:40 +00003219/* Vector permutations */
3220
Michael Kupersteine45af542015-06-30 13:36:19 +00003221static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003222_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3223{
3224 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3225 /* idx */ ,
3226 (__v16si) __A,
3227 (__v16si) __B,
3228 (__mmask16) -1);
3229}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003230
3231static __inline__ __m512i __DEFAULT_FN_ATTRS
3232_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3233 __m512i __I, __m512i __B)
3234{
3235 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3236 /* idx */ ,
3237 (__v16si) __A,
3238 (__v16si) __B,
3239 (__mmask16) __U);
3240}
3241
3242static __inline__ __m512i __DEFAULT_FN_ATTRS
3243_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3244 __m512i __I, __m512i __B)
3245{
3246 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3247 /* idx */ ,
3248 (__v16si) __A,
3249 (__v16si) __B,
3250 (__mmask16) __U);
3251}
3252
Michael Kupersteine45af542015-06-30 13:36:19 +00003253static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003254_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3255{
3256 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3257 /* idx */ ,
3258 (__v8di) __A,
3259 (__v8di) __B,
3260 (__mmask8) -1);
3261}
3262
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003263static __inline__ __m512i __DEFAULT_FN_ATTRS
3264_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3265 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003266{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003267 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003268 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003269 (__v8di) __A,
3270 (__v8di) __B,
3271 (__mmask8) __U);
3272}
3273
3274
3275static __inline__ __m512i __DEFAULT_FN_ATTRS
3276_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3277 __m512i __I, __m512i __B)
3278{
3279 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3280 /* idx */ ,
3281 (__v8di) __A,
3282 (__v8di) __B,
3283 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003284}
3285
Craig Topper67826a52015-02-01 07:35:40 +00003286#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3287 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003288 (__v8di)(__m512i)(B), (int)(I), \
3289 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003290 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003291
Craig Topper8c18e112016-05-17 04:41:50 +00003292#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3293 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3294 (__v8di)(__m512i)(B), (int)(imm), \
3295 (__v8di)(__m512i)(W), \
3296 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003297
Craig Topper8c18e112016-05-17 04:41:50 +00003298#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3299 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3300 (__v8di)(__m512i)(B), (int)(imm), \
3301 (__v8di)_mm512_setzero_si512(), \
3302 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003303
Craig Topper67826a52015-02-01 07:35:40 +00003304#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003305 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3306 (__v16si)(__m512i)(B), (int)(I), \
3307 (__v16si)_mm512_setzero_si512(), \
3308 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003309
Craig Topper8c18e112016-05-17 04:41:50 +00003310#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3311 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3312 (__v16si)(__m512i)(B), (int)(imm), \
3313 (__v16si)(__m512i)(W), \
3314 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003315
Craig Topper8c18e112016-05-17 04:41:50 +00003316#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3317 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3318 (__v16si)(__m512i)(B), (int)(imm), \
3319 (__v16si)_mm512_setzero_si512(), \
3320 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003321/* Vector Extract */
3322
3323#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003324 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3325 (__v4df)_mm256_setzero_si256(), \
3326 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003327
Craig Topper8c18e112016-05-17 04:41:50 +00003328#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3329 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3330 (__v4df)(__m256d)(W), \
3331 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003332
Craig Topper8c18e112016-05-17 04:41:50 +00003333#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3334 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3335 (__v4df)_mm256_setzero_pd(), \
3336 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003337
Adam Nemetf893ede2015-01-19 20:12:05 +00003338#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003339 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3340 (__v4sf)_mm_setzero_ps(), \
3341 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003342
Craig Topper8c18e112016-05-17 04:41:50 +00003343#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3344 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3345 (__v4sf)(__m128)(W), \
3346 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003347
Craig Topper8c18e112016-05-17 04:41:50 +00003348#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3349 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3350 (__v4sf)_mm_setzero_ps(), \
3351 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003352/* Vector Blend */
3353
Michael Kupersteine45af542015-06-30 13:36:19 +00003354static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003355_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3356{
3357 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3358 (__v8df) __W,
3359 (__mmask8) __U);
3360}
3361
Michael Kupersteine45af542015-06-30 13:36:19 +00003362static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003363_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3364{
3365 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3366 (__v16sf) __W,
3367 (__mmask16) __U);
3368}
3369
Michael Kupersteine45af542015-06-30 13:36:19 +00003370static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003371_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3372{
3373 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3374 (__v8di) __W,
3375 (__mmask8) __U);
3376}
3377
Michael Kupersteine45af542015-06-30 13:36:19 +00003378static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003379_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3380{
3381 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3382 (__v16si) __W,
3383 (__mmask16) __U);
3384}
3385
3386/* Compare */
3387
Craig Topper53565c62015-02-01 22:27:40 +00003388#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3389 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003390 (__v16sf)(__m512)(B), (int)(P), \
3391 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003392
Craig Topper53565c62015-02-01 22:27:40 +00003393#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3394 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003395 (__v16sf)(__m512)(B), (int)(P), \
3396 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003397
3398#define _mm512_cmp_ps_mask(A, B, P) \
3399 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3400
3401#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3402 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3403
3404#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3405 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003406 (__v8df)(__m512d)(B), (int)(P), \
3407 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003408
3409#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3410 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003411 (__v8df)(__m512d)(B), (int)(P), \
3412 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003413
3414#define _mm512_cmp_pd_mask(A, B, P) \
3415 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3416
3417#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3418 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003419
3420/* Conversion */
3421
Michael Kupersteine45af542015-06-30 13:36:19 +00003422static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003423_mm512_cvttps_epu32(__m512 __A)
3424{
3425 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3426 (__v16si)
3427 _mm512_setzero_si512 (),
3428 (__mmask16) -1,
3429 _MM_FROUND_CUR_DIRECTION);
3430}
3431
Michael Zuckermanf1544752016-05-09 10:32:51 +00003432static __inline__ __m512i __DEFAULT_FN_ATTRS
3433_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3434{
3435 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3436 (__v16si) __W,
3437 (__mmask16) __U,
3438 _MM_FROUND_CUR_DIRECTION);
3439}
3440
3441static __inline__ __m512i __DEFAULT_FN_ATTRS
3442_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3443{
3444 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3445 (__v16si) _mm512_setzero_si512 (),
3446 (__mmask16) __U,
3447 _MM_FROUND_CUR_DIRECTION);
3448}
3449
Craig Topper72c7d512015-02-01 07:35:35 +00003450#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003451 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003452 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003453 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003454
Craig Topper72c7d512015-02-01 07:35:35 +00003455#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003456 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003457 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003458 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003459
Michael Zuckermanf1544752016-05-09 10:32:51 +00003460static __inline__ __m512 __DEFAULT_FN_ATTRS
3461_mm512_cvtepu32_ps (__m512i __A)
3462{
3463 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3464 (__v16sf) _mm512_undefined_ps (),
3465 (__mmask16) -1,
3466 _MM_FROUND_CUR_DIRECTION);
3467}
3468
3469static __inline__ __m512 __DEFAULT_FN_ATTRS
3470_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3471{
3472 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3473 (__v16sf) __W,
3474 (__mmask16) __U,
3475 _MM_FROUND_CUR_DIRECTION);
3476}
3477
3478static __inline__ __m512 __DEFAULT_FN_ATTRS
3479_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3480{
3481 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3482 (__v16sf) _mm512_setzero_ps (),
3483 (__mmask16) __U,
3484 _MM_FROUND_CUR_DIRECTION);
3485}
3486
Michael Kupersteine45af542015-06-30 13:36:19 +00003487static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003488_mm512_cvtepi32_pd(__m256i __A)
3489{
3490 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003491 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003492 _mm512_setzero_pd (),
3493 (__mmask8) -1);
3494}
3495
Michael Zuckermanf1544752016-05-09 10:32:51 +00003496static __inline__ __m512d __DEFAULT_FN_ATTRS
3497_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3498{
3499 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3500 (__v8df) __W,
3501 (__mmask8) __U);
3502}
3503
3504static __inline__ __m512d __DEFAULT_FN_ATTRS
3505_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3506{
3507 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3508 (__v8df) _mm512_setzero_pd (),
3509 (__mmask8) __U);
3510}
3511
3512static __inline__ __m512 __DEFAULT_FN_ATTRS
3513_mm512_cvtepi32_ps (__m512i __A)
3514{
3515 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3516 (__v16sf) _mm512_undefined_ps (),
3517 (__mmask16) -1,
3518 _MM_FROUND_CUR_DIRECTION);
3519}
3520
3521static __inline__ __m512 __DEFAULT_FN_ATTRS
3522_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3523{
3524 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3525 (__v16sf) __W,
3526 (__mmask16) __U,
3527 _MM_FROUND_CUR_DIRECTION);
3528}
3529
3530static __inline__ __m512 __DEFAULT_FN_ATTRS
3531_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3532{
3533 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3534 (__v16sf) _mm512_setzero_ps (),
3535 (__mmask16) __U,
3536 _MM_FROUND_CUR_DIRECTION);
3537}
3538
Michael Kupersteine45af542015-06-30 13:36:19 +00003539static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003540_mm512_cvtepu32_pd(__m256i __A)
3541{
3542 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3543 (__v8df)
3544 _mm512_setzero_pd (),
3545 (__mmask8) -1);
3546}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003547
Michael Zuckermanf1544752016-05-09 10:32:51 +00003548static __inline__ __m512d __DEFAULT_FN_ATTRS
3549_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3550{
3551 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3552 (__v8df) __W,
3553 (__mmask8) __U);
3554}
3555
3556static __inline__ __m512d __DEFAULT_FN_ATTRS
3557_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3558{
3559 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3560 (__v8df) _mm512_setzero_pd (),
3561 (__mmask8) __U);
3562}
3563
Craig Topper72c7d512015-02-01 07:35:35 +00003564#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003565 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003566 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003567 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003568
Michael Zuckermanf1544752016-05-09 10:32:51 +00003569static __inline__ __m256 __DEFAULT_FN_ATTRS
3570_mm512_cvtpd_ps (__m512d __A)
3571{
3572 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3573 (__v8sf) _mm256_undefined_ps (),
3574 (__mmask8) -1,
3575 _MM_FROUND_CUR_DIRECTION);
3576}
3577
3578static __inline__ __m256 __DEFAULT_FN_ATTRS
3579_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3580{
3581 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3582 (__v8sf) __W,
3583 (__mmask8) __U,
3584 _MM_FROUND_CUR_DIRECTION);
3585}
3586
3587static __inline__ __m256 __DEFAULT_FN_ATTRS
3588_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3589{
3590 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3591 (__v8sf) _mm256_setzero_ps (),
3592 (__mmask8) __U,
3593 _MM_FROUND_CUR_DIRECTION);
3594}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003595
Craig Topper72c7d512015-02-01 07:35:35 +00003596#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003597 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003598 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003599 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003600
Craig Topper8c18e112016-05-17 04:41:50 +00003601#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3602 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3603 (__v16hi)(__m256i)(U), \
3604 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003605
Craig Topper8c18e112016-05-17 04:41:50 +00003606#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3607 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3608 (__v16hi)_mm256_setzero_si256(), \
3609 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003610
3611
Michael Kupersteine45af542015-06-30 13:36:19 +00003612static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003613_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003614{
3615 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003616 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003617 _mm512_setzero_ps (),
3618 (__mmask16) -1,
3619 _MM_FROUND_CUR_DIRECTION);
3620}
3621
Michael Zuckermanf1544752016-05-09 10:32:51 +00003622static __inline__ __m512 __DEFAULT_FN_ATTRS
3623_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003624{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003625 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3626 (__v16sf) __W,
3627 (__mmask16) __U,
3628 _MM_FROUND_CUR_DIRECTION);
3629}
3630
3631static __inline__ __m512 __DEFAULT_FN_ATTRS
3632_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3633{
3634 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3635 (__v16sf) _mm512_setzero_ps (),
3636 (__mmask16) __U,
3637 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003638}
3639
Michael Kupersteine45af542015-06-30 13:36:19 +00003640static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003641_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003642{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003643 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003644 (__v8si)_mm256_setzero_si256(),
3645 (__mmask8) -1,
3646 _MM_FROUND_CUR_DIRECTION);
3647}
3648
Michael Zuckermanf1544752016-05-09 10:32:51 +00003649static __inline__ __m256i __DEFAULT_FN_ATTRS
3650_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3651{
3652 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3653 (__v8si) __W,
3654 (__mmask8) __U,
3655 _MM_FROUND_CUR_DIRECTION);
3656}
3657
3658static __inline__ __m256i __DEFAULT_FN_ATTRS
3659_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3660{
3661 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3662 (__v8si) _mm256_setzero_si256 (),
3663 (__mmask8) __U,
3664 _MM_FROUND_CUR_DIRECTION);
3665}
3666
Craig Topper72c7d512015-02-01 07:35:35 +00003667#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003668 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003669 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003670 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003671
Craig Topper72c7d512015-02-01 07:35:35 +00003672#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003673 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003674 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003675 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003676
Michael Zuckermanf1544752016-05-09 10:32:51 +00003677static __inline __m512i __DEFAULT_FN_ATTRS
3678_mm512_cvttps_epi32(__m512 __a)
3679{
3680 return (__m512i)
3681 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3682 (__v16si) _mm512_setzero_si512 (),
3683 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3684}
3685
3686static __inline__ __m512i __DEFAULT_FN_ATTRS
3687_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3688{
3689 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3690 (__v16si) __W,
3691 (__mmask16) __U,
3692 _MM_FROUND_CUR_DIRECTION);
3693}
3694
3695static __inline__ __m512i __DEFAULT_FN_ATTRS
3696_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3697{
3698 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3699 (__v16si) _mm512_setzero_si512 (),
3700 (__mmask16) __U,
3701 _MM_FROUND_CUR_DIRECTION);
3702}
Craig Topper72c7d512015-02-01 07:35:35 +00003703
3704#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003705 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003706 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003707 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003708
Michael Zuckermanf1544752016-05-09 10:32:51 +00003709static __inline__ __m512i __DEFAULT_FN_ATTRS
3710_mm512_cvtps_epi32 (__m512 __A)
3711{
3712 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3713 (__v16si) _mm512_undefined_epi32 (),
3714 (__mmask16) -1,
3715 _MM_FROUND_CUR_DIRECTION);
3716}
3717
3718static __inline__ __m512i __DEFAULT_FN_ATTRS
3719_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3720{
3721 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3722 (__v16si) __W,
3723 (__mmask16) __U,
3724 _MM_FROUND_CUR_DIRECTION);
3725}
3726
3727static __inline__ __m512i __DEFAULT_FN_ATTRS
3728_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3729{
3730 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3731 (__v16si)
3732 _mm512_setzero_si512 (),
3733 (__mmask16) __U,
3734 _MM_FROUND_CUR_DIRECTION);
3735}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003736
Craig Topper72c7d512015-02-01 07:35:35 +00003737#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003738 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003739 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003740 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003741
Michael Zuckermanf1544752016-05-09 10:32:51 +00003742static __inline__ __m256i __DEFAULT_FN_ATTRS
3743_mm512_cvtpd_epi32 (__m512d __A)
3744{
3745 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3746 (__v8si)
3747 _mm256_undefined_si256 (),
3748 (__mmask8) -1,
3749 _MM_FROUND_CUR_DIRECTION);
3750}
3751
3752static __inline__ __m256i __DEFAULT_FN_ATTRS
3753_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3754{
3755 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3756 (__v8si) __W,
3757 (__mmask8) __U,
3758 _MM_FROUND_CUR_DIRECTION);
3759}
3760
3761static __inline__ __m256i __DEFAULT_FN_ATTRS
3762_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3763{
3764 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3765 (__v8si)
3766 _mm256_setzero_si256 (),
3767 (__mmask8) __U,
3768 _MM_FROUND_CUR_DIRECTION);
3769}
3770
Craig Topper72c7d512015-02-01 07:35:35 +00003771#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003772 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003773 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003774 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003775
Michael Zuckermanf1544752016-05-09 10:32:51 +00003776static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003777_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00003778{
3779 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3780 (__v16si)\
3781 _mm512_undefined_epi32 (),\
3782 (__mmask16) -1,\
3783 _MM_FROUND_CUR_DIRECTION);\
3784}
3785
3786static __inline__ __m512i __DEFAULT_FN_ATTRS
3787_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3788{
3789 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3790 (__v16si) __W,
3791 (__mmask16) __U,
3792 _MM_FROUND_CUR_DIRECTION);
3793}
3794
Craig Topper72c7d512015-02-01 07:35:35 +00003795#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003796 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003797 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003798 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003799
Michael Zuckermanf1544752016-05-09 10:32:51 +00003800static __inline__ __m256i __DEFAULT_FN_ATTRS
3801_mm512_cvtpd_epu32 (__m512d __A)
3802{
3803 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3804 (__v8si)
3805 _mm256_undefined_si256 (),
3806 (__mmask8) -1,
3807 _MM_FROUND_CUR_DIRECTION);
3808}
3809
3810static __inline__ __m256i __DEFAULT_FN_ATTRS
3811_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3812{
3813 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3814 (__v8si) __W,
3815 (__mmask8) __U,
3816 _MM_FROUND_CUR_DIRECTION);
3817}
3818
3819static __inline__ __m256i __DEFAULT_FN_ATTRS
3820_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3821{
3822 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3823 (__v8si)
3824 _mm256_setzero_si256 (),
3825 (__mmask8) __U,
3826 _MM_FROUND_CUR_DIRECTION);
3827}
Adam Nemet63a951e2015-01-14 01:31:17 +00003828/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003829static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003830_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3831{
3832 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3833}
3834
Michael Kupersteine45af542015-06-30 13:36:19 +00003835static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003836_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3837{
3838 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3839}
3840
Michael Kupersteine45af542015-06-30 13:36:19 +00003841static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003842_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3843{
3844 return __builtin_shufflevector(__a, __b,
3845 2, 18, 3, 19,
3846 2+4, 18+4, 3+4, 19+4,
3847 2+8, 18+8, 3+8, 19+8,
3848 2+12, 18+12, 3+12, 19+12);
3849}
3850
Michael Kupersteine45af542015-06-30 13:36:19 +00003851static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003852_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3853{
3854 return __builtin_shufflevector(__a, __b,
3855 0, 16, 1, 17,
3856 0+4, 16+4, 1+4, 17+4,
3857 0+8, 16+8, 1+8, 17+8,
3858 0+12, 16+12, 1+12, 17+12);
3859}
3860
Adam Nemet0d5bb552014-07-28 17:14:40 +00003861/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003862
Michael Kupersteine45af542015-06-30 13:36:19 +00003863static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003864_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003865{
3866 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3867 (__v16si) __B,
3868 (__mmask16) -1);
3869}
3870
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003871static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3872_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3873{
3874 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3875 (__v16si) __B, __U);
3876}
3877
Michael Kupersteine45af542015-06-30 13:36:19 +00003878static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003879_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003880{
3881 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3882 (__v8di) __B,
3883 (__mmask8) -1);
3884}
3885
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003886static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3887_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3888{
3889 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
3890}
3891
3892
Adam Nemet0d5bb552014-07-28 17:14:40 +00003893/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003894
Michael Kupersteine45af542015-06-30 13:36:19 +00003895static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003896_mm512_loadu_si512 (void const *__P)
3897{
Craig Topper4537ea72016-05-14 06:03:13 +00003898 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003899 (__v16si)
3900 _mm512_setzero_si512 (),
3901 (__mmask16) -1);
3902}
3903
3904static __inline __m512i __DEFAULT_FN_ATTRS
3905_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3906{
Craig Topper4537ea72016-05-14 06:03:13 +00003907 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003908 (__v16si) __W,
3909 (__mmask16) __U);
3910}
3911
3912
3913static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003914_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003915{
Craig Topper4537ea72016-05-14 06:03:13 +00003916 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003917 (__v16si)
3918 _mm512_setzero_si512 (),
3919 (__mmask16) __U);
3920}
3921
Michael Kupersteine45af542015-06-30 13:36:19 +00003922static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003923_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3924{
Craig Topper4537ea72016-05-14 06:03:13 +00003925 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003926 (__v8di) __W,
3927 (__mmask8) __U);
3928}
3929
3930static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003931_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003932{
Craig Topper4537ea72016-05-14 06:03:13 +00003933 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003934 (__v8di)
3935 _mm512_setzero_si512 (),
3936 (__mmask8) __U);
3937}
3938
Michael Kupersteine45af542015-06-30 13:36:19 +00003939static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003940_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
3941{
Craig Topper4537ea72016-05-14 06:03:13 +00003942 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003943 (__v16sf) __W,
3944 (__mmask16) __U);
3945}
3946
3947static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003948_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003949{
Craig Topper4537ea72016-05-14 06:03:13 +00003950 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003951 (__v16sf)
3952 _mm512_setzero_ps (),
3953 (__mmask16) __U);
3954}
3955
Michael Kupersteine45af542015-06-30 13:36:19 +00003956static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003957_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003958{
Craig Topper4537ea72016-05-14 06:03:13 +00003959 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003960 (__v8df) __W,
3961 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00003962}
3963
Michael Kupersteine45af542015-06-30 13:36:19 +00003964static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003965_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00003966{
Craig Topper4537ea72016-05-14 06:03:13 +00003967 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00003968 (__v8df)
3969 _mm512_setzero_pd (),
3970 (__mmask8) __U);
3971}
3972
Michael Kupersteine45af542015-06-30 13:36:19 +00003973static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003974_mm512_loadu_pd(double const *__p)
3975{
3976 struct __loadu_pd {
3977 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003978 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003979 return ((struct __loadu_pd*)__p)->__v;
3980}
3981
Michael Kupersteine45af542015-06-30 13:36:19 +00003982static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003983_mm512_loadu_ps(float const *__p)
3984{
3985 struct __loadu_ps {
3986 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003987 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003988 return ((struct __loadu_ps*)__p)->__v;
3989}
3990
Michael Kupersteine45af542015-06-30 13:36:19 +00003991static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003992_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003993{
3994 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3995 (__v16sf)
3996 _mm512_setzero_ps (),
3997 (__mmask16) -1);
3998}
3999
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004000static __inline __m512 __DEFAULT_FN_ATTRS
4001_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4002{
4003 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4004 (__v16sf) __W,
4005 (__mmask16) __U);
4006}
4007
4008static __inline __m512 __DEFAULT_FN_ATTRS
4009_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4010{
4011 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4012 (__v16sf)
4013 _mm512_setzero_ps (),
4014 (__mmask16) __U);
4015}
4016
Michael Kupersteine45af542015-06-30 13:36:19 +00004017static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004018_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004019{
4020 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4021 (__v8df)
4022 _mm512_setzero_pd (),
4023 (__mmask8) -1);
4024}
4025
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004026static __inline __m512d __DEFAULT_FN_ATTRS
4027_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4028{
4029 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4030 (__v8df) __W,
4031 (__mmask8) __U);
4032}
4033
4034static __inline __m512d __DEFAULT_FN_ATTRS
4035_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4036{
4037 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4038 (__v8df)
4039 _mm512_setzero_pd (),
4040 (__mmask8) __U);
4041}
4042
4043static __inline __m512i __DEFAULT_FN_ATTRS
4044_mm512_load_si512 (void const *__P)
4045{
4046 return *(__m512i *) __P;
4047}
4048
4049static __inline __m512i __DEFAULT_FN_ATTRS
4050_mm512_load_epi32 (void const *__P)
4051{
4052 return *(__m512i *) __P;
4053}
4054
4055static __inline __m512i __DEFAULT_FN_ATTRS
4056_mm512_load_epi64 (void const *__P)
4057{
4058 return *(__m512i *) __P;
4059}
4060
Adam Nemet0d5bb552014-07-28 17:14:40 +00004061/* SIMD store ops */
4062
Michael Kupersteine45af542015-06-30 13:36:19 +00004063static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004064_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004065{
Craig Topper4537ea72016-05-14 06:03:13 +00004066 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004067 (__mmask8) __U);
4068}
4069
Michael Kupersteine45af542015-06-30 13:36:19 +00004070static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004071_mm512_storeu_si512 (void *__P, __m512i __A)
4072{
Craig Topper4537ea72016-05-14 06:03:13 +00004073 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004074 (__mmask16) -1);
4075}
4076
4077static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004078_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004079{
Craig Topper4537ea72016-05-14 06:03:13 +00004080 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004081 (__mmask16) __U);
4082}
4083
Michael Kupersteine45af542015-06-30 13:36:19 +00004084static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004085_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004086{
Craig Topper4537ea72016-05-14 06:03:13 +00004087 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004088}
4089
Michael Kupersteine45af542015-06-30 13:36:19 +00004090static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004091_mm512_storeu_pd(void *__P, __m512d __A)
4092{
Craig Topper4537ea72016-05-14 06:03:13 +00004093 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004094}
4095
Michael Kupersteine45af542015-06-30 13:36:19 +00004096static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004097_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004098{
Craig Topper4537ea72016-05-14 06:03:13 +00004099 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004100 (__mmask16) __U);
4101}
4102
Michael Kupersteine45af542015-06-30 13:36:19 +00004103static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004104_mm512_storeu_ps(void *__P, __m512 __A)
4105{
Craig Topper4537ea72016-05-14 06:03:13 +00004106 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004107}
4108
Michael Kupersteine45af542015-06-30 13:36:19 +00004109static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004110_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004111{
Adam Nemetc0cff242015-01-16 18:51:50 +00004112 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004113}
4114
Michael Kupersteine45af542015-06-30 13:36:19 +00004115static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004116_mm512_store_pd(void *__P, __m512d __A)
4117{
4118 *(__m512d*)__P = __A;
4119}
4120
Michael Kupersteine45af542015-06-30 13:36:19 +00004121static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004122_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4123{
4124 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4125 (__mmask16) __U);
4126}
4127
Michael Kupersteine45af542015-06-30 13:36:19 +00004128static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004129_mm512_store_ps(void *__P, __m512 __A)
4130{
4131 *(__m512*)__P = __A;
4132}
4133
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004134static __inline void __DEFAULT_FN_ATTRS
4135_mm512_store_si512 (void *__P, __m512i __A)
4136{
4137 *(__m512i *) __P = __A;
4138}
4139
4140static __inline void __DEFAULT_FN_ATTRS
4141_mm512_store_epi32 (void *__P, __m512i __A)
4142{
4143 *(__m512i *) __P = __A;
4144}
4145
4146static __inline void __DEFAULT_FN_ATTRS
4147_mm512_store_epi64 (void *__P, __m512i __A)
4148{
4149 *(__m512i *) __P = __A;
4150}
4151
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004152/* Mask ops */
4153
Michael Kupersteine45af542015-06-30 13:36:19 +00004154static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004155_mm512_knot(__mmask16 __M)
4156{
4157 return __builtin_ia32_knothi(__M);
4158}
4159
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004160/* Integer compare */
4161
Michael Kupersteine45af542015-06-30 13:36:19 +00004162static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004163_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4164 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4165 (__mmask16)-1);
4166}
4167
Michael Kupersteine45af542015-06-30 13:36:19 +00004168static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004169_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4170 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4171 __u);
4172}
4173
Michael Kupersteine45af542015-06-30 13:36:19 +00004174static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004175_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4176 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4177 (__mmask16)-1);
4178}
4179
Michael Kupersteine45af542015-06-30 13:36:19 +00004180static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004181_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4182 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4183 __u);
4184}
4185
Michael Kupersteine45af542015-06-30 13:36:19 +00004186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004187_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4188 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4189 __u);
4190}
4191
Michael Kupersteine45af542015-06-30 13:36:19 +00004192static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004193_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4194 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4195 (__mmask8)-1);
4196}
4197
Michael Kupersteine45af542015-06-30 13:36:19 +00004198static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004199_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4200 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4201 (__mmask8)-1);
4202}
4203
Michael Kupersteine45af542015-06-30 13:36:19 +00004204static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004205_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4206 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4207 __u);
4208}
4209
Michael Kupersteine45af542015-06-30 13:36:19 +00004210static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004211_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4212 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4213 (__mmask16)-1);
4214}
4215
Michael Kupersteine45af542015-06-30 13:36:19 +00004216static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004217_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4218 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4219 __u);
4220}
4221
Michael Kupersteine45af542015-06-30 13:36:19 +00004222static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004223_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4224 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4225 (__mmask16)-1);
4226}
4227
Michael Kupersteine45af542015-06-30 13:36:19 +00004228static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004229_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4230 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4231 __u);
4232}
4233
Michael Kupersteine45af542015-06-30 13:36:19 +00004234static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004235_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4236 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4237 (__mmask8)-1);
4238}
4239
Michael Kupersteine45af542015-06-30 13:36:19 +00004240static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004241_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4242 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4243 __u);
4244}
4245
Michael Kupersteine45af542015-06-30 13:36:19 +00004246static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004247_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4248 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4249 (__mmask8)-1);
4250}
4251
Michael Kupersteine45af542015-06-30 13:36:19 +00004252static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004253_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4254 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4255 __u);
4256}
4257
Michael Kupersteine45af542015-06-30 13:36:19 +00004258static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004259_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4260 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4261 (__mmask16)-1);
4262}
4263
Michael Kupersteine45af542015-06-30 13:36:19 +00004264static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004265_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4266 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4267 __u);
4268}
4269
Michael Kupersteine45af542015-06-30 13:36:19 +00004270static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004271_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4272 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4273 (__mmask16)-1);
4274}
4275
Michael Kupersteine45af542015-06-30 13:36:19 +00004276static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004277_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4278 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4279 __u);
4280}
4281
Michael Kupersteine45af542015-06-30 13:36:19 +00004282static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004283_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4284 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4285 __u);
4286}
4287
Michael Kupersteine45af542015-06-30 13:36:19 +00004288static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004289_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4290 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4291 (__mmask8)-1);
4292}
4293
Michael Kupersteine45af542015-06-30 13:36:19 +00004294static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004295_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4296 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4297 (__mmask8)-1);
4298}
4299
Michael Kupersteine45af542015-06-30 13:36:19 +00004300static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004301_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4302 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4303 __u);
4304}
4305
Michael Kupersteine45af542015-06-30 13:36:19 +00004306static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004307_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4308 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4309 (__mmask16)-1);
4310}
4311
Michael Kupersteine45af542015-06-30 13:36:19 +00004312static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004313_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4314 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4315 __u);
4316}
4317
Michael Kupersteine45af542015-06-30 13:36:19 +00004318static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004319_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4320 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4321 (__mmask16)-1);
4322}
4323
Michael Kupersteine45af542015-06-30 13:36:19 +00004324static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004325_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4326 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4327 __u);
4328}
4329
Michael Kupersteine45af542015-06-30 13:36:19 +00004330static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004331_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4332 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4333 (__mmask8)-1);
4334}
4335
Michael Kupersteine45af542015-06-30 13:36:19 +00004336static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004337_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4338 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4339 __u);
4340}
4341
Michael Kupersteine45af542015-06-30 13:36:19 +00004342static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004343_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4344 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4345 (__mmask8)-1);
4346}
4347
Michael Kupersteine45af542015-06-30 13:36:19 +00004348static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004349_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4350 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4351 __u);
4352}
4353
Michael Kupersteine45af542015-06-30 13:36:19 +00004354static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004355_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4356 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4357 (__mmask16)-1);
4358}
4359
Michael Kupersteine45af542015-06-30 13:36:19 +00004360static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004361_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4362 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4363 __u);
4364}
4365
Michael Kupersteine45af542015-06-30 13:36:19 +00004366static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004367_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4368 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4369 (__mmask16)-1);
4370}
4371
Michael Kupersteine45af542015-06-30 13:36:19 +00004372static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004373_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4374 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4375 __u);
4376}
4377
Michael Kupersteine45af542015-06-30 13:36:19 +00004378static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004379_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4380 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4381 (__mmask8)-1);
4382}
4383
Michael Kupersteine45af542015-06-30 13:36:19 +00004384static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004385_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4386 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4387 __u);
4388}
4389
Michael Kupersteine45af542015-06-30 13:36:19 +00004390static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004391_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4392 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4393 (__mmask8)-1);
4394}
4395
Michael Kupersteine45af542015-06-30 13:36:19 +00004396static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004397_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4398 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4399 __u);
4400}
4401
Michael Kupersteine45af542015-06-30 13:36:19 +00004402static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004403_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4404 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4405 (__mmask16)-1);
4406}
4407
Michael Kupersteine45af542015-06-30 13:36:19 +00004408static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004409_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4410 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4411 __u);
4412}
4413
Michael Kupersteine45af542015-06-30 13:36:19 +00004414static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004415_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4416 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4417 (__mmask16)-1);
4418}
4419
Michael Kupersteine45af542015-06-30 13:36:19 +00004420static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004421_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4422 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4423 __u);
4424}
4425
Michael Kupersteine45af542015-06-30 13:36:19 +00004426static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004427_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4428 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4429 (__mmask8)-1);
4430}
4431
Michael Kupersteine45af542015-06-30 13:36:19 +00004432static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004433_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4434 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4435 __u);
4436}
4437
Michael Kupersteine45af542015-06-30 13:36:19 +00004438static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004439_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4440 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4441 (__mmask8)-1);
4442}
4443
Michael Kupersteine45af542015-06-30 13:36:19 +00004444static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004445_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4446 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4447 __u);
4448}
4449
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004450static __inline__ __m512i __DEFAULT_FN_ATTRS
4451_mm512_cvtepi8_epi32 (__m128i __A)
4452{
4453 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4454 (__v16si)
4455 _mm512_setzero_si512 (),
4456 (__mmask16) -1);
4457}
4458
4459static __inline__ __m512i __DEFAULT_FN_ATTRS
4460_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4461{
4462 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4463 (__v16si) __W,
4464 (__mmask16) __U);
4465}
4466
4467static __inline__ __m512i __DEFAULT_FN_ATTRS
4468_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4469{
4470 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4471 (__v16si)
4472 _mm512_setzero_si512 (),
4473 (__mmask16) __U);
4474}
4475
4476static __inline__ __m512i __DEFAULT_FN_ATTRS
4477_mm512_cvtepi8_epi64 (__m128i __A)
4478{
4479 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4480 (__v8di)
4481 _mm512_setzero_si512 (),
4482 (__mmask8) -1);
4483}
4484
4485static __inline__ __m512i __DEFAULT_FN_ATTRS
4486_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4487{
4488 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4489 (__v8di) __W,
4490 (__mmask8) __U);
4491}
4492
4493static __inline__ __m512i __DEFAULT_FN_ATTRS
4494_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4495{
4496 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4497 (__v8di)
4498 _mm512_setzero_si512 (),
4499 (__mmask8) __U);
4500}
4501
4502static __inline__ __m512i __DEFAULT_FN_ATTRS
4503_mm512_cvtepi32_epi64 (__m256i __X)
4504{
4505 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4506 (__v8di)
4507 _mm512_setzero_si512 (),
4508 (__mmask8) -1);
4509}
4510
4511static __inline__ __m512i __DEFAULT_FN_ATTRS
4512_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4513{
4514 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4515 (__v8di) __W,
4516 (__mmask8) __U);
4517}
4518
4519static __inline__ __m512i __DEFAULT_FN_ATTRS
4520_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4521{
4522 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4523 (__v8di)
4524 _mm512_setzero_si512 (),
4525 (__mmask8) __U);
4526}
4527
4528static __inline__ __m512i __DEFAULT_FN_ATTRS
4529_mm512_cvtepi16_epi32 (__m256i __A)
4530{
4531 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4532 (__v16si)
4533 _mm512_setzero_si512 (),
4534 (__mmask16) -1);
4535}
4536
4537static __inline__ __m512i __DEFAULT_FN_ATTRS
4538_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4539{
4540 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4541 (__v16si) __W,
4542 (__mmask16) __U);
4543}
4544
4545static __inline__ __m512i __DEFAULT_FN_ATTRS
4546_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4547{
4548 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4549 (__v16si)
4550 _mm512_setzero_si512 (),
4551 (__mmask16) __U);
4552}
4553
4554static __inline__ __m512i __DEFAULT_FN_ATTRS
4555_mm512_cvtepi16_epi64 (__m128i __A)
4556{
4557 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4558 (__v8di)
4559 _mm512_setzero_si512 (),
4560 (__mmask8) -1);
4561}
4562
4563static __inline__ __m512i __DEFAULT_FN_ATTRS
4564_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4565{
4566 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4567 (__v8di) __W,
4568 (__mmask8) __U);
4569}
4570
4571static __inline__ __m512i __DEFAULT_FN_ATTRS
4572_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4573{
4574 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4575 (__v8di)
4576 _mm512_setzero_si512 (),
4577 (__mmask8) __U);
4578}
4579
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004580static __inline__ __m512i __DEFAULT_FN_ATTRS
4581_mm512_cvtepu8_epi32 (__m128i __A)
4582{
4583 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4584 (__v16si)
4585 _mm512_setzero_si512 (),
4586 (__mmask16) -1);
4587}
4588
4589static __inline__ __m512i __DEFAULT_FN_ATTRS
4590_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4591{
4592 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4593 (__v16si) __W,
4594 (__mmask16) __U);
4595}
4596
4597static __inline__ __m512i __DEFAULT_FN_ATTRS
4598_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4599{
4600 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4601 (__v16si)
4602 _mm512_setzero_si512 (),
4603 (__mmask16) __U);
4604}
4605
4606static __inline__ __m512i __DEFAULT_FN_ATTRS
4607_mm512_cvtepu8_epi64 (__m128i __A)
4608{
4609 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4610 (__v8di)
4611 _mm512_setzero_si512 (),
4612 (__mmask8) -1);
4613}
4614
4615static __inline__ __m512i __DEFAULT_FN_ATTRS
4616_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4617{
4618 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4619 (__v8di) __W,
4620 (__mmask8) __U);
4621}
4622
4623static __inline__ __m512i __DEFAULT_FN_ATTRS
4624_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4625{
4626 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4627 (__v8di)
4628 _mm512_setzero_si512 (),
4629 (__mmask8) __U);
4630}
4631
4632static __inline__ __m512i __DEFAULT_FN_ATTRS
4633_mm512_cvtepu32_epi64 (__m256i __X)
4634{
4635 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4636 (__v8di)
4637 _mm512_setzero_si512 (),
4638 (__mmask8) -1);
4639}
4640
4641static __inline__ __m512i __DEFAULT_FN_ATTRS
4642_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4643{
4644 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4645 (__v8di) __W,
4646 (__mmask8) __U);
4647}
4648
4649static __inline__ __m512i __DEFAULT_FN_ATTRS
4650_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4651{
4652 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4653 (__v8di)
4654 _mm512_setzero_si512 (),
4655 (__mmask8) __U);
4656}
4657
4658static __inline__ __m512i __DEFAULT_FN_ATTRS
4659_mm512_cvtepu16_epi32 (__m256i __A)
4660{
4661 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4662 (__v16si)
4663 _mm512_setzero_si512 (),
4664 (__mmask16) -1);
4665}
4666
4667static __inline__ __m512i __DEFAULT_FN_ATTRS
4668_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4669{
4670 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4671 (__v16si) __W,
4672 (__mmask16) __U);
4673}
4674
4675static __inline__ __m512i __DEFAULT_FN_ATTRS
4676_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4677{
4678 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4679 (__v16si)
4680 _mm512_setzero_si512 (),
4681 (__mmask16) __U);
4682}
4683
4684static __inline__ __m512i __DEFAULT_FN_ATTRS
4685_mm512_cvtepu16_epi64 (__m128i __A)
4686{
4687 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4688 (__v8di)
4689 _mm512_setzero_si512 (),
4690 (__mmask8) -1);
4691}
4692
4693static __inline__ __m512i __DEFAULT_FN_ATTRS
4694_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4695{
4696 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4697 (__v8di) __W,
4698 (__mmask8) __U);
4699}
4700
4701static __inline__ __m512i __DEFAULT_FN_ATTRS
4702_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4703{
4704 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4705 (__v8di)
4706 _mm512_setzero_si512 (),
4707 (__mmask8) __U);
4708}
4709
Michael Zuckermane98cc742016-02-23 15:59:47 +00004710static __inline__ __m512i __DEFAULT_FN_ATTRS
4711_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4712{
4713 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4714 (__v16si) __B,
4715 (__v16si)
4716 _mm512_setzero_si512 (),
4717 (__mmask16) -1);
4718}
4719
4720static __inline__ __m512i __DEFAULT_FN_ATTRS
4721_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4722{
4723 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4724 (__v16si) __B,
4725 (__v16si) __W,
4726 (__mmask16) __U);
4727}
4728
4729static __inline__ __m512i __DEFAULT_FN_ATTRS
4730_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4731{
4732 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4733 (__v16si) __B,
4734 (__v16si)
4735 _mm512_setzero_si512 (),
4736 (__mmask16) __U);
4737}
4738
4739static __inline__ __m512i __DEFAULT_FN_ATTRS
4740_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4741{
4742 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4743 (__v8di) __B,
4744 (__v8di)
4745 _mm512_setzero_si512 (),
4746 (__mmask8) -1);
4747}
4748
4749static __inline__ __m512i __DEFAULT_FN_ATTRS
4750_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4751{
4752 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4753 (__v8di) __B,
4754 (__v8di) __W,
4755 (__mmask8) __U);
4756}
4757
4758static __inline__ __m512i __DEFAULT_FN_ATTRS
4759_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4760{
4761 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4762 (__v8di) __B,
4763 (__v8di)
4764 _mm512_setzero_si512 (),
4765 (__mmask8) __U);
4766}
4767
4768
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004769
Craig Topper4cac1c22015-01-25 23:30:07 +00004770#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004771 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004772 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004773 (__mmask16)-1); })
4774
4775#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004776 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004777 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004778 (__mmask16)-1); })
4779
4780#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004781 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004782 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004783 (__mmask8)-1); })
4784
4785#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004786 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004787 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004788 (__mmask8)-1); })
4789
4790#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004791 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004792 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004793 (__mmask16)(m)); })
4794
4795#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004796 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004797 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004798 (__mmask16)(m)); })
4799
4800#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004801 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004802 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004803 (__mmask8)(m)); })
4804
4805#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004806 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004807 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004808 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004809
Michael Zuckerman38a27272016-02-22 09:05:41 +00004810#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004811 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4812 (__v16si)_mm512_setzero_si512(), \
4813 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004814
4815#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004816 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4817 (__v16si)(__m512i)(W), \
4818 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004819
4820#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004821 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4822 (__v16si)_mm512_setzero_si512(), \
4823 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004824
4825#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004826 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4827 (__v8di)_mm512_setzero_si512(), \
4828 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004829
4830#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004831 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4832 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004833
4834#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004835 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4836 (__v8di)_mm512_setzero_si512(), \
4837 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004838static __inline__ __m512i __DEFAULT_FN_ATTRS
4839_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4840{
4841 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4842 (__v16si) __B,
4843 (__v16si)
4844 _mm512_setzero_si512 (),
4845 (__mmask16) -1);
4846}
4847
4848static __inline__ __m512i __DEFAULT_FN_ATTRS
4849_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4850{
4851 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4852 (__v16si) __B,
4853 (__v16si) __W,
4854 (__mmask16) __U);
4855}
4856
4857static __inline__ __m512i __DEFAULT_FN_ATTRS
4858_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4859{
4860 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4861 (__v16si) __B,
4862 (__v16si)
4863 _mm512_setzero_si512 (),
4864 (__mmask16) __U);
4865}
4866
4867static __inline__ __m512i __DEFAULT_FN_ATTRS
4868_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4869{
4870 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4871 (__v8di) __B,
4872 (__v8di)
4873 _mm512_setzero_si512 (),
4874 (__mmask8) -1);
4875}
4876
4877static __inline__ __m512i __DEFAULT_FN_ATTRS
4878_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4879{
4880 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4881 (__v8di) __B,
4882 (__v8di) __W,
4883 (__mmask8) __U);
4884}
4885
4886static __inline__ __m512i __DEFAULT_FN_ATTRS
4887_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4888{
4889 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4890 (__v8di) __B,
4891 (__v8di)
4892 _mm512_setzero_si512 (),
4893 (__mmask8) __U);
4894}
4895
Craig Topper8c18e112016-05-17 04:41:50 +00004896#define _mm512_ror_epi32(A, B) __extension__ ({ \
4897 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4898 (__v16si)_mm512_setzero_si512(), \
4899 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004900
Craig Topper8c18e112016-05-17 04:41:50 +00004901#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4902 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4903 (__v16si)(__m512i)(W), \
4904 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004905
Craig Topper8c18e112016-05-17 04:41:50 +00004906#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
4907 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4908 (__v16si)_mm512_setzero_si512(), \
4909 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004910
Craig Topper8c18e112016-05-17 04:41:50 +00004911#define _mm512_ror_epi64(A, B) __extension__ ({ \
4912 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4913 (__v8di)_mm512_setzero_si512(), \
4914 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004915
Craig Topper8c18e112016-05-17 04:41:50 +00004916#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4917 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4918 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004919
Craig Topper8c18e112016-05-17 04:41:50 +00004920#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
4921 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4922 (__v8di)_mm512_setzero_si512(), \
4923 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004924
Craig Topper8c18e112016-05-17 04:41:50 +00004925#define _mm512_slli_epi32(A, B) __extension__ ({ \
4926 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4927 (__v16si)_mm512_setzero_si512(), \
4928 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004929
Craig Topper8c18e112016-05-17 04:41:50 +00004930#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
4931 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4932 (__v16si)(__m512i)(W), \
4933 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004934
Craig Topper8c18e112016-05-17 04:41:50 +00004935#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
4936 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4937 (__v16si)_mm512_setzero_si512(), \
4938 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004939
Craig Topper8c18e112016-05-17 04:41:50 +00004940#define _mm512_slli_epi64(A, B) __extension__ ({ \
4941 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4942 (__v8di)_mm512_setzero_si512(), \
4943 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004944
Craig Topper8c18e112016-05-17 04:41:50 +00004945#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
4946 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4947 (__v8di)(__m512i)(W), \
4948 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004949
Craig Topper8c18e112016-05-17 04:41:50 +00004950#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
4951 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4952 (__v8di)_mm512_setzero_si512(), \
4953 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004954
Michael Zuckerman38a27272016-02-22 09:05:41 +00004955
Michael Zuckermand176d742016-03-01 17:49:03 +00004956
Craig Topper8c18e112016-05-17 04:41:50 +00004957#define _mm512_srli_epi32(A, B) __extension__ ({ \
4958 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4959 (__v16si)_mm512_setzero_si512(), \
4960 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004961
Craig Topper8c18e112016-05-17 04:41:50 +00004962#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
4963 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4964 (__v16si)(__m512i)(W), \
4965 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004966
Craig Topper8c18e112016-05-17 04:41:50 +00004967#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
4968 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4969 (__v16si)_mm512_setzero_si512(), \
4970 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004971
Craig Topper8c18e112016-05-17 04:41:50 +00004972#define _mm512_srli_epi64(A, B) __extension__ ({ \
4973 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4974 (__v8di)_mm512_setzero_si512(), \
4975 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004976
Craig Topper8c18e112016-05-17 04:41:50 +00004977#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
4978 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4979 (__v8di)(__m512i)(W), \
4980 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004981
Craig Topper8c18e112016-05-17 04:41:50 +00004982#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
4983 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4984 (__v8di)_mm512_setzero_si512(), \
4985 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004986
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004987static __inline__ __m512i __DEFAULT_FN_ATTRS
4988_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4989{
4990 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4991 (__v16si) __W,
4992 (__mmask16) __U);
4993}
4994
4995static __inline__ __m512i __DEFAULT_FN_ATTRS
4996_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4997{
4998 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4999 (__v16si)
5000 _mm512_setzero_si512 (),
5001 (__mmask16) __U);
5002}
5003
5004static __inline__ void __DEFAULT_FN_ATTRS
5005_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5006{
5007 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5008 (__mmask16) __U);
5009}
5010
5011static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005012_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5013{
5014 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5015 (__v16si) __W,
5016 (__mmask16) __U);
5017}
5018
5019static __inline__ __m512i __DEFAULT_FN_ATTRS
5020_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5021{
5022 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5023 (__v16si)
5024 _mm512_setzero_si512 (),
5025 (__mmask16) __U);
5026}
5027
5028static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005029_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5030{
5031 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5032 (__v8di) __W,
5033 (__mmask8) __U);
5034}
5035
5036static __inline__ __m512i __DEFAULT_FN_ATTRS
5037_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5038{
5039 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5040 (__v8di)
5041 _mm512_setzero_si512 (),
5042 (__mmask8) __U);
5043}
5044
5045static __inline__ __m512i __DEFAULT_FN_ATTRS
5046_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5047{
5048 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5049 (__v8di) __W,
5050 (__mmask8) __U);
5051}
5052
5053static __inline__ __m512i __DEFAULT_FN_ATTRS
5054_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5055{
5056 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5057 (__v8di)
5058 _mm512_setzero_si512 (),
5059 (__mmask8) __U);
5060}
5061
5062static __inline__ void __DEFAULT_FN_ATTRS
5063_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5064{
5065 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5066 (__mmask8) __U);
5067}
5068
5069
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005070
5071static __inline__ __m512d __DEFAULT_FN_ATTRS
5072_mm512_movedup_pd (__m512d __A)
5073{
5074 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5075 (__v8df)
5076 _mm512_undefined_pd (),
5077 (__mmask8) -1);
5078}
5079
5080static __inline__ __m512d __DEFAULT_FN_ATTRS
5081_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5082{
5083 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5084 (__v8df) __W,
5085 (__mmask8) __U);
5086}
5087
5088static __inline__ __m512d __DEFAULT_FN_ATTRS
5089_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5090{
5091 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5092 (__v8df)
5093 _mm512_setzero_pd (),
5094 (__mmask8) __U);
5095}
5096
Craig Topper8c18e112016-05-17 04:41:50 +00005097#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5098 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5099 (__v8df)(__m512d)(B), \
5100 (__v8di)(__m512i)(C), (int)(imm), \
5101 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005102
Craig Topper8c18e112016-05-17 04:41:50 +00005103#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5104 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5105 (__v8df)(__m512d)(B), \
5106 (__v8di)(__m512i)(C), (int)(imm), \
5107 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005108
Craig Topper8c18e112016-05-17 04:41:50 +00005109#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5110 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5111 (__v8df)(__m512d)(B), \
5112 (__v8di)(__m512i)(C), (int)(imm), \
5113 (__mmask8)-1, \
5114 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005115
Craig Topper8c18e112016-05-17 04:41:50 +00005116#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5117 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5118 (__v8df)(__m512d)(B), \
5119 (__v8di)(__m512i)(C), (int)(imm), \
5120 (__mmask8)(U), \
5121 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005122
Craig Topper8c18e112016-05-17 04:41:50 +00005123#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5124 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5125 (__v8df)(__m512d)(B), \
5126 (__v8di)(__m512i)(C), \
5127 (int)(imm), (__mmask8)(U), \
5128 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005129
Craig Topper8c18e112016-05-17 04:41:50 +00005130#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5131 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5132 (__v8df)(__m512d)(B), \
5133 (__v8di)(__m512i)(C), \
5134 (int)(imm), (__mmask8)(U), \
5135 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005136
Craig Topper8c18e112016-05-17 04:41:50 +00005137#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5138 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5139 (__v16sf)(__m512)(B), \
5140 (__v16si)(__m512i)(C), (int)(imm), \
5141 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005142
Craig Topper8c18e112016-05-17 04:41:50 +00005143#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5144 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5145 (__v16sf)(__m512)(B), \
5146 (__v16si)(__m512i)(C), (int)(imm), \
5147 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005148
Craig Topper8c18e112016-05-17 04:41:50 +00005149#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5150 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5151 (__v16sf)(__m512)(B), \
5152 (__v16si)(__m512i)(C), (int)(imm), \
5153 (__mmask16)-1, \
5154 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005155
Craig Topper8c18e112016-05-17 04:41:50 +00005156#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5157 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5158 (__v16sf)(__m512)(B), \
5159 (__v16si)(__m512i)(C), (int)(imm), \
5160 (__mmask16)(U), \
5161 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005162
Craig Topper8c18e112016-05-17 04:41:50 +00005163#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5164 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5165 (__v16sf)(__m512)(B), \
5166 (__v16si)(__m512i)(C), \
5167 (int)(imm), (__mmask16)(U), \
5168 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005169
Craig Topper8c18e112016-05-17 04:41:50 +00005170#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5171 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5172 (__v16sf)(__m512)(B), \
5173 (__v16si)(__m512i)(C), \
5174 (int)(imm), (__mmask16)(U), \
5175 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005176
Craig Topper8c18e112016-05-17 04:41:50 +00005177#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5178 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5179 (__v2df)(__m128d)(B), \
5180 (__v2di)(__m128i)(C), (int)(imm), \
5181 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005182
Craig Topper8c18e112016-05-17 04:41:50 +00005183#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5184 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5185 (__v2df)(__m128d)(B), \
5186 (__v2di)(__m128i)(C), (int)(imm), \
5187 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005188
Craig Topper8c18e112016-05-17 04:41:50 +00005189#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5190 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5191 (__v2df)(__m128d)(B), \
5192 (__v2di)(__m128i)(C), (int)(imm), \
5193 (__mmask8)-1, \
5194 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005195
Craig Topper8c18e112016-05-17 04:41:50 +00005196#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5197 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5198 (__v2df)(__m128d)(B), \
5199 (__v2di)(__m128i)(C), (int)(imm), \
5200 (__mmask8)(U), \
5201 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005202
Craig Topper8c18e112016-05-17 04:41:50 +00005203#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5204 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5205 (__v2df)(__m128d)(B), \
5206 (__v2di)(__m128i)(C), (int)(imm), \
5207 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005208
Craig Topper8c18e112016-05-17 04:41:50 +00005209#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5210 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5211 (__v2df)(__m128d)(B), \
5212 (__v2di)(__m128i)(C), (int)(imm), \
5213 (__mmask8)(U), \
5214 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005215
Craig Topper8c18e112016-05-17 04:41:50 +00005216#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5217 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5218 (__v4sf)(__m128)(B), \
5219 (__v4si)(__m128i)(C), (int)(imm), \
5220 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005221
Craig Topper8c18e112016-05-17 04:41:50 +00005222#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5223 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5224 (__v4sf)(__m128)(B), \
5225 (__v4si)(__m128i)(C), (int)(imm), \
5226 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005227
Craig Topper8c18e112016-05-17 04:41:50 +00005228#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5229 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5230 (__v4sf)(__m128)(B), \
5231 (__v4si)(__m128i)(C), (int)(imm), \
5232 (__mmask8)-1, \
5233 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005234
Craig Topper8c18e112016-05-17 04:41:50 +00005235#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5236 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5237 (__v4sf)(__m128)(B), \
5238 (__v4si)(__m128i)(C), (int)(imm), \
5239 (__mmask8)(U), \
5240 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005241
Craig Topper8c18e112016-05-17 04:41:50 +00005242#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5243 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5244 (__v4sf)(__m128)(B), \
5245 (__v4si)(__m128i)(C), (int)(imm), \
5246 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005247
Craig Topper8c18e112016-05-17 04:41:50 +00005248#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5249 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5250 (__v4sf)(__m128)(B), \
5251 (__v4si)(__m128i)(C), (int)(imm), \
5252 (__mmask8)(U), \
5253 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005254
Craig Topper8c18e112016-05-17 04:41:50 +00005255#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5256 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5257 (__v2df)(__m128d)(B), \
5258 (__v2df)_mm_setzero_pd(), \
5259 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005260
5261
5262static __inline__ __m128d __DEFAULT_FN_ATTRS
5263_mm_getexp_sd (__m128d __A, __m128d __B)
5264{
5265 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5266 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5267}
5268
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005269static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005270_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005271{
5272 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5273 (__v2df) __B,
5274 (__v2df) __W,
5275 (__mmask8) __U,
5276 _MM_FROUND_CUR_DIRECTION);
5277}
5278
Craig Topper8c18e112016-05-17 04:41:50 +00005279#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5280 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5281 (__v2df)(__m128d)(B), \
5282 (__v2df)(__m128d)(W), \
5283 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005284
5285static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005286_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005287{
5288 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5289 (__v2df) __B,
5290 (__v2df) _mm_setzero_pd (),
5291 (__mmask8) __U,
5292 _MM_FROUND_CUR_DIRECTION);
5293}
5294
Craig Topper8c18e112016-05-17 04:41:50 +00005295#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5296 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5297 (__v2df)(__m128d)(B), \
5298 (__v2df)_mm_setzero_pd(), \
5299 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005300
Craig Topper8c18e112016-05-17 04:41:50 +00005301#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5302 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5303 (__v4sf)(__m128)(B), \
5304 (__v4sf)_mm_setzero_ps(), \
5305 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005306
5307static __inline__ __m128 __DEFAULT_FN_ATTRS
5308_mm_getexp_ss (__m128 __A, __m128 __B)
5309{
5310 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5311 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5312}
5313
Craig Topper58187d32016-05-17 04:41:29 +00005314static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005315_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005316{
Craig Topper58187d32016-05-17 04:41:29 +00005317 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005318 (__v4sf) __B,
5319 (__v4sf) __W,
5320 (__mmask8) __U,
5321 _MM_FROUND_CUR_DIRECTION);
5322}
5323
Craig Topper8c18e112016-05-17 04:41:50 +00005324#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5325 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5326 (__v4sf)(__m128)(B), \
5327 (__v4sf)(__m128)(W), \
5328 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005329
Craig Topper58187d32016-05-17 04:41:29 +00005330static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005331_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005332{
Craig Topper58187d32016-05-17 04:41:29 +00005333 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005334 (__v4sf) __B,
5335 (__v4sf) _mm_setzero_pd (),
5336 (__mmask8) __U,
5337 _MM_FROUND_CUR_DIRECTION);
5338}
5339
Craig Topper8c18e112016-05-17 04:41:50 +00005340#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5341 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5342 (__v4sf)(__m128)(B), \
5343 (__v4sf)_mm_setzero_ps(), \
5344 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005345
Craig Topper8c18e112016-05-17 04:41:50 +00005346#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5347 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5348 (__v2df)(__m128d)(B), \
5349 (int)(((D)<<2) | (C)), \
5350 (__v2df)_mm_setzero_pd(), \
5351 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005352
Craig Topper8c18e112016-05-17 04:41:50 +00005353#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5354 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5355 (__v2df)(__m128d)(B), \
5356 (int)(((D)<<2) | (C)), \
5357 (__v2df)_mm_setzero_pd(), \
5358 (__mmask8)-1, \
5359 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005360
Craig Topper8c18e112016-05-17 04:41:50 +00005361#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5362 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5363 (__v2df)(__m128d)(B), \
5364 (int)(((D)<<2) | (C)), \
5365 (__v2df)(__m128d)(W), \
5366 (__mmask8)(U), \
5367 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005368
Craig Topper8c18e112016-05-17 04:41:50 +00005369#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5370 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5371 (__v2df)(__m128d)(B), \
5372 (int)(((D)<<2) | (C)), \
5373 (__v2df)(__m128d)(W), \
5374 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005375
Craig Topper8c18e112016-05-17 04:41:50 +00005376#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5377 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5378 (__v2df)(__m128d)(B), \
5379 (int)(((D)<<2) | (C)), \
5380 (__v2df)_mm_setzero_pd(), \
5381 (__mmask8)(U), \
5382 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005383
Craig Topper8c18e112016-05-17 04:41:50 +00005384#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5385 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5386 (__v2df)(__m128d)(B), \
5387 (int)(((D)<<2) | (C)), \
5388 (__v2df)_mm_setzero_pd(), \
5389 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005390
Craig Topper8c18e112016-05-17 04:41:50 +00005391#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5392 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5393 (__v4sf)(__m128)(B), \
5394 (int)(((D)<<2) | (C)), \
5395 (__v4sf)_mm_setzero_ps(), \
5396 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005397
Craig Topper8c18e112016-05-17 04:41:50 +00005398#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5399 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5400 (__v4sf)(__m128)(B), \
5401 (int)(((D)<<2) | (C)), \
5402 (__v4sf)_mm_setzero_ps(), \
5403 (__mmask8)-1, \
5404 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005405
Craig Topper8c18e112016-05-17 04:41:50 +00005406#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5407 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5408 (__v4sf)(__m128)(B), \
5409 (int)(((D)<<2) | (C)), \
5410 (__v4sf)(__m128)(W), \
5411 (__mmask8)(U), \
5412 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005413
Craig Topper8c18e112016-05-17 04:41:50 +00005414#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5415 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5416 (__v4sf)(__m128)(B), \
5417 (int)(((D)<<2) | (C)), \
5418 (__v4sf)(__m128)(W), \
5419 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005420
Craig Topper8c18e112016-05-17 04:41:50 +00005421#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5422 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5423 (__v4sf)(__m128)(B), \
5424 (int)(((D)<<2) | (C)), \
5425 (__v4sf)_mm_setzero_pd(), \
5426 (__mmask8)(U), \
5427 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005428
Craig Topper8c18e112016-05-17 04:41:50 +00005429#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5430 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5431 (__v4sf)(__m128)(B), \
5432 (int)(((D)<<2) | (C)), \
5433 (__v4sf)_mm_setzero_ps(), \
5434 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005435
5436static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5437_mm512_kmov (__mmask16 __A)
5438{
5439 return __A;
5440}
5441
Craig Topper8c18e112016-05-17 04:41:50 +00005442#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5443 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5444 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005445
Craig Topper8c18e112016-05-17 04:41:50 +00005446#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5447 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5448 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005449
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005450static __inline__ __m512d __DEFAULT_FN_ATTRS
5451_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5452{
5453 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5454 (__v8df) __B,
5455 (__v8df) __W,
5456 (__mmask8) __U);
5457}
Craig Topper8c18e112016-05-17 04:41:50 +00005458#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5459 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005460static __inline__ __m512i __DEFAULT_FN_ATTRS
5461_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5462 __mmask16 __U, __m512i __B)
5463{
5464 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5465 (__v16si) __I
5466 /* idx */ ,
5467 (__v16si) __B,
5468 (__mmask16) __U);
5469}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005470static __inline__ __m512i __DEFAULT_FN_ATTRS
5471_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5472{
5473 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5474 (__v16si) __B,
5475 (__v16si)
5476 _mm512_setzero_si512 (),
5477 (__mmask16) -1);
5478}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005479
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005480static __inline__ __m512i __DEFAULT_FN_ATTRS
5481_mm512_sll_epi32 (__m512i __A, __m128i __B)
5482{
5483 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5484 (__v4si) __B,
5485 (__v16si)
5486 _mm512_setzero_si512 (),
5487 (__mmask16) -1);
5488}
5489
5490static __inline__ __m512i __DEFAULT_FN_ATTRS
5491_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5492{
5493 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5494 (__v4si) __B,
5495 (__v16si) __W,
5496 (__mmask16) __U);
5497}
5498
5499static __inline__ __m512i __DEFAULT_FN_ATTRS
5500_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5501{
5502 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5503 (__v4si) __B,
5504 (__v16si)
5505 _mm512_setzero_si512 (),
5506 (__mmask16) __U);
5507}
5508
5509static __inline__ __m512i __DEFAULT_FN_ATTRS
5510_mm512_sll_epi64 (__m512i __A, __m128i __B)
5511{
5512 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5513 (__v2di) __B,
5514 (__v8di)
5515 _mm512_setzero_si512 (),
5516 (__mmask8) -1);
5517}
5518
5519static __inline__ __m512i __DEFAULT_FN_ATTRS
5520_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5521{
5522 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5523 (__v2di) __B,
5524 (__v8di) __W,
5525 (__mmask8) __U);
5526}
5527
5528static __inline__ __m512i __DEFAULT_FN_ATTRS
5529_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5530{
5531 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5532 (__v2di) __B,
5533 (__v8di)
5534 _mm512_setzero_si512 (),
5535 (__mmask8) __U);
5536}
5537
5538static __inline__ __m512i __DEFAULT_FN_ATTRS
5539_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5540{
5541 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5542 (__v16si) __Y,
5543 (__v16si)
5544 _mm512_setzero_si512 (),
5545 (__mmask16) -1);
5546}
5547
5548static __inline__ __m512i __DEFAULT_FN_ATTRS
5549_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5550{
5551 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5552 (__v16si) __Y,
5553 (__v16si) __W,
5554 (__mmask16) __U);
5555}
5556
5557static __inline__ __m512i __DEFAULT_FN_ATTRS
5558_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5559{
5560 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5561 (__v16si) __Y,
5562 (__v16si)
5563 _mm512_setzero_si512 (),
5564 (__mmask16) __U);
5565}
5566
5567static __inline__ __m512i __DEFAULT_FN_ATTRS
5568_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5569{
5570 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5571 (__v8di) __Y,
5572 (__v8di)
5573 _mm512_undefined_pd (),
5574 (__mmask8) -1);
5575}
5576
5577static __inline__ __m512i __DEFAULT_FN_ATTRS
5578_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5579{
5580 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5581 (__v8di) __Y,
5582 (__v8di) __W,
5583 (__mmask8) __U);
5584}
5585
5586static __inline__ __m512i __DEFAULT_FN_ATTRS
5587_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5588{
5589 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5590 (__v8di) __Y,
5591 (__v8di)
5592 _mm512_setzero_si512 (),
5593 (__mmask8) __U);
5594}
5595
5596static __inline__ __m512i __DEFAULT_FN_ATTRS
5597_mm512_sra_epi32 (__m512i __A, __m128i __B)
5598{
5599 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5600 (__v4si) __B,
5601 (__v16si)
5602 _mm512_setzero_si512 (),
5603 (__mmask16) -1);
5604}
5605
5606static __inline__ __m512i __DEFAULT_FN_ATTRS
5607_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5608{
5609 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5610 (__v4si) __B,
5611 (__v16si) __W,
5612 (__mmask16) __U);
5613}
5614
5615static __inline__ __m512i __DEFAULT_FN_ATTRS
5616_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5617{
5618 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5619 (__v4si) __B,
5620 (__v16si)
5621 _mm512_setzero_si512 (),
5622 (__mmask16) __U);
5623}
5624
5625static __inline__ __m512i __DEFAULT_FN_ATTRS
5626_mm512_sra_epi64 (__m512i __A, __m128i __B)
5627{
5628 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5629 (__v2di) __B,
5630 (__v8di)
5631 _mm512_setzero_si512 (),
5632 (__mmask8) -1);
5633}
5634
5635static __inline__ __m512i __DEFAULT_FN_ATTRS
5636_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5637{
5638 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5639 (__v2di) __B,
5640 (__v8di) __W,
5641 (__mmask8) __U);
5642}
5643
5644static __inline__ __m512i __DEFAULT_FN_ATTRS
5645_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5646{
5647 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5648 (__v2di) __B,
5649 (__v8di)
5650 _mm512_setzero_si512 (),
5651 (__mmask8) __U);
5652}
5653
5654static __inline__ __m512i __DEFAULT_FN_ATTRS
5655_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5656{
5657 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5658 (__v16si) __Y,
5659 (__v16si)
5660 _mm512_setzero_si512 (),
5661 (__mmask16) -1);
5662}
5663
5664static __inline__ __m512i __DEFAULT_FN_ATTRS
5665_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5666{
5667 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5668 (__v16si) __Y,
5669 (__v16si) __W,
5670 (__mmask16) __U);
5671}
5672
5673static __inline__ __m512i __DEFAULT_FN_ATTRS
5674_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5675{
5676 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5677 (__v16si) __Y,
5678 (__v16si)
5679 _mm512_setzero_si512 (),
5680 (__mmask16) __U);
5681}
5682
5683static __inline__ __m512i __DEFAULT_FN_ATTRS
5684_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5685{
5686 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5687 (__v8di) __Y,
5688 (__v8di)
5689 _mm512_setzero_si512 (),
5690 (__mmask8) -1);
5691}
5692
5693static __inline__ __m512i __DEFAULT_FN_ATTRS
5694_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5695{
5696 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5697 (__v8di) __Y,
5698 (__v8di) __W,
5699 (__mmask8) __U);
5700}
5701
5702static __inline__ __m512i __DEFAULT_FN_ATTRS
5703_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5704{
5705 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5706 (__v8di) __Y,
5707 (__v8di)
5708 _mm512_setzero_si512 (),
5709 (__mmask8) __U);
5710}
5711
5712static __inline__ __m512i __DEFAULT_FN_ATTRS
5713_mm512_srl_epi32 (__m512i __A, __m128i __B)
5714{
5715 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5716 (__v4si) __B,
5717 (__v16si)
5718 _mm512_setzero_si512 (),
5719 (__mmask16) -1);
5720}
5721
5722static __inline__ __m512i __DEFAULT_FN_ATTRS
5723_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5724{
5725 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5726 (__v4si) __B,
5727 (__v16si) __W,
5728 (__mmask16) __U);
5729}
5730
5731static __inline__ __m512i __DEFAULT_FN_ATTRS
5732_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5733{
5734 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5735 (__v4si) __B,
5736 (__v16si)
5737 _mm512_setzero_si512 (),
5738 (__mmask16) __U);
5739}
5740
5741static __inline__ __m512i __DEFAULT_FN_ATTRS
5742_mm512_srl_epi64 (__m512i __A, __m128i __B)
5743{
5744 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5745 (__v2di) __B,
5746 (__v8di)
5747 _mm512_setzero_si512 (),
5748 (__mmask8) -1);
5749}
5750
5751static __inline__ __m512i __DEFAULT_FN_ATTRS
5752_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5753{
5754 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5755 (__v2di) __B,
5756 (__v8di) __W,
5757 (__mmask8) __U);
5758}
5759
5760static __inline__ __m512i __DEFAULT_FN_ATTRS
5761_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5762{
5763 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5764 (__v2di) __B,
5765 (__v8di)
5766 _mm512_setzero_si512 (),
5767 (__mmask8) __U);
5768}
5769
5770static __inline__ __m512i __DEFAULT_FN_ATTRS
5771_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5772{
5773 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5774 (__v16si) __Y,
5775 (__v16si)
5776 _mm512_setzero_si512 (),
5777 (__mmask16) -1);
5778}
5779
5780static __inline__ __m512i __DEFAULT_FN_ATTRS
5781_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5782{
5783 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5784 (__v16si) __Y,
5785 (__v16si) __W,
5786 (__mmask16) __U);
5787}
5788
5789static __inline__ __m512i __DEFAULT_FN_ATTRS
5790_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5791{
5792 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5793 (__v16si) __Y,
5794 (__v16si)
5795 _mm512_setzero_si512 (),
5796 (__mmask16) __U);
5797}
5798
5799static __inline__ __m512i __DEFAULT_FN_ATTRS
5800_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5801{
5802 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5803 (__v8di) __Y,
5804 (__v8di)
5805 _mm512_setzero_si512 (),
5806 (__mmask8) -1);
5807}
5808
5809static __inline__ __m512i __DEFAULT_FN_ATTRS
5810_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5811{
5812 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5813 (__v8di) __Y,
5814 (__v8di) __W,
5815 (__mmask8) __U);
5816}
5817
5818static __inline__ __m512i __DEFAULT_FN_ATTRS
5819_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5820{
5821 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5822 (__v8di) __Y,
5823 (__v8di)
5824 _mm512_setzero_si512 (),
5825 (__mmask8) __U);
5826}
5827
Craig Topper8c18e112016-05-17 04:41:50 +00005828#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5829 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5830 (__v16si)(__m512i)(B), \
5831 (__v16si)(__m512i)(C), (int)(imm), \
5832 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005833
Craig Topper8c18e112016-05-17 04:41:50 +00005834#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5835 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5836 (__v16si)(__m512i)(B), \
5837 (__v16si)(__m512i)(C), (int)(imm), \
5838 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005839
Craig Topper8c18e112016-05-17 04:41:50 +00005840#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5841 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5842 (__v16si)(__m512i)(B), \
5843 (__v16si)(__m512i)(C), \
5844 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005845
Craig Topper8c18e112016-05-17 04:41:50 +00005846#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5847 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5848 (__v8di)(__m512i)(B), \
5849 (__v8di)(__m512i)(C), (int)(imm), \
5850 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005851
Craig Topper8c18e112016-05-17 04:41:50 +00005852#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
5853 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5854 (__v8di)(__m512i)(B), \
5855 (__v8di)(__m512i)(C), (int)(imm), \
5856 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005857
Craig Topper8c18e112016-05-17 04:41:50 +00005858#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
5859 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
5860 (__v8di)(__m512i)(B), \
5861 (__v8di)(__m512i)(C), (int)(imm), \
5862 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005863
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005864static __inline__ __m512d __DEFAULT_FN_ATTRS
5865_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5866{
5867 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5868 (__v8df) __B,
5869 (__v8df)
5870 _mm512_setzero_pd (),
5871 (__mmask8) __U);
5872}
5873
5874static __inline__ __m512 __DEFAULT_FN_ATTRS
5875_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5876{
5877 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5878 (__v16sf) __B,
5879 (__v16sf) __W,
5880 (__mmask16) __U);
5881}
5882
5883static __inline__ __m512 __DEFAULT_FN_ATTRS
5884_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5885{
5886 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5887 (__v16sf) __B,
5888 (__v16sf)
5889 _mm512_setzero_ps (),
5890 (__mmask16) __U);
5891}
5892
5893static __inline__ __m512d __DEFAULT_FN_ATTRS
5894_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5895{
5896 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5897 (__v8df) __B,
5898 (__v8df) __W,
5899 (__mmask8) __U);
5900}
5901
5902static __inline__ __m512d __DEFAULT_FN_ATTRS
5903_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5904{
5905 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5906 (__v8df) __B,
5907 (__v8df)
5908 _mm512_setzero_pd (),
5909 (__mmask8) __U);
5910}
5911
5912static __inline__ __m512 __DEFAULT_FN_ATTRS
5913_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5914{
5915 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5916 (__v16sf) __B,
5917 (__v16sf) __W,
5918 (__mmask16) __U);
5919}
5920
5921static __inline__ __m512 __DEFAULT_FN_ATTRS
5922_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5923{
5924 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5925 (__v16sf) __B,
5926 (__v16sf)
5927 _mm512_setzero_ps (),
5928 (__mmask16) __U);
5929}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005930
Craig Topper8c18e112016-05-17 04:41:50 +00005931#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
5932 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005933
Craig Topper8c18e112016-05-17 04:41:50 +00005934#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
5935 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005936
Craig Topper8c18e112016-05-17 04:41:50 +00005937#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
5938 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005939
Craig Topper8c18e112016-05-17 04:41:50 +00005940#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
5941 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005942
5943static __inline__ unsigned __DEFAULT_FN_ATTRS
5944_mm_cvtsd_u32 (__m128d __A)
5945{
5946 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5947 _MM_FROUND_CUR_DIRECTION);
5948}
5949
Craig Topper8c18e112016-05-17 04:41:50 +00005950#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
5951 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
5952 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005953
5954static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5955_mm_cvtsd_u64 (__m128d __A)
5956{
5957 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5958 __A,
5959 _MM_FROUND_CUR_DIRECTION);
5960}
5961
Craig Topper8c18e112016-05-17 04:41:50 +00005962#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
5963 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005964
Craig Topper8c18e112016-05-17 04:41:50 +00005965#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
5966 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005967
Craig Topper8c18e112016-05-17 04:41:50 +00005968#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
5969 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005970
Craig Topper8c18e112016-05-17 04:41:50 +00005971#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
5972 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005973
Craig Topper8c18e112016-05-17 04:41:50 +00005974#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
5975 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005976
5977static __inline__ unsigned __DEFAULT_FN_ATTRS
5978_mm_cvtss_u32 (__m128 __A)
5979{
5980 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5981 _MM_FROUND_CUR_DIRECTION);
5982}
5983
Craig Topper8c18e112016-05-17 04:41:50 +00005984#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
5985 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
5986 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005987
5988static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5989_mm_cvtss_u64 (__m128 __A)
5990{
5991 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5992 __A,
5993 _MM_FROUND_CUR_DIRECTION);
5994}
5995
Craig Topper8c18e112016-05-17 04:41:50 +00005996#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
5997 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005998
Craig Topper8c18e112016-05-17 04:41:50 +00005999#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6000 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006001
6002static __inline__ int __DEFAULT_FN_ATTRS
6003_mm_cvttsd_i32 (__m128d __A)
6004{
6005 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6006 _MM_FROUND_CUR_DIRECTION);
6007}
6008
Craig Topper8c18e112016-05-17 04:41:50 +00006009#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6010 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006011
Craig Topper8c18e112016-05-17 04:41:50 +00006012#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6013 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006014
6015static __inline__ long long __DEFAULT_FN_ATTRS
6016_mm_cvttsd_i64 (__m128d __A)
6017{
6018 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6019 _MM_FROUND_CUR_DIRECTION);
6020}
6021
Craig Topper8c18e112016-05-17 04:41:50 +00006022#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6023 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006024
6025static __inline__ unsigned __DEFAULT_FN_ATTRS
6026_mm_cvttsd_u32 (__m128d __A)
6027{
6028 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6029 _MM_FROUND_CUR_DIRECTION);
6030}
6031
Craig Topper8c18e112016-05-17 04:41:50 +00006032#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6033 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6034 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006035
6036static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6037_mm_cvttsd_u64 (__m128d __A)
6038{
6039 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6040 __A,
6041 _MM_FROUND_CUR_DIRECTION);
6042}
6043
Craig Topper8c18e112016-05-17 04:41:50 +00006044#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6045 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006046
Craig Topper8c18e112016-05-17 04:41:50 +00006047#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6048 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006049
6050static __inline__ int __DEFAULT_FN_ATTRS
6051_mm_cvttss_i32 (__m128 __A)
6052{
6053 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6054 _MM_FROUND_CUR_DIRECTION);
6055}
6056
Craig Topper8c18e112016-05-17 04:41:50 +00006057#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6058 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006059
Craig Topper8c18e112016-05-17 04:41:50 +00006060#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6061 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006062
6063static __inline__ long long __DEFAULT_FN_ATTRS
6064_mm_cvttss_i64 (__m128 __A)
6065{
6066 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6067 _MM_FROUND_CUR_DIRECTION);
6068}
6069
Craig Topper8c18e112016-05-17 04:41:50 +00006070#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6071 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006072
6073static __inline__ unsigned __DEFAULT_FN_ATTRS
6074_mm_cvttss_u32 (__m128 __A)
6075{
6076 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6077 _MM_FROUND_CUR_DIRECTION);
6078}
6079
Craig Topper8c18e112016-05-17 04:41:50 +00006080#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6081 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6082 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006083
6084static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6085_mm_cvttss_u64 (__m128 __A)
6086{
6087 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6088 __A,
6089 _MM_FROUND_CUR_DIRECTION);
6090}
6091
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006092static __inline__ __m512d __DEFAULT_FN_ATTRS
6093_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6094 __m512d __B)
6095{
6096 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6097 (__v8di) __I
6098 /* idx */ ,
6099 (__v8df) __B,
6100 (__mmask8) __U);
6101}
6102
6103static __inline__ __m512 __DEFAULT_FN_ATTRS
6104_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6105 __m512 __B)
6106{
6107 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6108 (__v16si) __I
6109 /* idx */ ,
6110 (__v16sf) __B,
6111 (__mmask16) __U);
6112}
6113
6114static __inline__ __m512i __DEFAULT_FN_ATTRS
6115_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6116 __mmask8 __U, __m512i __B)
6117{
6118 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6119 (__v8di) __I
6120 /* idx */ ,
6121 (__v8di) __B,
6122 (__mmask8) __U);
6123}
6124
Craig Topper8c18e112016-05-17 04:41:50 +00006125#define _mm512_permute_pd(X, C) __extension__ ({ \
6126 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6127 (__v8df)_mm512_undefined_pd(), \
6128 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006129
Craig Topper8c18e112016-05-17 04:41:50 +00006130#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6131 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6132 (__v8df)(__m512d)(W), \
6133 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006134
Craig Topper8c18e112016-05-17 04:41:50 +00006135#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6136 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6137 (__v8df)_mm512_setzero_pd(), \
6138 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006139
Craig Topper8c18e112016-05-17 04:41:50 +00006140#define _mm512_permute_ps(X, C) __extension__ ({ \
6141 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6142 (__v16sf)_mm512_undefined_ps(), \
6143 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006144
Craig Topper8c18e112016-05-17 04:41:50 +00006145#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6146 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6147 (__v16sf)(__m512)(W), \
6148 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006149
Craig Topper8c18e112016-05-17 04:41:50 +00006150#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6151 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6152 (__v16sf)_mm512_setzero_ps(), \
6153 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006154
6155static __inline__ __m512d __DEFAULT_FN_ATTRS
6156_mm512_permutevar_pd (__m512d __A, __m512i __C)
6157{
6158 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6159 (__v8di) __C,
6160 (__v8df)
6161 _mm512_undefined_pd (),
6162 (__mmask8) -1);
6163}
6164
6165static __inline__ __m512d __DEFAULT_FN_ATTRS
6166_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6167{
6168 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6169 (__v8di) __C,
6170 (__v8df) __W,
6171 (__mmask8) __U);
6172}
6173
6174static __inline__ __m512d __DEFAULT_FN_ATTRS
6175_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6176{
6177 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6178 (__v8di) __C,
6179 (__v8df)
6180 _mm512_setzero_pd (),
6181 (__mmask8) __U);
6182}
6183
6184static __inline__ __m512 __DEFAULT_FN_ATTRS
6185_mm512_permutevar_ps (__m512 __A, __m512i __C)
6186{
6187 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6188 (__v16si) __C,
6189 (__v16sf)
6190 _mm512_undefined_ps (),
6191 (__mmask16) -1);
6192}
6193
6194static __inline__ __m512 __DEFAULT_FN_ATTRS
6195_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6196{
6197 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6198 (__v16si) __C,
6199 (__v16sf) __W,
6200 (__mmask16) __U);
6201}
6202
6203static __inline__ __m512 __DEFAULT_FN_ATTRS
6204_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6205{
6206 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6207 (__v16si) __C,
6208 (__v16sf)
6209 _mm512_setzero_ps (),
6210 (__mmask16) __U);
6211}
6212
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006213static __inline __m512d __DEFAULT_FN_ATTRS
6214_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006215{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006216 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6217 /* idx */ ,
6218 (__v8df) __A,
6219 (__v8df) __B,
6220 (__mmask8) -1);
6221}
6222
6223static __inline__ __m512d __DEFAULT_FN_ATTRS
6224_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6225{
6226 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6227 /* idx */ ,
6228 (__v8df) __A,
6229 (__v8df) __B,
6230 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006231}
6232
6233static __inline__ __m512d __DEFAULT_FN_ATTRS
6234_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6235 __m512d __B)
6236{
6237 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006238 /* idx */ ,
6239 (__v8df) __A,
6240 (__v8df) __B,
6241 (__mmask8) __U);
6242}
6243
6244static __inline __m512 __DEFAULT_FN_ATTRS
6245_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6246{
6247 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6248 /* idx */ ,
6249 (__v16sf) __A,
6250 (__v16sf) __B,
6251 (__mmask16) -1);
6252}
6253
6254static __inline__ __m512 __DEFAULT_FN_ATTRS
6255_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6256{
6257 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6258 /* idx */ ,
6259 (__v16sf) __A,
6260 (__v16sf) __B,
6261 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006262}
6263
6264static __inline__ __m512 __DEFAULT_FN_ATTRS
6265_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6266 __m512 __B)
6267{
6268 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006269 /* idx */ ,
6270 (__v16sf) __A,
6271 (__v16sf) __B,
6272 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006273}
6274
Michael Zuckerman07525092016-04-11 10:22:07 +00006275static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6276_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6277{
6278 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6279 (__v16si) __B,
6280 (__mmask16) -1);
6281}
6282
6283static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6284_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6285{
6286 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6287 (__v16si) __B, __U);
6288}
6289
6290static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6291_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6292{
6293 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6294 (__v8di) __B,
6295 (__mmask8) -1);
6296}
6297
6298static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6299_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6300{
6301 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6302 (__v8di) __B, __U);
6303}
6304
Craig Topper8c18e112016-05-17 04:41:50 +00006305#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6306 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6307 (__v8si)_mm256_undefined_si256(), \
6308 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006309
Craig Topper8c18e112016-05-17 04:41:50 +00006310#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6311 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6312 (__v8si)(__m256i)(W), \
6313 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006314
Craig Topper8c18e112016-05-17 04:41:50 +00006315#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6316 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6317 (__v8si)_mm256_setzero_si256(), \
6318 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006319
6320static __inline__ __m256i __DEFAULT_FN_ATTRS
6321_mm512_cvttpd_epu32 (__m512d __A)
6322{
6323 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6324 (__v8si)
6325 _mm256_undefined_si256 (),
6326 (__mmask8) -1,
6327 _MM_FROUND_CUR_DIRECTION);
6328}
6329
6330static __inline__ __m256i __DEFAULT_FN_ATTRS
6331_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6332{
6333 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6334 (__v8si) __W,
6335 (__mmask8) __U,
6336 _MM_FROUND_CUR_DIRECTION);
6337}
6338
6339static __inline__ __m256i __DEFAULT_FN_ATTRS
6340_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6341{
6342 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6343 (__v8si)
6344 _mm256_setzero_si256 (),
6345 (__mmask8) __U,
6346 _MM_FROUND_CUR_DIRECTION);
6347}
Michael Zuckerman07525092016-04-11 10:22:07 +00006348
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006349static __inline__ __m512i __DEFAULT_FN_ATTRS
6350_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6351 __m512i __B)
6352{
6353 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6354 (__v16si) __B,
6355 (__v16si) __W,
6356 (__mmask16) __U);
6357}
6358
6359static __inline__ __m512i __DEFAULT_FN_ATTRS
6360_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6361{
6362 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6363 (__v16si) __B,
6364 (__v16si)
6365 _mm512_setzero_si512 (),
6366 (__mmask16) __U);
6367}
6368
6369static __inline__ __m512i __DEFAULT_FN_ATTRS
6370_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6371{
6372 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6373 (__v8di) __B,
6374 (__v8di)
6375 _mm512_setzero_si512 (),
6376 (__mmask8) -1);
6377}
6378
6379static __inline__ __m512i __DEFAULT_FN_ATTRS
6380_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6381{
6382 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6383 (__v8di) __B,
6384 (__v8di) __W,
6385 (__mmask8) __U);
6386}
6387
6388static __inline__ __m512i __DEFAULT_FN_ATTRS
6389_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6390{
6391 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6392 (__v8di) __B,
6393 (__v8di)
6394 _mm512_setzero_si512 (),
6395 (__mmask8) __U);
6396}
6397
6398static __inline__ __m512i __DEFAULT_FN_ATTRS
6399_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6400{
6401 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6402 (__v16si) __B,
6403 (__v16si)
6404 _mm512_setzero_si512 (),
6405 (__mmask16) -1);
6406}
6407
6408static __inline__ __m512i __DEFAULT_FN_ATTRS
6409_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6410 __m512i __B)
6411{
6412 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6413 (__v16si) __B,
6414 (__v16si) __W,
6415 (__mmask16) __U);
6416}
6417
6418static __inline__ __m512i __DEFAULT_FN_ATTRS
6419_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6420{
6421 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6422 (__v16si) __B,
6423 (__v16si)
6424 _mm512_setzero_si512 (),
6425 (__mmask16) __U);
6426}
6427
6428static __inline__ __m512i __DEFAULT_FN_ATTRS
6429_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6430{
6431 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6432 (__v8di) __B,
6433 (__v8di)
6434 _mm512_setzero_si512 (),
6435 (__mmask8) -1);
6436}
6437
6438static __inline__ __m512i __DEFAULT_FN_ATTRS
6439_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6440{
6441 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6442 (__v8di) __B,
6443 (__v8di) __W,
6444 (__mmask8) __U);
6445}
6446
6447static __inline__ __m512i __DEFAULT_FN_ATTRS
6448_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6449{
6450 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6451 (__v8di) __B,
6452 (__v8di)
6453 _mm512_setzero_si512 (),
6454 (__mmask8) __U);
6455}
6456
Craig Topper8c18e112016-05-17 04:41:50 +00006457#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6458 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6459 (__v2df)(__m128d)(B), \
6460 (__v2df)_mm_setzero_pd(), \
6461 (__mmask8)-1, (int)(imm), \
6462 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006463
Craig Topper8c18e112016-05-17 04:41:50 +00006464#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6465 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6466 (__v2df)(__m128d)(B), \
6467 (__v2df)_mm_setzero_pd(), \
6468 (__mmask8)-1, (int)(imm), \
6469 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006470
Craig Topper8c18e112016-05-17 04:41:50 +00006471#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6472 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6473 (__v2df)(__m128d)(B), \
6474 (__v2df)(__m128d)(W), \
6475 (__mmask8)(U), (int)(imm), \
6476 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006477
Craig Topper8c18e112016-05-17 04:41:50 +00006478#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6479 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6480 (__v2df)(__m128d)(B), \
6481 (__v2df)(__m128d)(W), \
6482 (__mmask8)(U), (int)(I), \
6483 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006484
Craig Topper8c18e112016-05-17 04:41:50 +00006485#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6486 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6487 (__v2df)(__m128d)(B), \
6488 (__v2df)_mm_setzero_pd(), \
6489 (__mmask8)(U), (int)(I), \
6490 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006491
Craig Topper8c18e112016-05-17 04:41:50 +00006492#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6493 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6494 (__v2df)(__m128d)(B), \
6495 (__v2df)_mm_setzero_pd(), \
6496 (__mmask8)(U), (int)(I), \
6497 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006498
Craig Topper8c18e112016-05-17 04:41:50 +00006499#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6500 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6501 (__v4sf)(__m128)(B), \
6502 (__v4sf)_mm_setzero_ps(), \
6503 (__mmask8)-1, (int)(imm), \
6504 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006505
Craig Topper8c18e112016-05-17 04:41:50 +00006506#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6507 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6508 (__v4sf)(__m128)(B), \
6509 (__v4sf)_mm_setzero_ps(), \
6510 (__mmask8)-1, (int)(imm), \
6511 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006512
Craig Topper8c18e112016-05-17 04:41:50 +00006513#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6514 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6515 (__v4sf)(__m128)(B), \
6516 (__v4sf)(__m128)(W), \
6517 (__mmask8)(U), (int)(I), \
6518 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006519
Craig Topper8c18e112016-05-17 04:41:50 +00006520#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6521 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6522 (__v4sf)(__m128)(B), \
6523 (__v4sf)(__m128)(W), \
6524 (__mmask8)(U), (int)(I), \
6525 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006526
Craig Topper8c18e112016-05-17 04:41:50 +00006527#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6528 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6529 (__v4sf)(__m128)(B), \
6530 (__v4sf)_mm_setzero_ps(), \
6531 (__mmask8)(U), (int)(I), \
6532 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006533
Craig Topper8c18e112016-05-17 04:41:50 +00006534#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6535 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6536 (__v4sf)(__m128)(B), \
6537 (__v4sf)_mm_setzero_ps(), \
6538 (__mmask8)(U), (int)(I), \
6539 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006540
Craig Topper8c18e112016-05-17 04:41:50 +00006541#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6542 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6543 (__v8df)(__m512d)(B), \
6544 (__v8df)_mm512_undefined_pd(), \
6545 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006546
Craig Topper8c18e112016-05-17 04:41:50 +00006547#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6548 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6549 (__v8df)(__m512d)(B), \
6550 (__v8df)(__m512d)(W), \
6551 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006552
Craig Topper8c18e112016-05-17 04:41:50 +00006553#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6554 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6555 (__v8df)(__m512d)(B), \
6556 (__v8df)_mm512_setzero_pd(), \
6557 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006558
6559static __inline__ __m512d __DEFAULT_FN_ATTRS
6560_mm512_scalef_pd (__m512d __A, __m512d __B)
6561{
6562 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6563 (__v8df) __B,
6564 (__v8df)
6565 _mm512_undefined_pd (),
6566 (__mmask8) -1,
6567 _MM_FROUND_CUR_DIRECTION);
6568}
6569
6570static __inline__ __m512d __DEFAULT_FN_ATTRS
6571_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6572{
6573 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6574 (__v8df) __B,
6575 (__v8df) __W,
6576 (__mmask8) __U,
6577 _MM_FROUND_CUR_DIRECTION);
6578}
6579
6580static __inline__ __m512d __DEFAULT_FN_ATTRS
6581_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6582{
6583 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6584 (__v8df) __B,
6585 (__v8df)
6586 _mm512_setzero_pd (),
6587 (__mmask8) __U,
6588 _MM_FROUND_CUR_DIRECTION);
6589}
6590
Craig Topper8c18e112016-05-17 04:41:50 +00006591#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6592 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6593 (__v16sf)(__m512)(B), \
6594 (__v16sf)_mm512_undefined_ps(), \
6595 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006596
Craig Topper8c18e112016-05-17 04:41:50 +00006597#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6598 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6599 (__v16sf)(__m512)(B), \
6600 (__v16sf)(__m512)(W), \
6601 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006602
Craig Topper8c18e112016-05-17 04:41:50 +00006603#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6604 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6605 (__v16sf)(__m512)(B), \
6606 (__v16sf)_mm512_setzero_ps(), \
6607 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006608
6609static __inline__ __m512 __DEFAULT_FN_ATTRS
6610_mm512_scalef_ps (__m512 __A, __m512 __B)
6611{
6612 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6613 (__v16sf) __B,
6614 (__v16sf)
6615 _mm512_undefined_ps (),
6616 (__mmask16) -1,
6617 _MM_FROUND_CUR_DIRECTION);
6618}
6619
6620static __inline__ __m512 __DEFAULT_FN_ATTRS
6621_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6622{
6623 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6624 (__v16sf) __B,
6625 (__v16sf) __W,
6626 (__mmask16) __U,
6627 _MM_FROUND_CUR_DIRECTION);
6628}
6629
6630static __inline__ __m512 __DEFAULT_FN_ATTRS
6631_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6632{
6633 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6634 (__v16sf) __B,
6635 (__v16sf)
6636 _mm512_setzero_ps (),
6637 (__mmask16) __U,
6638 _MM_FROUND_CUR_DIRECTION);
6639}
6640
Craig Topper8c18e112016-05-17 04:41:50 +00006641#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6642 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6643 (__v2df)(__m128d)(B), \
6644 (__v2df)_mm_setzero_pd(), \
6645 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006646
6647static __inline__ __m128d __DEFAULT_FN_ATTRS
6648_mm_scalef_sd (__m128d __A, __m128d __B)
6649{
6650 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6651 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6652 (__mmask8) -1,
6653 _MM_FROUND_CUR_DIRECTION);
6654}
6655
6656static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006657_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006658{
6659 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6660 (__v2df) __B,
6661 (__v2df) __W,
6662 (__mmask8) __U,
6663 _MM_FROUND_CUR_DIRECTION);
6664}
6665
Craig Topper8c18e112016-05-17 04:41:50 +00006666#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6667 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6668 (__v2df)(__m128d)(B), \
6669 (__v2df)(__m128d)(W), \
6670 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006671
6672static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006673_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006674{
6675 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6676 (__v2df) __B,
6677 (__v2df) _mm_setzero_pd (),
6678 (__mmask8) __U,
6679 _MM_FROUND_CUR_DIRECTION);
6680}
6681
Craig Topper8c18e112016-05-17 04:41:50 +00006682#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6683 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6684 (__v2df)(__m128d)(B), \
6685 (__v2df)_mm_setzero_pd(), \
6686 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006687
Craig Topper8c18e112016-05-17 04:41:50 +00006688#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6689 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6690 (__v4sf)(__m128)(B), \
6691 (__v4sf)_mm_setzero_ps(), \
6692 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006693
6694static __inline__ __m128 __DEFAULT_FN_ATTRS
6695_mm_scalef_ss (__m128 __A, __m128 __B)
6696{
6697 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6698 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6699 (__mmask8) -1,
6700 _MM_FROUND_CUR_DIRECTION);
6701}
6702
6703static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006704_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006705{
6706 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6707 (__v4sf) __B,
6708 (__v4sf) __W,
6709 (__mmask8) __U,
6710 _MM_FROUND_CUR_DIRECTION);
6711}
6712
Craig Topper8c18e112016-05-17 04:41:50 +00006713#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6714 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6715 (__v4sf)(__m128)(B), \
6716 (__v4sf)(__m128)(W), \
6717 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006718
6719static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006720_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006721{
6722 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6723 (__v4sf) __B,
6724 (__v4sf) _mm_setzero_ps (),
6725 (__mmask8) __U,
6726 _MM_FROUND_CUR_DIRECTION);
6727}
6728
Craig Topper8c18e112016-05-17 04:41:50 +00006729#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6730 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6731 (__v4sf)(__m128)(B), \
6732 (__v4sf)_mm_setzero_ps(), \
6733 (__mmask8)(U), \
6734 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006735
Craig Topper79d05c92016-05-15 20:10:06 +00006736#define _mm512_srai_epi32(A, B) __extension__ ({ \
6737 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6738 (__v16si)_mm512_setzero_si512(), \
6739 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006740
Craig Topper8c18e112016-05-17 04:41:50 +00006741#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6742 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6743 (__v16si)(__m512i)(W), \
6744 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006745
Craig Topper8c18e112016-05-17 04:41:50 +00006746#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6747 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6748 (__v16si)_mm512_setzero_si512(), \
6749 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006750
Craig Topper8c18e112016-05-17 04:41:50 +00006751#define _mm512_srai_epi64(A, B) __extension__ ({ \
6752 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6753 (__v8di)_mm512_setzero_si512(), \
6754 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006755
Craig Topper8c18e112016-05-17 04:41:50 +00006756#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6757 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6758 (__v8di)(__m512i)(W), \
6759 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006760
Craig Topper8c18e112016-05-17 04:41:50 +00006761#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6762 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6763 (__v8di)_mm512_setzero_si512(), \
6764 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006765
Craig Topper8c18e112016-05-17 04:41:50 +00006766#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6767 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6768 (__v16sf)(__m512)(B), (int)(imm), \
6769 (__v16sf)_mm512_undefined_ps(), \
6770 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006771
Craig Topper8c18e112016-05-17 04:41:50 +00006772#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6773 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6774 (__v16sf)(__m512)(B), (int)(imm), \
6775 (__v16sf)(__m512)(W), \
6776 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006777
Craig Topper8c18e112016-05-17 04:41:50 +00006778#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6779 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6780 (__v16sf)(__m512)(B), (int)(imm), \
6781 (__v16sf)_mm512_setzero_ps(), \
6782 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006783
Craig Topper8c18e112016-05-17 04:41:50 +00006784#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6785 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6786 (__v8df)(__m512d)(B), (int)(imm), \
6787 (__v8df)_mm512_undefined_pd(), \
6788 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006789
Craig Topper8c18e112016-05-17 04:41:50 +00006790#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6791 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6792 (__v8df)(__m512d)(B), (int)(imm), \
6793 (__v8df)(__m512d)(W), \
6794 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006795
Craig Topper8c18e112016-05-17 04:41:50 +00006796#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6797 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6798 (__v8df)(__m512d)(B), (int)(imm), \
6799 (__v8df)_mm512_setzero_pd(), \
6800 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006801
Craig Topper8c18e112016-05-17 04:41:50 +00006802#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6803 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6804 (__v16si)(__m512i)(B), (int)(imm), \
6805 (__v16si)_mm512_setzero_si512(), \
6806 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006807
Craig Topper8c18e112016-05-17 04:41:50 +00006808#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6809 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6810 (__v16si)(__m512i)(B), (int)(imm), \
6811 (__v16si)(__m512i)(W), \
6812 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006813
Craig Topper8c18e112016-05-17 04:41:50 +00006814#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6815 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6816 (__v16si)(__m512i)(B), (int)(imm), \
6817 (__v16si)_mm512_setzero_si512(), \
6818 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006819
Craig Topper8c18e112016-05-17 04:41:50 +00006820#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6821 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6822 (__v8di)(__m512i)(B), (int)(imm), \
6823 (__v8di)_mm512_setzero_si512(), \
6824 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006825
Craig Topper8c18e112016-05-17 04:41:50 +00006826#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6827 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6828 (__v8di)(__m512i)(B), (int)(imm), \
6829 (__v8di)(__m512i)(W), \
6830 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006831
Craig Topper8c18e112016-05-17 04:41:50 +00006832#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6833 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6834 (__v8di)(__m512i)(B), (int)(imm), \
6835 (__v8di)_mm512_setzero_si512(), \
6836 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006837
Craig Topper8c18e112016-05-17 04:41:50 +00006838#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6839 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6840 (__v8df)(__m512d)(V), (int)(imm), \
6841 (__v8df)_mm512_undefined_pd(), \
6842 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006843
Craig Topper8c18e112016-05-17 04:41:50 +00006844#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6845 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6846 (__v8df)(__m512d)(V), (int)(imm), \
6847 (__v8df)(__m512d)(W), \
6848 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006849
Craig Topper8c18e112016-05-17 04:41:50 +00006850#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6851 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6852 (__v8df)(__m512d)(V), (int)(imm), \
6853 (__v8df)_mm512_setzero_pd(), \
6854 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006855
Craig Topper8c18e112016-05-17 04:41:50 +00006856#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
6857 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6858 (__v16sf)(__m512)(V), (int)(imm), \
6859 (__v16sf)_mm512_undefined_ps(), \
6860 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006861
Craig Topper8c18e112016-05-17 04:41:50 +00006862#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
6863 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6864 (__v16sf)(__m512)(V), (int)(imm), \
6865 (__v16sf)(__m512)(W), \
6866 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006867
Craig Topper8c18e112016-05-17 04:41:50 +00006868#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
6869 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6870 (__v16sf)(__m512)(V), (int)(imm), \
6871 (__v16sf)_mm512_setzero_ps(), \
6872 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006873
Craig Topper8c18e112016-05-17 04:41:50 +00006874#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
6875 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6876 (__v2df)(__m128d)(A), \
6877 (__v2df)_mm_setzero_pd(), \
6878 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006879
6880static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006881_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006882{
6883 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6884 (__v2df) __A,
6885 (__v2df) __W,
6886 (__mmask8) __U,
6887 _MM_FROUND_CUR_DIRECTION);
6888}
6889
Craig Topper8c18e112016-05-17 04:41:50 +00006890#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
6891 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6892 (__v2df)(__m128d)(A), \
6893 (__v2df)(__m128d)(W), \
6894 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006895
6896static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006897_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006898{
6899 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6900 (__v2df) __A,
6901 (__v2df) _mm_setzero_pd (),
6902 (__mmask8) __U,
6903 _MM_FROUND_CUR_DIRECTION);
6904}
6905
Craig Topper8c18e112016-05-17 04:41:50 +00006906#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
6907 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6908 (__v2df)(__m128d)(A), \
6909 (__v2df)_mm_setzero_pd(), \
6910 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006911
Craig Topper8c18e112016-05-17 04:41:50 +00006912#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
6913 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6914 (__v4sf)(__m128)(A), \
6915 (__v4sf)_mm_setzero_ps(), \
6916 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006917
6918static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006919_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006920{
6921 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6922 (__v4sf) __A,
6923 (__v4sf) __W,
6924 (__mmask8) __U,
6925 _MM_FROUND_CUR_DIRECTION);
6926}
6927
Craig Topper8c18e112016-05-17 04:41:50 +00006928#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
6929 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6930 (__v4sf)(__m128)(A), \
6931 (__v4sf)(__m128)(W), (__mmask8)(U), \
6932 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006933
6934static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006935_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006936{
6937 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6938 (__v4sf) __B,
6939 (__v4sf) _mm_setzero_ps (),
6940 (__mmask8) __U,
6941 _MM_FROUND_CUR_DIRECTION);
6942}
6943
Craig Topper8c18e112016-05-17 04:41:50 +00006944#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
6945 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6946 (__v4sf)(__m128)(A), \
6947 (__v4sf)_mm_setzero_ps(), \
6948 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006949
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006950static __inline__ __m512 __DEFAULT_FN_ATTRS
6951_mm512_broadcast_f32x4 (__m128 __A)
6952{
6953 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6954 (__v16sf)
6955 _mm512_undefined_ps (),
6956 (__mmask16) -1);
6957}
6958
6959static __inline__ __m512 __DEFAULT_FN_ATTRS
6960_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6961{
6962 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6963 (__v16sf) __O,
6964 __M);
6965}
6966
6967static __inline__ __m512 __DEFAULT_FN_ATTRS
6968_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6969{
6970 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6971 (__v16sf)
6972 _mm512_setzero_ps (),
6973 __M);
6974}
6975
6976static __inline__ __m512d __DEFAULT_FN_ATTRS
6977_mm512_broadcast_f64x4 (__m256d __A)
6978{
6979 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6980 (__v8df)
6981 _mm512_undefined_pd (),
6982 (__mmask8) -1);
6983}
6984
6985static __inline__ __m512d __DEFAULT_FN_ATTRS
6986_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6987{
6988 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6989 (__v8df) __O,
6990 __M);
6991}
6992
6993static __inline__ __m512d __DEFAULT_FN_ATTRS
6994_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6995{
6996 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6997 (__v8df)
6998 _mm512_setzero_pd (),
6999 __M);
7000}
7001
7002static __inline__ __m512i __DEFAULT_FN_ATTRS
7003_mm512_broadcast_i32x4 (__m128i __A)
7004{
7005 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7006 (__v16si)
7007 _mm512_undefined_epi32 (),
7008 (__mmask16) -1);
7009}
7010
7011static __inline__ __m512i __DEFAULT_FN_ATTRS
7012_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7013{
7014 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7015 (__v16si) __O,
7016 __M);
7017}
7018
7019static __inline__ __m512i __DEFAULT_FN_ATTRS
7020_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7021{
7022 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7023 (__v16si)
7024 _mm512_setzero_si512 (),
7025 __M);
7026}
7027
7028static __inline__ __m512i __DEFAULT_FN_ATTRS
7029_mm512_broadcast_i64x4 (__m256i __A)
7030{
7031 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7032 (__v8di)
7033 _mm512_undefined_epi32 (),
7034 (__mmask8) -1);
7035}
7036
7037static __inline__ __m512i __DEFAULT_FN_ATTRS
7038_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7039{
7040 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7041 (__v8di) __O,
7042 __M);
7043}
7044
7045static __inline__ __m512i __DEFAULT_FN_ATTRS
7046_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7047{
7048 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7049 (__v8di)
7050 _mm512_setzero_si512 (),
7051 __M);
7052}
7053
7054static __inline__ __m512d __DEFAULT_FN_ATTRS
7055_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7056{
7057 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7058 (__v8df) __O, __M);
7059}
7060
7061static __inline__ __m512d __DEFAULT_FN_ATTRS
7062_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7063{
7064 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7065 (__v8df)
7066 _mm512_setzero_pd (),
7067 __M);
7068}
7069
7070static __inline__ __m512 __DEFAULT_FN_ATTRS
7071_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7072{
7073 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7074 (__v16sf) __O, __M);
7075}
7076
7077static __inline__ __m512 __DEFAULT_FN_ATTRS
7078_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7079{
7080 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7081 (__v16sf)
7082 _mm512_setzero_ps (),
7083 __M);
7084}
7085
Michael Zuckermane1680612016-04-13 15:02:04 +00007086static __inline__ __m128i __DEFAULT_FN_ATTRS
7087_mm512_cvtsepi32_epi8 (__m512i __A)
7088{
7089 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7090 (__v16qi) _mm_undefined_si128 (),
7091 (__mmask16) -1);
7092}
7093
7094static __inline__ __m128i __DEFAULT_FN_ATTRS
7095_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7096{
7097 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7098 (__v16qi) __O, __M);
7099}
7100
7101static __inline__ __m128i __DEFAULT_FN_ATTRS
7102_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7103{
7104 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7105 (__v16qi) _mm_setzero_si128 (),
7106 __M);
7107}
7108
7109static __inline__ void __DEFAULT_FN_ATTRS
7110_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7111{
7112 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7113}
7114
7115static __inline__ __m256i __DEFAULT_FN_ATTRS
7116_mm512_cvtsepi32_epi16 (__m512i __A)
7117{
7118 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7119 (__v16hi) _mm256_undefined_si256 (),
7120 (__mmask16) -1);
7121}
7122
7123static __inline__ __m256i __DEFAULT_FN_ATTRS
7124_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7125{
7126 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7127 (__v16hi) __O, __M);
7128}
7129
7130static __inline__ __m256i __DEFAULT_FN_ATTRS
7131_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7132{
7133 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7134 (__v16hi) _mm256_setzero_si256 (),
7135 __M);
7136}
7137
7138static __inline__ void __DEFAULT_FN_ATTRS
7139_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7140{
7141 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7142}
7143
7144static __inline__ __m128i __DEFAULT_FN_ATTRS
7145_mm512_cvtsepi64_epi8 (__m512i __A)
7146{
7147 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7148 (__v16qi) _mm_undefined_si128 (),
7149 (__mmask8) -1);
7150}
7151
7152static __inline__ __m128i __DEFAULT_FN_ATTRS
7153_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7154{
7155 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7156 (__v16qi) __O, __M);
7157}
7158
7159static __inline__ __m128i __DEFAULT_FN_ATTRS
7160_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7161{
7162 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7163 (__v16qi) _mm_setzero_si128 (),
7164 __M);
7165}
7166
7167static __inline__ void __DEFAULT_FN_ATTRS
7168_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7169{
7170 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7171}
7172
7173static __inline__ __m256i __DEFAULT_FN_ATTRS
7174_mm512_cvtsepi64_epi32 (__m512i __A)
7175{
7176 __v8si __O;
7177 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7178 (__v8si) _mm256_undefined_si256 (),
7179 (__mmask8) -1);
7180}
7181
7182static __inline__ __m256i __DEFAULT_FN_ATTRS
7183_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7184{
7185 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7186 (__v8si) __O, __M);
7187}
7188
7189static __inline__ __m256i __DEFAULT_FN_ATTRS
7190_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7191{
7192 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7193 (__v8si) _mm256_setzero_si256 (),
7194 __M);
7195}
7196
7197static __inline__ void __DEFAULT_FN_ATTRS
7198_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7199{
7200 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7201}
7202
7203static __inline__ __m128i __DEFAULT_FN_ATTRS
7204_mm512_cvtsepi64_epi16 (__m512i __A)
7205{
7206 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7207 (__v8hi) _mm_undefined_si128 (),
7208 (__mmask8) -1);
7209}
7210
7211static __inline__ __m128i __DEFAULT_FN_ATTRS
7212_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7213{
7214 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7215 (__v8hi) __O, __M);
7216}
7217
7218static __inline__ __m128i __DEFAULT_FN_ATTRS
7219_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7220{
7221 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7222 (__v8hi) _mm_setzero_si128 (),
7223 __M);
7224}
7225
7226static __inline__ void __DEFAULT_FN_ATTRS
7227_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7228{
7229 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7230}
7231
Michael Zuckermand8715312016-04-14 06:48:09 +00007232static __inline__ __m128i __DEFAULT_FN_ATTRS
7233_mm512_cvtusepi32_epi8 (__m512i __A)
7234{
7235 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7236 (__v16qi) _mm_undefined_si128 (),
7237 (__mmask16) -1);
7238}
7239
7240static __inline__ __m128i __DEFAULT_FN_ATTRS
7241_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7242{
7243 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7244 (__v16qi) __O,
7245 __M);
7246}
7247
7248static __inline__ __m128i __DEFAULT_FN_ATTRS
7249_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7250{
7251 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7252 (__v16qi) _mm_setzero_si128 (),
7253 __M);
7254}
7255
7256static __inline__ void __DEFAULT_FN_ATTRS
7257_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7258{
7259 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7260}
7261
7262static __inline__ __m256i __DEFAULT_FN_ATTRS
7263_mm512_cvtusepi32_epi16 (__m512i __A)
7264{
7265 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7266 (__v16hi) _mm256_undefined_si256 (),
7267 (__mmask16) -1);
7268}
7269
7270static __inline__ __m256i __DEFAULT_FN_ATTRS
7271_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7272{
7273 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7274 (__v16hi) __O,
7275 __M);
7276}
7277
7278static __inline__ __m256i __DEFAULT_FN_ATTRS
7279_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7280{
7281 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7282 (__v16hi) _mm256_setzero_si256 (),
7283 __M);
7284}
7285
7286static __inline__ void __DEFAULT_FN_ATTRS
7287_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7288{
7289 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7290}
7291
7292static __inline__ __m128i __DEFAULT_FN_ATTRS
7293_mm512_cvtusepi64_epi8 (__m512i __A)
7294{
7295 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7296 (__v16qi) _mm_undefined_si128 (),
7297 (__mmask8) -1);
7298}
7299
7300static __inline__ __m128i __DEFAULT_FN_ATTRS
7301_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7302{
7303 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7304 (__v16qi) __O,
7305 __M);
7306}
7307
7308static __inline__ __m128i __DEFAULT_FN_ATTRS
7309_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7310{
7311 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7312 (__v16qi) _mm_setzero_si128 (),
7313 __M);
7314}
7315
7316static __inline__ void __DEFAULT_FN_ATTRS
7317_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7318{
7319 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7320}
7321
7322static __inline__ __m256i __DEFAULT_FN_ATTRS
7323_mm512_cvtusepi64_epi32 (__m512i __A)
7324{
7325 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7326 (__v8si) _mm256_undefined_si256 (),
7327 (__mmask8) -1);
7328}
7329
7330static __inline__ __m256i __DEFAULT_FN_ATTRS
7331_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7332{
7333 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7334 (__v8si) __O, __M);
7335}
7336
7337static __inline__ __m256i __DEFAULT_FN_ATTRS
7338_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7339{
7340 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7341 (__v8si) _mm256_setzero_si256 (),
7342 __M);
7343}
7344
7345static __inline__ void __DEFAULT_FN_ATTRS
7346_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7347{
7348 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7349}
7350
7351static __inline__ __m128i __DEFAULT_FN_ATTRS
7352_mm512_cvtusepi64_epi16 (__m512i __A)
7353{
7354 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7355 (__v8hi) _mm_undefined_si128 (),
7356 (__mmask8) -1);
7357}
7358
7359static __inline__ __m128i __DEFAULT_FN_ATTRS
7360_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7361{
7362 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7363 (__v8hi) __O, __M);
7364}
7365
7366static __inline__ __m128i __DEFAULT_FN_ATTRS
7367_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7368{
7369 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7370 (__v8hi) _mm_setzero_si128 (),
7371 __M);
7372}
7373
7374static __inline__ void __DEFAULT_FN_ATTRS
7375_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7376{
7377 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7378}
7379
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007380static __inline__ __m128i __DEFAULT_FN_ATTRS
7381_mm512_cvtepi32_epi8 (__m512i __A)
7382{
7383 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7384 (__v16qi) _mm_undefined_si128 (),
7385 (__mmask16) -1);
7386}
7387
7388static __inline__ __m128i __DEFAULT_FN_ATTRS
7389_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7390{
7391 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7392 (__v16qi) __O, __M);
7393}
7394
7395static __inline__ __m128i __DEFAULT_FN_ATTRS
7396_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7397{
7398 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7399 (__v16qi) _mm_setzero_si128 (),
7400 __M);
7401}
7402
7403static __inline__ void __DEFAULT_FN_ATTRS
7404_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7405{
7406 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7407}
7408
7409static __inline__ __m256i __DEFAULT_FN_ATTRS
7410_mm512_cvtepi32_epi16 (__m512i __A)
7411{
7412 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7413 (__v16hi) _mm256_undefined_si256 (),
7414 (__mmask16) -1);
7415}
7416
7417static __inline__ __m256i __DEFAULT_FN_ATTRS
7418_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7419{
7420 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7421 (__v16hi) __O, __M);
7422}
7423
7424static __inline__ __m256i __DEFAULT_FN_ATTRS
7425_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7426{
7427 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7428 (__v16hi) _mm256_setzero_si256 (),
7429 __M);
7430}
7431
7432static __inline__ void __DEFAULT_FN_ATTRS
7433_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7434{
7435 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7436}
7437
7438static __inline__ __m128i __DEFAULT_FN_ATTRS
7439_mm512_cvtepi64_epi8 (__m512i __A)
7440{
7441 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7442 (__v16qi) _mm_undefined_si128 (),
7443 (__mmask8) -1);
7444}
7445
7446static __inline__ __m128i __DEFAULT_FN_ATTRS
7447_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7448{
7449 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7450 (__v16qi) __O, __M);
7451}
7452
7453static __inline__ __m128i __DEFAULT_FN_ATTRS
7454_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7455{
7456 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7457 (__v16qi) _mm_setzero_si128 (),
7458 __M);
7459}
7460
7461static __inline__ void __DEFAULT_FN_ATTRS
7462_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7463{
7464 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7465}
7466
7467static __inline__ __m256i __DEFAULT_FN_ATTRS
7468_mm512_cvtepi64_epi32 (__m512i __A)
7469{
7470 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7471 (__v8si) _mm256_undefined_si256 (),
7472 (__mmask8) -1);
7473}
7474
7475static __inline__ __m256i __DEFAULT_FN_ATTRS
7476_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7477{
7478 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7479 (__v8si) __O, __M);
7480}
7481
7482static __inline__ __m256i __DEFAULT_FN_ATTRS
7483_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7484{
7485 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7486 (__v8si) _mm256_setzero_si256 (),
7487 __M);
7488}
7489
7490static __inline__ void __DEFAULT_FN_ATTRS
7491_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7492{
7493 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7494}
7495
7496static __inline__ __m128i __DEFAULT_FN_ATTRS
7497_mm512_cvtepi64_epi16 (__m512i __A)
7498{
7499 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7500 (__v8hi) _mm_undefined_si128 (),
7501 (__mmask8) -1);
7502}
7503
7504static __inline__ __m128i __DEFAULT_FN_ATTRS
7505_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7506{
7507 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7508 (__v8hi) __O, __M);
7509}
7510
7511static __inline__ __m128i __DEFAULT_FN_ATTRS
7512_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7513{
7514 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7515 (__v8hi) _mm_setzero_si128 (),
7516 __M);
7517}
7518
7519static __inline__ void __DEFAULT_FN_ATTRS
7520_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7521{
7522 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7523}
7524
Craig Topper8c18e112016-05-17 04:41:50 +00007525#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7526 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7527 (__v4si)_mm_undefined_si128(), \
7528 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007529
Craig Topper8c18e112016-05-17 04:41:50 +00007530#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7531 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7532 (__v4si)(__m128i)(W), \
7533 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007534
Craig Topper8c18e112016-05-17 04:41:50 +00007535#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7536 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7537 (__v4si)_mm_setzero_si128(), \
7538 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007539
Craig Topper8c18e112016-05-17 04:41:50 +00007540#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7541 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7542 (__v4di)_mm256_undefined_si256(), \
7543 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007544
Craig Topper8c18e112016-05-17 04:41:50 +00007545#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7546 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7547 (__v4di)(__m256i)(W), \
7548 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007549
Craig Topper8c18e112016-05-17 04:41:50 +00007550#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7551 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7552 (__v4di)_mm256_setzero_si256(), \
7553 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007554
Craig Topper8c18e112016-05-17 04:41:50 +00007555#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7556 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7557 (__v4df)(__m256d)(B), (int)(imm), \
7558 (__v8df)_mm512_undefined_pd(), \
7559 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007560
Craig Topper8c18e112016-05-17 04:41:50 +00007561#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7562 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7563 (__v4df)(__m256d)(B), (int)(imm), \
7564 (__v8df)(__m512d)(W), \
7565 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007566
Craig Topper8c18e112016-05-17 04:41:50 +00007567#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7568 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7569 (__v4df)(__m256d)(B), (int)(imm), \
7570 (__v8df)_mm512_setzero_pd(), \
7571 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007572
Craig Topper8c18e112016-05-17 04:41:50 +00007573#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7574 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7575 (__v4di)(__m256i)(B), (int)(imm), \
7576 (__v8di)_mm512_setzero_si512(), \
7577 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007578
Craig Topper8c18e112016-05-17 04:41:50 +00007579#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7580 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7581 (__v4di)(__m256i)(B), (int)(imm), \
7582 (__v8di)(__m512i)(W), \
7583 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007584
Craig Topper8c18e112016-05-17 04:41:50 +00007585#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7586 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7587 (__v4di)(__m256i)(B), (int)(imm), \
7588 (__v8di)_mm512_setzero_si512(), \
7589 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007590
Craig Topper8c18e112016-05-17 04:41:50 +00007591#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7592 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7593 (__v4sf)(__m128)(B), (int)(imm), \
7594 (__v16sf)_mm512_undefined_ps(), \
7595 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007596
Craig Topper8c18e112016-05-17 04:41:50 +00007597#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7598 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7599 (__v4sf)(__m128)(B), (int)(imm), \
7600 (__v16sf)(__m512)(W), \
7601 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007602
Craig Topper8c18e112016-05-17 04:41:50 +00007603#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7604 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7605 (__v4sf)(__m128)(B), (int)(imm), \
7606 (__v16sf)_mm512_setzero_ps(), \
7607 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007608
Craig Topper8c18e112016-05-17 04:41:50 +00007609#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7610 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7611 (__v4si)(__m128i)(B), (int)(imm), \
7612 (__v16si)_mm512_setzero_si512(), \
7613 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007614
Craig Topper8c18e112016-05-17 04:41:50 +00007615#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7616 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7617 (__v4si)(__m128i)(B), (int)(imm), \
7618 (__v16si)(__m512i)(W), \
7619 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007620
Craig Topper8c18e112016-05-17 04:41:50 +00007621#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7622 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7623 (__v4si)(__m128i)(B), (int)(imm), \
7624 (__v16si)_mm512_setzero_si512(), \
7625 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007626
Craig Topper8c18e112016-05-17 04:41:50 +00007627#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7628 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7629 (int)(((C)<<2) | (B)), \
7630 (__v8df)_mm512_undefined_pd(), \
7631 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007632
Craig Topper8c18e112016-05-17 04:41:50 +00007633#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7634 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7635 (int)(((C)<<2) | (B)), \
7636 (__v8df)(__m512d)(W), \
7637 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007638
Craig Topper8c18e112016-05-17 04:41:50 +00007639#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7640 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7641 (int)(((C)<<2) | (B)), \
7642 (__v8df)_mm512_setzero_pd(), \
7643 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007644
Craig Topper8c18e112016-05-17 04:41:50 +00007645#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7646 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7647 (int)(((C)<<2) | (B)), \
7648 (__v8df)_mm512_setzero_pd(), \
7649 (__mmask8)-1, \
7650 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007651
Craig Topper8c18e112016-05-17 04:41:50 +00007652#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7653 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7654 (int)(((C)<<2) | (B)), \
7655 (__v8df)(__m512d)(W), \
7656 (__mmask8)(U), \
7657 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007658
Craig Topper8c18e112016-05-17 04:41:50 +00007659#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7660 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7661 (int)(((C)<<2) | (B)), \
7662 (__v8df)_mm512_setzero_pd(), \
7663 (__mmask8)(U), \
7664 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007665
Craig Topper8c18e112016-05-17 04:41:50 +00007666#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7667 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7668 (int)(((C)<<2) | (B)), \
7669 (__v16sf)_mm512_undefined_ps(), \
7670 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007671
Craig Topper8c18e112016-05-17 04:41:50 +00007672#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7673 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7674 (int)(((C)<<2) | (B)), \
7675 (__v16sf)(__m512)(W), \
7676 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007677
Craig Topper8c18e112016-05-17 04:41:50 +00007678#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7679 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7680 (int)(((C)<<2) | (B)), \
7681 (__v16sf)_mm512_setzero_ps(), \
7682 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007683
Craig Topper8c18e112016-05-17 04:41:50 +00007684#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7685 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7686 (int)(((C)<<2)|(B)), \
7687 (__v16sf)_mm512_undefined_ps(), \
7688 (__mmask16)-1, \
7689 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007690
Craig Topper8c18e112016-05-17 04:41:50 +00007691#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7692 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7693 (int)(((C)<<2)|(B)), \
7694 (__v16sf)(__m512)(W), \
7695 (__mmask16)(U), \
7696 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007697
Craig Topper8c18e112016-05-17 04:41:50 +00007698#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7699 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7700 (int)(((C)<<2)|(B)), \
7701 (__v16sf)_mm512_setzero_ps(), \
7702 (__mmask16)(U), \
7703 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007704
Craig Topper8c18e112016-05-17 04:41:50 +00007705#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7706 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7707 (__v8df)_mm512_undefined_pd(), \
7708 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007709
Craig Topper8c18e112016-05-17 04:41:50 +00007710#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7711 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7712 (__v8df)(__m512d)(W), \
7713 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007714
Craig Topper8c18e112016-05-17 04:41:50 +00007715#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7716 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7717 (__v8df)_mm512_setzero_pd(), \
7718 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007719
7720static __inline__ __m512d __DEFAULT_FN_ATTRS
7721_mm512_getexp_pd (__m512d __A)
7722{
7723 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7724 (__v8df) _mm512_undefined_pd (),
7725 (__mmask8) -1,
7726 _MM_FROUND_CUR_DIRECTION);
7727}
7728
7729static __inline__ __m512d __DEFAULT_FN_ATTRS
7730_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7731{
7732 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7733 (__v8df) __W,
7734 (__mmask8) __U,
7735 _MM_FROUND_CUR_DIRECTION);
7736}
7737
7738static __inline__ __m512d __DEFAULT_FN_ATTRS
7739_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7740{
7741 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7742 (__v8df) _mm512_setzero_pd (),
7743 (__mmask8) __U,
7744 _MM_FROUND_CUR_DIRECTION);
7745}
7746
Craig Topper8c18e112016-05-17 04:41:50 +00007747#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7748 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7749 (__v16sf)_mm512_undefined_ps(), \
7750 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007751
Craig Topper8c18e112016-05-17 04:41:50 +00007752#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7753 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7754 (__v16sf)(__m512)(W), \
7755 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007756
Craig Topper8c18e112016-05-17 04:41:50 +00007757#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7758 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7759 (__v16sf)_mm512_setzero_ps(), \
7760 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007761
7762static __inline__ __m512 __DEFAULT_FN_ATTRS
7763_mm512_getexp_ps (__m512 __A)
7764{
7765 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7766 (__v16sf) _mm512_undefined_ps (),
7767 (__mmask16) -1,
7768 _MM_FROUND_CUR_DIRECTION);
7769}
7770
7771static __inline__ __m512 __DEFAULT_FN_ATTRS
7772_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7773{
7774 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7775 (__v16sf) __W,
7776 (__mmask16) __U,
7777 _MM_FROUND_CUR_DIRECTION);
7778}
7779
7780static __inline__ __m512 __DEFAULT_FN_ATTRS
7781_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7782{
7783 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7784 (__v16sf) _mm512_setzero_ps (),
7785 (__mmask16) __U,
7786 _MM_FROUND_CUR_DIRECTION);
7787}
7788
Craig Topper8c18e112016-05-17 04:41:50 +00007789#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7790 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7791 (float const *)(addr), \
7792 (__v8di)(__m512i)(index), (__mmask8)-1, \
7793 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007794
7795#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7796 __addr, __scale) __extension__({\
7797__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7798 __addr,(__v8di) __index, __mask, __scale);\
7799})
7800
Craig Topper8c18e112016-05-17 04:41:50 +00007801#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7802 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7803 (int const *)(addr), \
7804 (__v8di)(__m512i)(index), \
7805 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007806
Craig Topper8c18e112016-05-17 04:41:50 +00007807#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7808 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7809 (int const *)(addr), \
7810 (__v8di)(__m512i)(index), \
7811 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007812
Craig Topper8c18e112016-05-17 04:41:50 +00007813#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7814 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7815 (double const *)(addr), \
7816 (__v8di)(__m512i)(index), (__mmask8)-1, \
7817 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007818
Craig Topper8c18e112016-05-17 04:41:50 +00007819#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7820 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7821 (double const *)(addr), \
7822 (__v8di)(__m512i)(index), \
7823 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007824
Craig Topper8c18e112016-05-17 04:41:50 +00007825#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7826 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7827 (long long const *)(addr), \
7828 (__v8di)(__m512i)(index), (__mmask8)-1, \
7829 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007830
Craig Topper8c18e112016-05-17 04:41:50 +00007831#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7832 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7833 (long long const *)(addr), \
7834 (__v8di)(__m512i)(index), \
7835 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007836
Craig Topper8c18e112016-05-17 04:41:50 +00007837#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7838 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7839 (float const *)(addr), \
7840 (__v16sf)(__m512)(index), \
7841 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007842
Craig Topper8c18e112016-05-17 04:41:50 +00007843#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7844 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7845 (float const *)(addr), \
7846 (__v16sf)(__m512)(index), \
7847 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007848
Craig Topper8c18e112016-05-17 04:41:50 +00007849#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7850 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7851 (int const *)(addr), \
7852 (__v16si)(__m512i)(index), \
7853 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007854
Craig Topper8c18e112016-05-17 04:41:50 +00007855#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7856 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
7857 (int const *)(addr), \
7858 (__v16si)(__m512i)(index), \
7859 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007860
Craig Topper8c18e112016-05-17 04:41:50 +00007861#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
7862 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
7863 (double const *)(addr), \
7864 (__v8si)(__m256i)(index), (__mmask8)-1, \
7865 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007866
Craig Topper8c18e112016-05-17 04:41:50 +00007867#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7868 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
7869 (double const *)(addr), \
7870 (__v8si)(__m256i)(index), \
7871 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007872
Craig Topper8c18e112016-05-17 04:41:50 +00007873#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
7874 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
7875 (long long const *)(addr), \
7876 (__v8si)(__m256i)(index), (__mmask8)-1, \
7877 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007878
Craig Topper8c18e112016-05-17 04:41:50 +00007879#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7880 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
7881 (long long const *)(addr), \
7882 (__v8si)(__m256i)(index), \
7883 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007884
Craig Topper8c18e112016-05-17 04:41:50 +00007885#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
7886 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
7887 (__v8di)(__m512i)(index), \
7888 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007889
Craig Topper8c18e112016-05-17 04:41:50 +00007890#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7891 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
7892 (__v8di)(__m512i)(index), \
7893 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007894
Craig Topper8c18e112016-05-17 04:41:50 +00007895#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
7896 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
7897 (__v8di)(__m512i)(index), \
7898 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007899
Craig Topper8c18e112016-05-17 04:41:50 +00007900#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7901 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
7902 (__v8di)(__m512i)(index), \
7903 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007904
Craig Topper8c18e112016-05-17 04:41:50 +00007905#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
7906 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
7907 (__v8di)(__m512i)(index), \
7908 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007909
Craig Topper8c18e112016-05-17 04:41:50 +00007910#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7911 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
7912 (__v8di)(__m512i)(index), \
7913 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007914
Craig Topper8c18e112016-05-17 04:41:50 +00007915#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
7916 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
7917 (__v8di)(__m512i)(index), \
7918 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007919
Craig Topper8c18e112016-05-17 04:41:50 +00007920#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7921 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
7922 (__v8di)(__m512i)(index), \
7923 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007924
Craig Topper8c18e112016-05-17 04:41:50 +00007925#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
7926 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
7927 (__v16si)(__m512i)(index), \
7928 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007929
Craig Topper8c18e112016-05-17 04:41:50 +00007930#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7931 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
7932 (__v16si)(__m512i)(index), \
7933 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007934
Craig Topper8c18e112016-05-17 04:41:50 +00007935#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
7936 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
7937 (__v16si)(__m512i)(index), \
7938 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007939
Craig Topper8c18e112016-05-17 04:41:50 +00007940#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7941 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
7942 (__v16si)(__m512i)(index), \
7943 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007944
Craig Topper8c18e112016-05-17 04:41:50 +00007945#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
7946 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
7947 (__v8si)(__m256i)(index), \
7948 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007949
Craig Topper8c18e112016-05-17 04:41:50 +00007950#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7951 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
7952 (__v8si)(__m256i)(index), \
7953 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007954
Craig Topper8c18e112016-05-17 04:41:50 +00007955#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
7956 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
7957 (__v8si)(__m256i)(index), \
7958 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007959
Craig Topper8c18e112016-05-17 04:41:50 +00007960#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7961 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
7962 (__v8si)(__m256i)(index), \
7963 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007964
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007965static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007966_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007967{
7968 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7969 (__v4sf) __B,
7970 (__v4sf) __W,
7971 (__mmask8) __U,
7972 _MM_FROUND_CUR_DIRECTION);
7973}
7974
Craig Topper8c18e112016-05-17 04:41:50 +00007975#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
7976 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7977 (__v4sf)(__m128)(B), \
7978 (__v4sf)(__m128)(W), (__mmask8)(U), \
7979 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007980
7981static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007982_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007983{
7984 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7985 (__v4sf) __B,
7986 (__v4sf) __C,
7987 (__mmask8) __U,
7988 _MM_FROUND_CUR_DIRECTION);
7989}
7990
Craig Topper8c18e112016-05-17 04:41:50 +00007991#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
7992 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
7993 (__v4sf)(__m128)(B), \
7994 (__v4sf)(__m128)(C), (__mmask8)(U), \
7995 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007996
7997static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007998_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007999{
8000 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8001 (__v4sf) __X,
8002 (__v4sf) __Y,
8003 (__mmask8) __U,
8004 _MM_FROUND_CUR_DIRECTION);
8005}
8006
Craig Topper8c18e112016-05-17 04:41:50 +00008007#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8008 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8009 (__v4sf)(__m128)(X), \
8010 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8011 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008012
8013static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008014_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008015{
8016 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008017 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008018 (__v4sf) __W,
8019 (__mmask8) __U,
8020 _MM_FROUND_CUR_DIRECTION);
8021}
8022
Craig Topper8c18e112016-05-17 04:41:50 +00008023#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8024 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8025 -(__v4sf)(__m128)(B), \
8026 (__v4sf)(__m128)(W), (__mmask8)(U), \
8027 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008028
8029static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008030_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008031{
8032 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8033 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008034 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008035 (__mmask8) __U,
8036 _MM_FROUND_CUR_DIRECTION);
8037}
8038
Craig Topper8c18e112016-05-17 04:41:50 +00008039#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8040 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8041 (__v4sf)(__m128)(B), \
8042 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8043 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008044
8045static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008046_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008047{
8048 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8049 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008050 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008051 (__mmask8) __U,
8052 _MM_FROUND_CUR_DIRECTION);
8053}
8054
Craig Topper8c18e112016-05-17 04:41:50 +00008055#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8056 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8057 (__v4sf)(__m128)(X), \
8058 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8059 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008060
8061static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008062_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008063{
Craig Topper9864c592016-05-15 20:10:03 +00008064 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008065 (__v4sf) __B,
8066 (__v4sf) __W,
8067 (__mmask8) __U,
8068 _MM_FROUND_CUR_DIRECTION);
8069}
8070
Craig Topper8c18e112016-05-17 04:41:50 +00008071#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8072 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8073 (__v4sf)(__m128)(B), \
8074 (__v4sf)(__m128)(W), (__mmask8)(U), \
8075 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008076
8077static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008078_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008079{
Craig Topper9864c592016-05-15 20:10:03 +00008080 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008081 (__v4sf) __B,
8082 (__v4sf) __C,
8083 (__mmask8) __U,
8084 _MM_FROUND_CUR_DIRECTION);
8085}
8086
Craig Topper8c18e112016-05-17 04:41:50 +00008087#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8088 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8089 (__v4sf)(__m128)(B), \
8090 (__v4sf)(__m128)(C), (__mmask8)(U), \
8091 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008092
8093static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008094_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008095{
Craig Topper9864c592016-05-15 20:10:03 +00008096 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008097 (__v4sf) __X,
8098 (__v4sf) __Y,
8099 (__mmask8) __U,
8100 _MM_FROUND_CUR_DIRECTION);
8101}
8102
Craig Topper8c18e112016-05-17 04:41:50 +00008103#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8104 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8105 (__v4sf)(__m128)(X), \
8106 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8107 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008108
8109static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008110_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008111{
Craig Topper9864c592016-05-15 20:10:03 +00008112 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8113 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008114 (__v4sf) __W,
8115 (__mmask8) __U,
8116 _MM_FROUND_CUR_DIRECTION);
8117}
8118
Craig Topper8c18e112016-05-17 04:41:50 +00008119#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8120 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8121 -(__v4sf)(__m128)(B), \
8122 (__v4sf)(__m128)(W), (__mmask8)(U), \
8123 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008124
8125static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008126_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008127{
Craig Topper9864c592016-05-15 20:10:03 +00008128 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008129 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008130 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008131 (__mmask8) __U,
8132 _MM_FROUND_CUR_DIRECTION);
8133}
8134
Craig Topper8c18e112016-05-17 04:41:50 +00008135#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8136 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8137 (__v4sf)(__m128)(B), \
8138 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8139 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008140
8141static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008142_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008143{
Craig Topper9864c592016-05-15 20:10:03 +00008144 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008145 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008146 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008147 (__mmask8) __U,
8148 _MM_FROUND_CUR_DIRECTION);
8149}
8150
Craig Topper8c18e112016-05-17 04:41:50 +00008151#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8152 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8153 (__v4sf)(__m128)(X), \
8154 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8155 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008156
Craig Topper58187d32016-05-17 04:41:29 +00008157static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008158_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008159{
Craig Topper58187d32016-05-17 04:41:29 +00008160 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008161 (__v2df) __B,
8162 (__v2df) __W,
8163 (__mmask8) __U,
8164 _MM_FROUND_CUR_DIRECTION);
8165}
8166
Craig Topper8c18e112016-05-17 04:41:50 +00008167#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8168 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8169 (__v2df)(__m128d)(B), \
8170 (__v2df)(__m128d)(W), (__mmask8)(U), \
8171 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008172
Craig Topper58187d32016-05-17 04:41:29 +00008173static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008174_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008175{
Craig Topper58187d32016-05-17 04:41:29 +00008176 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008177 (__v2df) __B,
8178 (__v2df) __C,
8179 (__mmask8) __U,
8180 _MM_FROUND_CUR_DIRECTION);
8181}
8182
Craig Topper8c18e112016-05-17 04:41:50 +00008183#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8184 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8185 (__v2df)(__m128d)(B), \
8186 (__v2df)(__m128d)(C), (__mmask8)(U), \
8187 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008188
Craig Topper58187d32016-05-17 04:41:29 +00008189static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008190_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008191{
Craig Topper58187d32016-05-17 04:41:29 +00008192 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008193 (__v2df) __X,
8194 (__v2df) __Y,
8195 (__mmask8) __U,
8196 _MM_FROUND_CUR_DIRECTION);
8197}
8198
Craig Topper8c18e112016-05-17 04:41:50 +00008199#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8200 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8201 (__v2df)(__m128d)(X), \
8202 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8203 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008204
Craig Topper58187d32016-05-17 04:41:29 +00008205static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008206_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008207{
Craig Topper58187d32016-05-17 04:41:29 +00008208 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008209 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008210 (__v2df) __W,
8211 (__mmask8) __U,
8212 _MM_FROUND_CUR_DIRECTION);
8213}
8214
Craig Topper8c18e112016-05-17 04:41:50 +00008215#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8216 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8217 -(__v2df)(__m128d)(B), \
8218 (__v2df)(__m128d)(W), (__mmask8)(U), \
8219 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008220
Craig Topper58187d32016-05-17 04:41:29 +00008221static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008222_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008223{
Craig Topper58187d32016-05-17 04:41:29 +00008224 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008225 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008226 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008227 (__mmask8) __U,
8228 _MM_FROUND_CUR_DIRECTION);
8229}
8230
Craig Topper8c18e112016-05-17 04:41:50 +00008231#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8232 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8233 (__v2df)(__m128d)(B), \
8234 -(__v2df)(__m128d)(C), \
8235 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008236
Craig Topper58187d32016-05-17 04:41:29 +00008237static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008238_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008239{
Craig Topper58187d32016-05-17 04:41:29 +00008240 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008241 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008242 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008243 (__mmask8) __U,
8244 _MM_FROUND_CUR_DIRECTION);
8245}
8246
Craig Topper8c18e112016-05-17 04:41:50 +00008247#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8248 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8249 (__v2df)(__m128d)(X), \
8250 -(__v2df)(__m128d)(Y), \
8251 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008252
Craig Topper58187d32016-05-17 04:41:29 +00008253static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008254_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008255{
Craig Topper58187d32016-05-17 04:41:29 +00008256 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008257 (__v2df) __B,
8258 (__v2df) __W,
8259 (__mmask8) __U,
8260 _MM_FROUND_CUR_DIRECTION);
8261}
8262
Craig Topper8c18e112016-05-17 04:41:50 +00008263#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8264 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8265 (__v2df)(__m128d)(B), \
8266 (__v2df)(__m128d)(W), (__mmask8)(U), \
8267 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008268
Craig Topper58187d32016-05-17 04:41:29 +00008269static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008270_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008271{
Craig Topper58187d32016-05-17 04:41:29 +00008272 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008273 (__v2df) __B,
8274 (__v2df) __C,
8275 (__mmask8) __U,
8276 _MM_FROUND_CUR_DIRECTION);
8277}
8278
Craig Topper8c18e112016-05-17 04:41:50 +00008279#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8280 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8281 (__v2df)(__m128d)(B), \
8282 (__v2df)(__m128d)(C), (__mmask8)(U), \
8283 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008284
Craig Topper58187d32016-05-17 04:41:29 +00008285static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008286_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008287{
Craig Topper58187d32016-05-17 04:41:29 +00008288 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008289 (__v2df) __X,
8290 (__v2df) __Y,
8291 (__mmask8) __U,
8292 _MM_FROUND_CUR_DIRECTION);
8293}
8294
Craig Topper8c18e112016-05-17 04:41:50 +00008295#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8296 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8297 (__v2df)(__m128d)(X), \
8298 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8299 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008300
Craig Topper58187d32016-05-17 04:41:29 +00008301static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008302_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008303{
Craig Topper58187d32016-05-17 04:41:29 +00008304 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008305 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008306 (__v2df) __W,
8307 (__mmask8) __U,
8308 _MM_FROUND_CUR_DIRECTION);
8309}
8310
Craig Topper8c18e112016-05-17 04:41:50 +00008311#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8312 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8313 -(__v2df)(__m128d)(B), \
8314 (__v2df)(__m128d)(W), (__mmask8)(U), \
8315 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008316
Craig Topper58187d32016-05-17 04:41:29 +00008317static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008318_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008319{
Craig Topper58187d32016-05-17 04:41:29 +00008320 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008321 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008322 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008323 (__mmask8) __U,
8324 _MM_FROUND_CUR_DIRECTION);
8325}
8326
Craig Topper8c18e112016-05-17 04:41:50 +00008327#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8328 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8329 (__v2df)(__m128d)(B), \
8330 -(__v2df)(__m128d)(C), \
8331 (__mmask8)(U), \
8332 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008333
Craig Topper58187d32016-05-17 04:41:29 +00008334static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008335_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008336{
Craig Topper58187d32016-05-17 04:41:29 +00008337 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008338 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008339 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008340 (__mmask8) __U,
8341 _MM_FROUND_CUR_DIRECTION);
8342}
8343
Craig Topper8c18e112016-05-17 04:41:50 +00008344#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8345 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8346 (__v2df)(__m128d)(X), \
8347 -(__v2df)(__m128d)(Y), \
8348 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008349
Craig Topper8c18e112016-05-17 04:41:50 +00008350#define _mm512_permutex_pd(X, M) __extension__ ({ \
8351 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8352 (__v8df)_mm512_undefined_pd(), \
8353 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008354
Craig Topper8c18e112016-05-17 04:41:50 +00008355#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8356 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8357 (__v8df)(__m512d)(W), \
8358 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008359
Craig Topper8c18e112016-05-17 04:41:50 +00008360#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8361 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8362 (__v8df)_mm512_setzero_pd(), \
8363 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008364
Craig Topper8c18e112016-05-17 04:41:50 +00008365#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8366 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8367 (__v8di)_mm512_undefined_epi32(), \
8368 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008369
Craig Topper8c18e112016-05-17 04:41:50 +00008370#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8371 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8372 (__v8di)(__m512i)(W), \
8373 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008374
Craig Topper8c18e112016-05-17 04:41:50 +00008375#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8376 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8377 (__v8di)_mm512_setzero_si512(), \
8378 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008379
8380static __inline__ __m512d __DEFAULT_FN_ATTRS
8381_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8382{
8383 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8384 (__v8di) __X,
8385 (__v8df) _mm512_undefined_pd (),
8386 (__mmask8) -1);
8387}
8388
8389static __inline__ __m512d __DEFAULT_FN_ATTRS
8390_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8391{
8392 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8393 (__v8di) __X,
8394 (__v8df) __W,
8395 (__mmask8) __U);
8396}
8397
8398static __inline__ __m512d __DEFAULT_FN_ATTRS
8399_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8400{
8401 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8402 (__v8di) __X,
8403 (__v8df) _mm512_setzero_pd (),
8404 (__mmask8) __U);
8405}
8406
8407static __inline__ __m512i __DEFAULT_FN_ATTRS
8408_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8409{
8410 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8411 (__v8di) __X,
8412 (__v8di) _mm512_setzero_si512 (),
8413 __M);
8414}
8415
8416static __inline__ __m512i __DEFAULT_FN_ATTRS
8417_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8418{
8419 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8420 (__v8di) __X,
8421 (__v8di) _mm512_undefined_epi32 (),
8422 (__mmask8) -1);
8423}
8424
8425static __inline__ __m512i __DEFAULT_FN_ATTRS
8426_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8427 __m512i __Y)
8428{
8429 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8430 (__v8di) __X,
8431 (__v8di) __W,
8432 __M);
8433}
8434
8435static __inline__ __m512 __DEFAULT_FN_ATTRS
8436_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8437{
8438 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8439 (__v16si) __X,
8440 (__v16sf) _mm512_undefined_ps (),
8441 (__mmask16) -1);
8442}
8443
8444static __inline__ __m512 __DEFAULT_FN_ATTRS
8445_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8446{
8447 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8448 (__v16si) __X,
8449 (__v16sf) __W,
8450 (__mmask16) __U);
8451}
8452
8453static __inline__ __m512 __DEFAULT_FN_ATTRS
8454_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8455{
8456 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8457 (__v16si) __X,
8458 (__v16sf) _mm512_setzero_ps (),
8459 (__mmask16) __U);
8460}
8461
8462static __inline__ __m512i __DEFAULT_FN_ATTRS
8463_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8464{
8465 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8466 (__v16si) __X,
8467 (__v16si) _mm512_setzero_si512 (),
8468 __M);
8469}
8470
8471static __inline__ __m512i __DEFAULT_FN_ATTRS
8472_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8473{
8474 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8475 (__v16si) __X,
8476 (__v16si) _mm512_undefined_epi32 (),
8477 (__mmask16) -1);
8478}
8479
8480static __inline__ __m512i __DEFAULT_FN_ATTRS
8481_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8482 __m512i __Y)
8483{
8484 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8485 (__v16si) __X,
8486 (__v16si) __W,
8487 __M);
8488}
8489
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008490static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8491_mm512_kand (__mmask16 __A, __mmask16 __B)
8492{
8493 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8494}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008495
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008496static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8497_mm512_kandn (__mmask16 __A, __mmask16 __B)
8498{
8499 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8500}
8501
8502static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8503_mm512_kor (__mmask16 __A, __mmask16 __B)
8504{
8505 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8506}
8507
8508static __inline__ int __DEFAULT_FN_ATTRS
8509_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8510{
Craig Topper91f23d92016-05-16 01:09:16 +00008511 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008512}
8513
8514static __inline__ int __DEFAULT_FN_ATTRS
8515_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8516{
Craig Topper91f23d92016-05-16 01:09:16 +00008517 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008518}
8519
8520static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8521_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8522{
8523 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8524}
8525
8526static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8527_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8528{
8529 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8530}
8531
8532static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8533_mm512_kxor (__mmask16 __A, __mmask16 __B)
8534{
8535 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8536}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008537
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008538static __inline__ void __DEFAULT_FN_ATTRS
8539_mm512_stream_si512 (__m512i * __P, __m512i __A)
8540{
8541 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8542}
8543
8544static __inline__ __m512i __DEFAULT_FN_ATTRS
8545_mm512_stream_load_si512 (void *__P)
8546{
8547 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8548}
8549
8550static __inline__ void __DEFAULT_FN_ATTRS
8551_mm512_stream_pd (double *__P, __m512d __A)
8552{
8553 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8554}
8555
8556static __inline__ void __DEFAULT_FN_ATTRS
8557_mm512_stream_ps (float *__P, __m512 __A)
8558{
8559 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8560}
8561
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008562static __inline__ __m512d __DEFAULT_FN_ATTRS
8563_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8564{
8565 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8566 (__v8df) __W,
8567 (__mmask8) __U);
8568}
8569
8570static __inline__ __m512d __DEFAULT_FN_ATTRS
8571_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8572{
8573 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8574 (__v8df)
8575 _mm512_setzero_pd (),
8576 (__mmask8) __U);
8577}
8578
8579static __inline__ __m512i __DEFAULT_FN_ATTRS
8580_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8581{
8582 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8583 (__v8di) __W,
8584 (__mmask8) __U);
8585}
8586
8587static __inline__ __m512i __DEFAULT_FN_ATTRS
8588_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8589{
8590 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8591 (__v8di)
8592 _mm512_setzero_si512 (),
8593 (__mmask8) __U);
8594}
8595
8596static __inline__ __m512 __DEFAULT_FN_ATTRS
8597_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8598{
8599 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8600 (__v16sf) __W,
8601 (__mmask16) __U);
8602}
8603
8604static __inline__ __m512 __DEFAULT_FN_ATTRS
8605_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8606{
8607 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8608 (__v16sf)
8609 _mm512_setzero_ps (),
8610 (__mmask16) __U);
8611}
8612
8613static __inline__ __m512i __DEFAULT_FN_ATTRS
8614_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8615{
8616 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8617 (__v16si) __W,
8618 (__mmask16) __U);
8619}
8620
8621static __inline__ __m512i __DEFAULT_FN_ATTRS
8622_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8623{
8624 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8625 (__v16si)
8626 _mm512_setzero_si512 (),
8627 (__mmask16) __U);
8628}
8629
Craig Topper8c18e112016-05-17 04:41:50 +00008630#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8631 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8632 (__v4sf)(__m128)(Y), (int)(P), \
8633 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008634
Craig Topper8c18e112016-05-17 04:41:50 +00008635#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8636 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8637 (__v4sf)(__m128)(Y), (int)(P), \
8638 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008639
Craig Topper8c18e112016-05-17 04:41:50 +00008640#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8641 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8642 (__v4sf)(__m128)(Y), (int)(P), \
8643 (__mmask8)-1, \
8644 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008645
Craig Topper8c18e112016-05-17 04:41:50 +00008646#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8647 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8648 (__v4sf)(__m128)(Y), (int)(P), \
8649 (__mmask8)(M), \
8650 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008651
Craig Topper8c18e112016-05-17 04:41:50 +00008652#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8653 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8654 (__v2df)(__m128d)(Y), (int)(P), \
8655 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008656
Craig Topper8c18e112016-05-17 04:41:50 +00008657#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8658 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8659 (__v2df)(__m128d)(Y), (int)(P), \
8660 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008661
Craig Topper8c18e112016-05-17 04:41:50 +00008662#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8663 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8664 (__v2df)(__m128d)(Y), (int)(P), \
8665 (__mmask8)-1, \
8666 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008667
Craig Topper8c18e112016-05-17 04:41:50 +00008668#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8669 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8670 (__v2df)(__m128d)(Y), (int)(P), \
8671 (__mmask8)(M), \
8672 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008673
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008674static __inline__ __m512 __DEFAULT_FN_ATTRS
8675_mm512_movehdup_ps (__m512 __A)
8676{
8677 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8678 (__v16sf)
8679 _mm512_undefined_ps (),
8680 (__mmask16) -1);
8681}
8682
8683static __inline__ __m512 __DEFAULT_FN_ATTRS
8684_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8685{
8686 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8687 (__v16sf) __W,
8688 (__mmask16) __U);
8689}
8690
8691static __inline__ __m512 __DEFAULT_FN_ATTRS
8692_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8693{
8694 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8695 (__v16sf)
8696 _mm512_setzero_ps (),
8697 (__mmask16) __U);
8698}
8699
8700static __inline__ __m512 __DEFAULT_FN_ATTRS
8701_mm512_moveldup_ps (__m512 __A)
8702{
8703 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8704 (__v16sf)
8705 _mm512_undefined_ps (),
8706 (__mmask16) -1);
8707}
8708
8709static __inline__ __m512 __DEFAULT_FN_ATTRS
8710_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8711{
8712 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8713 (__v16sf) __W,
8714 (__mmask16) __U);
8715}
8716
8717static __inline__ __m512 __DEFAULT_FN_ATTRS
8718_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8719{
8720 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8721 (__v16sf)
8722 _mm512_setzero_ps (),
8723 (__mmask16) __U);
8724}
8725
Craig Topper8c18e112016-05-17 04:41:50 +00008726#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8727 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8728 (__v16si)_mm512_undefined_epi32(), \
8729 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008730
Craig Topper8c18e112016-05-17 04:41:50 +00008731#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8732 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8733 (__v16si)(__m512i)(W), \
8734 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008735
Craig Topper8c18e112016-05-17 04:41:50 +00008736#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8737 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8738 (__v16si)_mm512_setzero_si512(), \
8739 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008740
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008741static __inline__ __m512d __DEFAULT_FN_ATTRS
8742_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8743{
8744 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8745 (__v8df) __W,
8746 (__mmask8) __U);
8747}
8748
8749static __inline__ __m512d __DEFAULT_FN_ATTRS
8750_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8751{
8752 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8753 (__v8df) _mm512_setzero_pd (),
8754 (__mmask8) __U);
8755}
8756
8757static __inline__ __m512i __DEFAULT_FN_ATTRS
8758_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8759{
8760 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8761 (__v8di) __W,
8762 (__mmask8) __U);
8763}
8764
8765static __inline__ __m512i __DEFAULT_FN_ATTRS
8766_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8767{
8768 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8769 (__v8di) _mm512_setzero_pd (),
8770 (__mmask8) __U);
8771}
8772
8773static __inline__ __m512d __DEFAULT_FN_ATTRS
8774_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8775{
8776 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8777 (__v8df) __W,
8778 (__mmask8) __U);
8779}
8780
8781static __inline__ __m512d __DEFAULT_FN_ATTRS
8782_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8783{
8784 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8785 (__v8df) _mm512_setzero_pd(),
8786 (__mmask8) __U);
8787}
8788
8789static __inline__ __m512i __DEFAULT_FN_ATTRS
8790_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8791{
8792 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8793 (__v8di) __W,
8794 (__mmask8) __U);
8795}
8796
8797static __inline__ __m512i __DEFAULT_FN_ATTRS
8798_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8799{
8800 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8801 (__v8di) _mm512_setzero_pd(),
8802 (__mmask8) __U);
8803}
8804
8805static __inline__ __m512 __DEFAULT_FN_ATTRS
8806_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8807{
8808 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8809 (__v16sf) __W,
8810 (__mmask16) __U);
8811}
8812
8813static __inline__ __m512 __DEFAULT_FN_ATTRS
8814_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8815{
8816 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8817 (__v16sf) _mm512_setzero_ps(),
8818 (__mmask16) __U);
8819}
8820
8821static __inline__ __m512i __DEFAULT_FN_ATTRS
8822_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8823{
8824 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8825 (__v16si) __W,
8826 (__mmask16) __U);
8827}
8828
8829static __inline__ __m512i __DEFAULT_FN_ATTRS
8830_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8831{
8832 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8833 (__v16si) _mm512_setzero_ps(),
8834 (__mmask16) __U);
8835}
8836
8837static __inline__ __m512 __DEFAULT_FN_ATTRS
8838_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8839{
8840 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8841 (__v16sf) __W,
8842 (__mmask16) __U);
8843}
8844
8845static __inline__ __m512 __DEFAULT_FN_ATTRS
8846_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8847{
8848 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8849 (__v16sf) _mm512_setzero_ps(),
8850 (__mmask16) __U);
8851}
8852
8853static __inline__ __m512i __DEFAULT_FN_ATTRS
8854_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8855{
8856 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8857 (__v16si) __W,
8858 (__mmask16) __U);
8859}
8860
8861static __inline__ __m512i __DEFAULT_FN_ATTRS
8862_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8863{
8864 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8865 (__v16si) _mm512_setzero_ps(),
8866 (__mmask16) __U);
8867}
8868
Craig Topper8c18e112016-05-17 04:41:50 +00008869#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
8870 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8871 (__v8df)_mm512_undefined_pd(), \
8872 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008873
Craig Topper8c18e112016-05-17 04:41:50 +00008874#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
8875 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8876 (__v8df)(__m512d)(W), \
8877 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008878
Craig Topper8c18e112016-05-17 04:41:50 +00008879#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
8880 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8881 (__v8df)_mm512_setzero_pd(), \
8882 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008883
8884static __inline__ __m512d __DEFAULT_FN_ATTRS
8885_mm512_cvtps_pd (__m256 __A)
8886{
8887 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8888 (__v8df)
8889 _mm512_undefined_pd (),
8890 (__mmask8) -1,
8891 _MM_FROUND_CUR_DIRECTION);
8892}
8893
8894static __inline__ __m512d __DEFAULT_FN_ATTRS
8895_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8896{
8897 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8898 (__v8df) __W,
8899 (__mmask8) __U,
8900 _MM_FROUND_CUR_DIRECTION);
8901}
8902
8903static __inline__ __m512d __DEFAULT_FN_ATTRS
8904_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8905{
8906 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8907 (__v8df)
8908 _mm512_setzero_pd (),
8909 (__mmask8) __U,
8910 _MM_FROUND_CUR_DIRECTION);
8911}
8912
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008913static __inline__ __m512d __DEFAULT_FN_ATTRS
8914_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8915{
8916 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8917 (__v8df) __W,
8918 (__mmask8) __U);
8919}
8920
8921static __inline__ __m512d __DEFAULT_FN_ATTRS
8922_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8923{
8924 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8925 (__v8df)
8926 _mm512_setzero_pd (),
8927 (__mmask8) __U);
8928}
8929
8930static __inline__ __m512 __DEFAULT_FN_ATTRS
8931_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8932{
8933 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8934 (__v16sf) __W,
8935 (__mmask16) __U);
8936}
8937
8938static __inline__ __m512 __DEFAULT_FN_ATTRS
8939_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8940{
8941 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8942 (__v16sf)
8943 _mm512_setzero_ps (),
8944 (__mmask16) __U);
8945}
8946
Michael Zuckerman708e7592016-05-03 10:42:46 +00008947static __inline__ void __DEFAULT_FN_ATTRS
8948_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8949{
8950 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8951 (__mmask8) __U);
8952}
8953
8954static __inline__ void __DEFAULT_FN_ATTRS
8955_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8956{
8957 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8958 (__mmask8) __U);
8959}
8960
8961static __inline__ void __DEFAULT_FN_ATTRS
8962_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8963{
8964 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8965 (__mmask16) __U);
8966}
8967
8968static __inline__ void __DEFAULT_FN_ATTRS
8969_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8970{
8971 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8972 (__mmask16) __U);
8973}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008974
Craig Topper8c18e112016-05-17 04:41:50 +00008975#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
8976 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8977 (__v2df)(__m128d)(B), \
8978 (__v4sf)_mm_undefined_ps(), \
8979 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008980
Craig Topper8c18e112016-05-17 04:41:50 +00008981#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
8982 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8983 (__v2df)(__m128d)(B), \
8984 (__v4sf)(__m128)(W), \
8985 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008986
Craig Topper8c18e112016-05-17 04:41:50 +00008987#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
8988 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8989 (__v2df)(__m128d)(B), \
8990 (__v4sf)_mm_setzero_ps(), \
8991 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008992
Craig Topper8c18e112016-05-17 04:41:50 +00008993#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
8994 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8995 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008996
Craig Topper8c18e112016-05-17 04:41:50 +00008997#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
8998 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8999 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009000
Craig Topper8c18e112016-05-17 04:41:50 +00009001#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9002 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009003
Craig Topper8c18e112016-05-17 04:41:50 +00009004#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9005 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009006
Craig Topper8c18e112016-05-17 04:41:50 +00009007#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9008 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9009 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009010
Craig Topper8c18e112016-05-17 04:41:50 +00009011#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9012 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9013 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009014
Craig Topper8c18e112016-05-17 04:41:50 +00009015#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9016 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9017 (__v4sf)(__m128)(B), \
9018 (__v2df)_mm_undefined_pd(), \
9019 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009020
Craig Topper8c18e112016-05-17 04:41:50 +00009021#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9022 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9023 (__v4sf)(__m128)(B), \
9024 (__v2df)(__m128d)(W), \
9025 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009026
Craig Topper8c18e112016-05-17 04:41:50 +00009027#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9028 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9029 (__v4sf)(__m128)(B), \
9030 (__v2df)_mm_setzero_pd(), \
9031 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009032
9033static __inline__ __m128d __DEFAULT_FN_ATTRS
9034_mm_cvtu32_sd (__m128d __A, unsigned __B)
9035{
9036 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9037}
9038
Craig Topper8c18e112016-05-17 04:41:50 +00009039#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9040 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9041 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009042
9043static __inline__ __m128d __DEFAULT_FN_ATTRS
9044_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9045{
9046 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9047 _MM_FROUND_CUR_DIRECTION);
9048}
9049
Craig Topper8c18e112016-05-17 04:41:50 +00009050#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9051 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9052 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009053
9054static __inline__ __m128 __DEFAULT_FN_ATTRS
9055_mm_cvtu32_ss (__m128 __A, unsigned __B)
9056{
9057 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9058 _MM_FROUND_CUR_DIRECTION);
9059}
9060
Craig Topper8c18e112016-05-17 04:41:50 +00009061#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9062 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9063 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009064
9065static __inline__ __m128 __DEFAULT_FN_ATTRS
9066_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9067{
9068 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9069 _MM_FROUND_CUR_DIRECTION);
9070}
9071
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009072static __inline__ __m512i __DEFAULT_FN_ATTRS
9073_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9074{
9075 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9076 __M);
9077}
9078
9079static __inline__ __m512i __DEFAULT_FN_ATTRS
9080_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9081{
9082 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9083 __M);
9084}
9085
Michael Zuckerman178113e2016-05-19 12:07:49 +00009086static __inline __m512i __DEFAULT_FN_ATTRS
9087_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9088 int __E, int __F, int __G, int __H,
9089 int __I, int __J, int __K, int __L,
9090 int __M, int __N, int __O, int __P)
9091{
9092 return __extension__ (__m512i)(__v16si)
9093 { __P, __O, __N, __M, __L, __K, __J, __I,
9094 __H, __G, __F, __E, __D, __C, __B, __A };
9095}
9096
9097#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9098 e8,e9,e10,e11,e12,e13,e14,e15) \
9099 _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 +00009100
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009101static __inline__ __m512i __DEFAULT_FN_ATTRS
9102_mm512_set_epi64 (long long __A, long long __B, long long __C,
9103 long long __D, long long __E, long long __F,
9104 long long __G, long long __H)
9105{
9106 return __extension__ (__m512i) (__v8di)
9107 { __H, __G, __F, __E, __D, __C, __B, __A };
9108}
9109
Michael Zuckerman178113e2016-05-19 12:07:49 +00009110#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9111 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9112
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009113static __inline__ __m512d __DEFAULT_FN_ATTRS
9114_mm512_set_pd (double __A, double __B, double __C, double __D,
9115 double __E, double __F, double __G, double __H)
9116{
9117 return __extension__ (__m512d)
9118 { __H, __G, __F, __E, __D, __C, __B, __A };
9119}
9120
Michael Zuckerman178113e2016-05-19 12:07:49 +00009121#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9122 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9123
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009124static __inline__ __m512 __DEFAULT_FN_ATTRS
9125_mm512_set_ps (float __A, float __B, float __C, float __D,
9126 float __E, float __F, float __G, float __H,
9127 float __I, float __J, float __K, float __L,
9128 float __M, float __N, float __O, float __P)
9129{
9130 return __extension__ (__m512)
9131 { __P, __O, __N, __M, __L, __K, __J, __I,
9132 __H, __G, __F, __E, __D, __C, __B, __A };
9133}
9134
Michael Zuckerman178113e2016-05-19 12:07:49 +00009135#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9136 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9137
Michael Kupersteine45af542015-06-30 13:36:19 +00009138#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009139
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009140#endif // __AVX512FINTRIN_H