blob: 2f311f79f3b28f261597e06d0630fb9640691e05 [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 Zuckermane6aa66a2016-06-01 08:34:03 +0000816#define _mm512_mask_max_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
817__builtin_ia32_maxpd512_mask ((__v8df)( __A),\
818 (__v8df)( __B),\
819 (__v8df)( __W),\
820 (__mmask8)( __U),( __R));\
821})
822
823#define _mm512_maskz_max_round_pd( __U, __A, __B, __R) __extension__ ({ \
824__builtin_ia32_maxpd512_mask ((__v8df)( __A),\
825 (__v8df)( __B),\
826 (__v8df)\
827 _mm512_setzero_pd (),\
828 (__mmask8)( __U),( __R));\
829})
830
831#define _mm512_max_round_pd( __A, __B, __R) __extension__ ({ \
832__builtin_ia32_maxpd512_mask ((__v8df)( __A),\
833 (__v8df)( __B),\
834 (__v8df)\
835 _mm512_undefined_pd (),\
836 (__mmask8) -1,( __R));\
837})
838
Michael Kupersteine45af542015-06-30 13:36:19 +0000839static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000840_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000841{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000842 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
843 (__v8df) __B,
844 (__v8df)
845 _mm512_setzero_pd (),
846 (__mmask8) -1,
847 _MM_FROUND_CUR_DIRECTION);
848}
849
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000850static __inline__ __m512d __DEFAULT_FN_ATTRS
851_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
852{
853 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
854 (__v8df) __B,
855 (__v8df) __W,
856 (__mmask8) __U,
857 _MM_FROUND_CUR_DIRECTION);
858}
859
860static __inline__ __m512d __DEFAULT_FN_ATTRS
861_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
862{
863 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
864 (__v8df) __B,
865 (__v8df)
866 _mm512_setzero_pd (),
867 (__mmask8) __U,
868 _MM_FROUND_CUR_DIRECTION);
869}
870
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000871#define _mm512_mask_max_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
872__builtin_ia32_maxps512_mask ((__v16sf)( __A),\
873 (__v16sf)( __B),\
874 (__v16sf)( __W),\
875 (__mmask16)( __U),( __R));\
876})
877
878#define _mm512_maskz_max_round_ps( __U, __A, __B, __R) __extension__ ({ \
879__builtin_ia32_maxps512_mask ((__v16sf)( __A),\
880 (__v16sf)( __B),\
881 (__v16sf)\
882 _mm512_setzero_ps (),\
883 (__mmask16)( __U),( __R));\
884})
885
886#define _mm512_max_round_ps( __A, __B, __R) __extension__ ({ \
887__builtin_ia32_maxps512_mask ((__v16sf)( __A),\
888 (__v16sf)( __B),\
889 (__v16sf)\
890 _mm512_undefined_ps (),\
891 (__mmask16) -1,( __R));\
892})
893
Michael Kupersteine45af542015-06-30 13:36:19 +0000894static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000895_mm512_max_ps(__m512 __A, __m512 __B)
896{
897 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
898 (__v16sf) __B,
899 (__v16sf)
900 _mm512_setzero_ps (),
901 (__mmask16) -1,
902 _MM_FROUND_CUR_DIRECTION);
903}
904
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000905static __inline__ __m512 __DEFAULT_FN_ATTRS
906_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
907{
908 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
909 (__v16sf) __B,
910 (__v16sf) __W,
911 (__mmask16) __U,
912 _MM_FROUND_CUR_DIRECTION);
913}
914
915static __inline__ __m512 __DEFAULT_FN_ATTRS
916_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
917{
918 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
919 (__v16sf) __B,
920 (__v16sf)
921 _mm512_setzero_ps (),
922 (__mmask16) __U,
923 _MM_FROUND_CUR_DIRECTION);
924}
925
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000926static __inline__ __m128 __DEFAULT_FN_ATTRS
927_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000928 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000929 (__v4sf) __B,
930 (__v4sf) __W,
931 (__mmask8) __U,
932 _MM_FROUND_CUR_DIRECTION);
933}
934
935static __inline__ __m128 __DEFAULT_FN_ATTRS
936_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000937 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000938 (__v4sf) __B,
939 (__v4sf) _mm_setzero_ps (),
940 (__mmask8) __U,
941 _MM_FROUND_CUR_DIRECTION);
942}
943
Craig Topper8c18e112016-05-17 04:41:50 +0000944#define _mm_max_round_ss(A, B, R) __extension__ ({ \
945 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
946 (__v4sf)(__m128)(B), \
947 (__v4sf)_mm_setzero_ps(), \
948 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000949
Craig Topper8c18e112016-05-17 04:41:50 +0000950#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
951 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
952 (__v4sf)(__m128)(B), \
953 (__v4sf)(__m128)(W), (__mmask8)(U), \
954 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000955
Craig Topper8c18e112016-05-17 04:41:50 +0000956#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
957 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
958 (__v4sf)(__m128)(B), \
959 (__v4sf)_mm_setzero_ps(), \
960 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000961
962static __inline__ __m128d __DEFAULT_FN_ATTRS
963_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000964 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000965 (__v2df) __B,
966 (__v2df) __W,
967 (__mmask8) __U,
968 _MM_FROUND_CUR_DIRECTION);
969}
970
971static __inline__ __m128d __DEFAULT_FN_ATTRS
972_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000973 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000974 (__v2df) __B,
975 (__v2df) _mm_setzero_pd (),
976 (__mmask8) __U,
977 _MM_FROUND_CUR_DIRECTION);
978}
979
Craig Topper8c18e112016-05-17 04:41:50 +0000980#define _mm_max_round_sd(A, B, R) __extension__ ({ \
981 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
982 (__v2df)(__m128d)(B), \
983 (__v2df)_mm_setzero_pd(), \
984 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000985
Craig Topper8c18e112016-05-17 04:41:50 +0000986#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
987 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
988 (__v2df)(__m128d)(B), \
989 (__v2df)(__m128d)(W), \
990 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000991
Craig Topper8c18e112016-05-17 04:41:50 +0000992#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
993 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
994 (__v2df)(__m128d)(B), \
995 (__v2df)_mm_setzero_pd(), \
996 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000997
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +0000998static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000999__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001000_mm512_max_epi32(__m512i __A, __m512i __B)
1001{
1002 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1003 (__v16si) __B,
1004 (__v16si)
1005 _mm512_setzero_si512 (),
1006 (__mmask16) -1);
1007}
1008
Michael Zuckermande860e52016-05-10 11:34:19 +00001009static __inline__ __m512i __DEFAULT_FN_ATTRS
1010_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1011{
1012 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1013 (__v16si) __B,
1014 (__v16si) __W, __M);
1015}
1016
1017static __inline__ __m512i __DEFAULT_FN_ATTRS
1018_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1019{
1020 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1021 (__v16si) __B,
1022 (__v16si)
1023 _mm512_setzero_si512 (),
1024 __M);
1025}
1026
Michael Kupersteine45af542015-06-30 13:36:19 +00001027static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001028_mm512_max_epu32(__m512i __A, __m512i __B)
1029{
1030 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1031 (__v16si) __B,
1032 (__v16si)
1033 _mm512_setzero_si512 (),
1034 (__mmask16) -1);
1035}
1036
Michael Zuckermande860e52016-05-10 11:34:19 +00001037static __inline__ __m512i __DEFAULT_FN_ATTRS
1038_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1041 (__v16si) __B,
1042 (__v16si) __W, __M);
1043}
1044
1045static __inline__ __m512i __DEFAULT_FN_ATTRS
1046_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1047{
1048 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1049 (__v16si) __B,
1050 (__v16si)
1051 _mm512_setzero_si512 (),
1052 __M);
1053}
1054
Michael Kupersteine45af542015-06-30 13:36:19 +00001055static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001056_mm512_max_epi64(__m512i __A, __m512i __B)
1057{
1058 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1059 (__v8di) __B,
1060 (__v8di)
1061 _mm512_setzero_si512 (),
1062 (__mmask8) -1);
1063}
1064
Michael Zuckermande860e52016-05-10 11:34:19 +00001065static __inline__ __m512i __DEFAULT_FN_ATTRS
1066_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1067{
1068 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1069 (__v8di) __B,
1070 (__v8di) __W, __M);
1071}
1072
1073static __inline__ __m512i __DEFAULT_FN_ATTRS
1074_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1075{
1076 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1077 (__v8di) __B,
1078 (__v8di)
1079 _mm512_setzero_si512 (),
1080 __M);
1081}
1082
Michael Kupersteine45af542015-06-30 13:36:19 +00001083static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001084_mm512_max_epu64(__m512i __A, __m512i __B)
1085{
1086 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1087 (__v8di) __B,
1088 (__v8di)
1089 _mm512_setzero_si512 (),
1090 (__mmask8) -1);
1091}
1092
Michael Zuckermande860e52016-05-10 11:34:19 +00001093static __inline__ __m512i __DEFAULT_FN_ATTRS
1094_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1095{
1096 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1097 (__v8di) __B,
1098 (__v8di) __W, __M);
1099}
1100
1101static __inline__ __m512i __DEFAULT_FN_ATTRS
1102_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1103{
1104 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1105 (__v8di) __B,
1106 (__v8di)
1107 _mm512_setzero_si512 (),
1108 __M);
1109}
1110
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001111#define _mm512_mask_min_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
1112__builtin_ia32_minpd512_mask ((__v8df)( __A),\
1113 (__v8df)( __B),\
1114 (__v8df)( __W),\
1115 (__mmask8)( __U),( __R));\
1116})
1117
1118#define _mm512_maskz_min_round_pd( __U, __A, __B, __R) __extension__ ({ \
1119__builtin_ia32_minpd512_mask ((__v8df)( __A),\
1120 (__v8df)( __B),\
1121 (__v8df)\
1122 _mm512_setzero_pd (),\
1123 (__mmask8)( __U),( __R));\
1124})
1125
1126#define _mm512_min_round_pd( __A, __B, __R) __extension__ ({ \
1127__builtin_ia32_minpd512_mask ((__v8df)( __A),\
1128 (__v8df)( __B),\
1129 (__v8df)\
1130 _mm512_undefined_pd (),\
1131 (__mmask8) -1,( __R));\
1132})
1133
Michael Kupersteine45af542015-06-30 13:36:19 +00001134static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001135_mm512_min_pd(__m512d __A, __m512d __B)
1136{
1137 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1138 (__v8df) __B,
1139 (__v8df)
1140 _mm512_setzero_pd (),
1141 (__mmask8) -1,
1142 _MM_FROUND_CUR_DIRECTION);
1143}
1144
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001145static __inline__ __m512d __DEFAULT_FN_ATTRS
1146_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1147{
1148 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1149 (__v8df) __B,
1150 (__v8df) __W,
1151 (__mmask8) __U,
1152 _MM_FROUND_CUR_DIRECTION);
1153}
1154
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001155#define _mm512_mask_min_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
1156__builtin_ia32_minps512_mask ((__v16sf)( __A),\
1157 (__v16sf)( __B),\
1158 (__v16sf)( __W),\
1159 (__mmask16)( __U),( __R));\
1160})
1161
1162#define _mm512_maskz_min_round_ps( __U, __A, __B, __R) __extension__ ({ \
1163__builtin_ia32_minps512_mask ((__v16sf)( __A),\
1164 (__v16sf)( __B),\
1165 (__v16sf)\
1166 _mm512_setzero_ps (),\
1167 (__mmask16)( __U),( __R));\
1168})
1169
1170#define _mm512_min_round_ps( __A, __B, __R) __extension__ ({ \
1171__builtin_ia32_minps512_mask ((__v16sf)( __A),\
1172 (__v16sf)( __B),\
1173 (__v16sf)\
1174 _mm512_undefined_ps (),\
1175 (__mmask16) -1,( __R));\
1176})
1177
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001178static __inline__ __m512d __DEFAULT_FN_ATTRS
1179_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1180{
1181 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1182 (__v8df) __B,
1183 (__v8df)
1184 _mm512_setzero_pd (),
1185 (__mmask8) __U,
1186 _MM_FROUND_CUR_DIRECTION);
1187}
1188
Michael Kupersteine45af542015-06-30 13:36:19 +00001189static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001190_mm512_min_ps(__m512 __A, __m512 __B)
1191{
1192 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1193 (__v16sf) __B,
1194 (__v16sf)
1195 _mm512_setzero_ps (),
1196 (__mmask16) -1,
1197 _MM_FROUND_CUR_DIRECTION);
1198}
1199
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001200static __inline__ __m512 __DEFAULT_FN_ATTRS
1201_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1202{
1203 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1204 (__v16sf) __B,
1205 (__v16sf) __W,
1206 (__mmask16) __U,
1207 _MM_FROUND_CUR_DIRECTION);
1208}
1209
1210static __inline__ __m512 __DEFAULT_FN_ATTRS
1211_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1212{
1213 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1214 (__v16sf) __B,
1215 (__v16sf)
1216 _mm512_setzero_ps (),
1217 (__mmask16) __U,
1218 _MM_FROUND_CUR_DIRECTION);
1219}
1220
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001221static __inline__ __m128 __DEFAULT_FN_ATTRS
1222_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001223 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001224 (__v4sf) __B,
1225 (__v4sf) __W,
1226 (__mmask8) __U,
1227 _MM_FROUND_CUR_DIRECTION);
1228}
1229
1230static __inline__ __m128 __DEFAULT_FN_ATTRS
1231_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001232 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001233 (__v4sf) __B,
1234 (__v4sf) _mm_setzero_ps (),
1235 (__mmask8) __U,
1236 _MM_FROUND_CUR_DIRECTION);
1237}
1238
Craig Topper8c18e112016-05-17 04:41:50 +00001239#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1240 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1241 (__v4sf)(__m128)(B), \
1242 (__v4sf)_mm_setzero_ps(), \
1243 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001244
Craig Topper8c18e112016-05-17 04:41:50 +00001245#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1246 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1247 (__v4sf)(__m128)(B), \
1248 (__v4sf)(__m128)(W), (__mmask8)(U), \
1249 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001250
Craig Topper8c18e112016-05-17 04:41:50 +00001251#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1252 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1253 (__v4sf)(__m128)(B), \
1254 (__v4sf)_mm_setzero_ps(), \
1255 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001256
1257static __inline__ __m128d __DEFAULT_FN_ATTRS
1258_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001259 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001260 (__v2df) __B,
1261 (__v2df) __W,
1262 (__mmask8) __U,
1263 _MM_FROUND_CUR_DIRECTION);
1264}
1265
1266static __inline__ __m128d __DEFAULT_FN_ATTRS
1267_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001268 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001269 (__v2df) __B,
1270 (__v2df) _mm_setzero_pd (),
1271 (__mmask8) __U,
1272 _MM_FROUND_CUR_DIRECTION);
1273}
1274
Craig Topper8c18e112016-05-17 04:41:50 +00001275#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1276 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1277 (__v2df)(__m128d)(B), \
1278 (__v2df)_mm_setzero_pd(), \
1279 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001280
Craig Topper8c18e112016-05-17 04:41:50 +00001281#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1282 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1283 (__v2df)(__m128d)(B), \
1284 (__v2df)(__m128d)(W), \
1285 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001286
Craig Topper8c18e112016-05-17 04:41:50 +00001287#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1288 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1289 (__v2df)(__m128d)(B), \
1290 (__v2df)_mm_setzero_pd(), \
1291 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001292
Adam Nemet0d5bb552014-07-28 17:14:40 +00001293static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001294__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001295_mm512_min_epi32(__m512i __A, __m512i __B)
1296{
1297 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1298 (__v16si) __B,
1299 (__v16si)
1300 _mm512_setzero_si512 (),
1301 (__mmask16) -1);
1302}
1303
Michael Zuckermande860e52016-05-10 11:34:19 +00001304static __inline__ __m512i __DEFAULT_FN_ATTRS
1305_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1306{
1307 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1308 (__v16si) __B,
1309 (__v16si) __W, __M);
1310}
1311
1312static __inline__ __m512i __DEFAULT_FN_ATTRS
1313_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1314{
1315 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1316 (__v16si) __B,
1317 (__v16si)
1318 _mm512_setzero_si512 (),
1319 __M);
1320}
1321
Michael Kupersteine45af542015-06-30 13:36:19 +00001322static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001323_mm512_min_epu32(__m512i __A, __m512i __B)
1324{
1325 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1326 (__v16si) __B,
1327 (__v16si)
1328 _mm512_setzero_si512 (),
1329 (__mmask16) -1);
1330}
1331
Michael Zuckermande860e52016-05-10 11:34:19 +00001332static __inline__ __m512i __DEFAULT_FN_ATTRS
1333_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1334{
1335 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1336 (__v16si) __B,
1337 (__v16si) __W, __M);
1338}
1339
1340static __inline__ __m512i __DEFAULT_FN_ATTRS
1341_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1342{
1343 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1344 (__v16si) __B,
1345 (__v16si)
1346 _mm512_setzero_si512 (),
1347 __M);
1348}
1349
Michael Kupersteine45af542015-06-30 13:36:19 +00001350static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001351_mm512_min_epi64(__m512i __A, __m512i __B)
1352{
1353 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1354 (__v8di) __B,
1355 (__v8di)
1356 _mm512_setzero_si512 (),
1357 (__mmask8) -1);
1358}
1359
Michael Zuckermande860e52016-05-10 11:34:19 +00001360static __inline__ __m512i __DEFAULT_FN_ATTRS
1361_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1362{
1363 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1364 (__v8di) __B,
1365 (__v8di) __W, __M);
1366}
1367
1368static __inline__ __m512i __DEFAULT_FN_ATTRS
1369_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1370{
1371 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1372 (__v8di) __B,
1373 (__v8di)
1374 _mm512_setzero_si512 (),
1375 __M);
1376}
1377
Michael Kupersteine45af542015-06-30 13:36:19 +00001378static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001379_mm512_min_epu64(__m512i __A, __m512i __B)
1380{
1381 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1382 (__v8di) __B,
1383 (__v8di)
1384 _mm512_setzero_si512 (),
1385 (__mmask8) -1);
1386}
1387
Michael Zuckermande860e52016-05-10 11:34:19 +00001388static __inline__ __m512i __DEFAULT_FN_ATTRS
1389_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1390{
1391 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1392 (__v8di) __B,
1393 (__v8di) __W, __M);
1394}
1395
1396static __inline__ __m512i __DEFAULT_FN_ATTRS
1397_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1398{
1399 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1400 (__v8di) __B,
1401 (__v8di)
1402 _mm512_setzero_si512 (),
1403 __M);
1404}
1405
Michael Kupersteine45af542015-06-30 13:36:19 +00001406static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001407_mm512_mul_epi32(__m512i __X, __m512i __Y)
1408{
1409 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1410 (__v16si) __Y,
1411 (__v8di)
1412 _mm512_setzero_si512 (),
1413 (__mmask8) -1);
1414}
1415
Michael Kupersteine45af542015-06-30 13:36:19 +00001416static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001417_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1418{
1419 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1420 (__v16si) __Y,
1421 (__v8di) __W, __M);
1422}
1423
Michael Kupersteine45af542015-06-30 13:36:19 +00001424static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001425_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1426{
1427 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1428 (__v16si) __Y,
1429 (__v8di)
1430 _mm512_setzero_si512 (),
1431 __M);
1432}
1433
Michael Kupersteine45af542015-06-30 13:36:19 +00001434static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001435_mm512_mul_epu32(__m512i __X, __m512i __Y)
1436{
1437 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1438 (__v16si) __Y,
1439 (__v8di)
1440 _mm512_setzero_si512 (),
1441 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001442}
1443
Michael Kupersteine45af542015-06-30 13:36:19 +00001444static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001445_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1446{
1447 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1448 (__v16si) __Y,
1449 (__v8di) __W, __M);
1450}
1451
Michael Kupersteine45af542015-06-30 13:36:19 +00001452static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001453_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1454{
1455 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1456 (__v16si) __Y,
1457 (__v8di)
1458 _mm512_setzero_si512 (),
1459 __M);
1460}
1461
Michael Kupersteine45af542015-06-30 13:36:19 +00001462static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001463_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1464{
1465 return (__m512i) ((__v16si) __A * (__v16si) __B);
1466}
1467
Michael Kupersteine45af542015-06-30 13:36:19 +00001468static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001469_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1470{
1471 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1472 (__v16si) __B,
1473 (__v16si)
1474 _mm512_setzero_si512 (),
1475 __M);
1476}
1477
Michael Kupersteine45af542015-06-30 13:36:19 +00001478static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001479_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1480{
1481 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1482 (__v16si) __B,
1483 (__v16si) __W, __M);
1484}
1485
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001486#define _mm512_mask_sqrt_round_pd( __W, __U, __A, __R) __extension__ ({ \
1487__builtin_ia32_sqrtpd512_mask ((__v8df)( __A),\
1488 (__v8df)( __W),\
1489 (__mmask8)( __U),( __R));\
1490})
1491
1492#define _mm512_maskz_sqrt_round_pd( __U, __A, __R) __extension__ ({ \
1493__builtin_ia32_sqrtpd512_mask ((__v8df)( __A),\
1494 (__v8df)\
1495 _mm512_setzero_pd (),\
1496 (__mmask8)( __U),( __R));\
1497})
1498
1499#define _mm512_sqrt_round_pd( __A, __R) __extension__ ({ \
1500__builtin_ia32_sqrtpd512_mask ((__v8df)( __A),\
1501 (__v8df)\
1502 _mm512_undefined_pd (),\
1503 (__mmask8) -1,( __R));\
1504})
1505
Michael Kupersteine45af542015-06-30 13:36:19 +00001506static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001507_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001508{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001509 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001510 (__v8df) _mm512_setzero_pd (),
1511 (__mmask8) -1,
1512 _MM_FROUND_CUR_DIRECTION);
1513}
1514
Michael Zuckermancb856772016-05-16 11:42:01 +00001515static __inline__ __m512d __DEFAULT_FN_ATTRS
1516_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1517{
1518 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1519 (__v8df) __W,
1520 (__mmask8) __U,
1521 _MM_FROUND_CUR_DIRECTION);
1522}
1523
1524static __inline__ __m512d __DEFAULT_FN_ATTRS
1525_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1526{
1527 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1528 (__v8df)
1529 _mm512_setzero_pd (),
1530 (__mmask8) __U,
1531 _MM_FROUND_CUR_DIRECTION);
1532}
1533
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001534#define _mm512_mask_sqrt_round_ps( __W, __U, __A, __R) __extension__ ({ \
1535__builtin_ia32_sqrtps512_mask ((__v16sf)( __A),\
1536 (__v16sf)( __W),\
1537 (__mmask16)( __U),( __R));\
1538})
1539
1540#define _mm512_maskz_sqrt_round_ps( __U, __A, __R) __extension__ ({ \
1541__builtin_ia32_sqrtps512_mask ((__v16sf)( __A),\
1542 (__v16sf)\
1543 _mm512_setzero_ps (),\
1544 (__mmask16)( __U),( __R));\
1545})
1546
1547#define _mm512_sqrt_round_ps( __A, __R) __extension__ ({ \
1548__builtin_ia32_sqrtps512_mask ((__v16sf)( __A),\
1549 (__v16sf)\
1550 _mm512_undefined_ps (),\
1551 (__mmask16) -1,( __R));\
1552})
1553
Michael Kupersteine45af542015-06-30 13:36:19 +00001554static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001555_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001556{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001557 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001558 (__v16sf) _mm512_setzero_ps (),
1559 (__mmask16) -1,
1560 _MM_FROUND_CUR_DIRECTION);
1561}
1562
Michael Zuckermancb856772016-05-16 11:42:01 +00001563static __inline__ __m512 __DEFAULT_FN_ATTRS
1564_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1565{
1566 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1567 (__v16sf) __W,
1568 (__mmask16) __U,
1569 _MM_FROUND_CUR_DIRECTION);
1570}
1571
1572static __inline__ __m512 __DEFAULT_FN_ATTRS
1573_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1574{
1575 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1576 (__v16sf) _mm512_setzero_ps (),
1577 (__mmask16) __U,
1578 _MM_FROUND_CUR_DIRECTION);
1579}
1580
Michael Kupersteine45af542015-06-30 13:36:19 +00001581static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001582_mm512_rsqrt14_pd(__m512d __A)
1583{
1584 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1585 (__v8df)
1586 _mm512_setzero_pd (),
1587 (__mmask8) -1);}
1588
Michael Zuckermancb856772016-05-16 11:42:01 +00001589static __inline__ __m512d __DEFAULT_FN_ATTRS
1590_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1591{
1592 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1593 (__v8df) __W,
1594 (__mmask8) __U);
1595}
1596
1597static __inline__ __m512d __DEFAULT_FN_ATTRS
1598_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1599{
1600 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1601 (__v8df)
1602 _mm512_setzero_pd (),
1603 (__mmask8) __U);
1604}
1605
Michael Kupersteine45af542015-06-30 13:36:19 +00001606static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001607_mm512_rsqrt14_ps(__m512 __A)
1608{
1609 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1610 (__v16sf)
1611 _mm512_setzero_ps (),
1612 (__mmask16) -1);
1613}
1614
Michael Zuckermancb856772016-05-16 11:42:01 +00001615static __inline__ __m512 __DEFAULT_FN_ATTRS
1616_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1617{
1618 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1619 (__v16sf) __W,
1620 (__mmask16) __U);
1621}
1622
1623static __inline__ __m512 __DEFAULT_FN_ATTRS
1624_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1625{
1626 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1627 (__v16sf)
1628 _mm512_setzero_ps (),
1629 (__mmask16) __U);
1630}
1631
Michael Kupersteine45af542015-06-30 13:36:19 +00001632static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001633_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1634{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001635 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001636 (__v4sf) __B,
1637 (__v4sf)
1638 _mm_setzero_ps (),
1639 (__mmask8) -1);
1640}
1641
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001642static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001643_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001644{
1645 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1646 (__v4sf) __B,
1647 (__v4sf) __W,
1648 (__mmask8) __U);
1649}
1650
1651static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001652_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001653{
1654 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1655 (__v4sf) __B,
1656 (__v4sf) _mm_setzero_ps (),
1657 (__mmask8) __U);
1658}
1659
Michael Kupersteine45af542015-06-30 13:36:19 +00001660static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001661_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1662{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001663 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001664 (__v2df) __B,
1665 (__v2df)
1666 _mm_setzero_pd (),
1667 (__mmask8) -1);
1668}
1669
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001670static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001671_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001672{
1673 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1674 (__v2df) __B,
1675 (__v2df) __W,
1676 (__mmask8) __U);
1677}
1678
1679static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001680_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001681{
1682 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1683 (__v2df) __B,
1684 (__v2df) _mm_setzero_pd (),
1685 (__mmask8) __U);
1686}
1687
Michael Kupersteine45af542015-06-30 13:36:19 +00001688static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001689_mm512_rcp14_pd(__m512d __A)
1690{
1691 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1692 (__v8df)
1693 _mm512_setzero_pd (),
1694 (__mmask8) -1);
1695}
1696
Michael Zuckermancb856772016-05-16 11:42:01 +00001697static __inline__ __m512d __DEFAULT_FN_ATTRS
1698_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1699{
1700 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1701 (__v8df) __W,
1702 (__mmask8) __U);
1703}
1704
1705static __inline__ __m512d __DEFAULT_FN_ATTRS
1706_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1707{
1708 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1709 (__v8df)
1710 _mm512_setzero_pd (),
1711 (__mmask8) __U);
1712}
1713
Michael Kupersteine45af542015-06-30 13:36:19 +00001714static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001715_mm512_rcp14_ps(__m512 __A)
1716{
1717 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1718 (__v16sf)
1719 _mm512_setzero_ps (),
1720 (__mmask16) -1);
1721}
Michael Zuckermancb856772016-05-16 11:42:01 +00001722
1723static __inline__ __m512 __DEFAULT_FN_ATTRS
1724_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1725{
1726 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1727 (__v16sf) __W,
1728 (__mmask16) __U);
1729}
1730
1731static __inline__ __m512 __DEFAULT_FN_ATTRS
1732_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1733{
1734 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1735 (__v16sf)
1736 _mm512_setzero_ps (),
1737 (__mmask16) __U);
1738}
1739
Michael Kupersteine45af542015-06-30 13:36:19 +00001740static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001741_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001742{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001743 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001744 (__v4sf) __B,
1745 (__v4sf)
1746 _mm_setzero_ps (),
1747 (__mmask8) -1);
1748}
1749
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001750static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001751_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001752{
1753 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1754 (__v4sf) __B,
1755 (__v4sf) __W,
1756 (__mmask8) __U);
1757}
1758
1759static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001760_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001761{
1762 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1763 (__v4sf) __B,
1764 (__v4sf) _mm_setzero_ps (),
1765 (__mmask8) __U);
1766}
1767
Michael Kupersteine45af542015-06-30 13:36:19 +00001768static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001769_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001770{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001771 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001772 (__v2df) __B,
1773 (__v2df)
1774 _mm_setzero_pd (),
1775 (__mmask8) -1);
1776}
1777
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001778static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001779_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001780{
1781 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1782 (__v2df) __B,
1783 (__v2df) __W,
1784 (__mmask8) __U);
1785}
1786
1787static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001788_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001789{
1790 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1791 (__v2df) __B,
1792 (__v2df) _mm_setzero_pd (),
1793 (__mmask8) __U);
1794}
1795
Michael Kupersteine45af542015-06-30 13:36:19 +00001796static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001797_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001798{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001799 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1800 _MM_FROUND_FLOOR,
1801 (__v16sf) __A, -1,
1802 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001803}
1804
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001805static __inline__ __m512 __DEFAULT_FN_ATTRS
1806_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1807{
1808 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1809 _MM_FROUND_FLOOR,
1810 (__v16sf) __W, __U,
1811 _MM_FROUND_CUR_DIRECTION);
1812}
1813
Michael Kupersteine45af542015-06-30 13:36:19 +00001814static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001815_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001816{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001817 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1818 _MM_FROUND_FLOOR,
1819 (__v8df) __A, -1,
1820 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001821}
1822
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001823static __inline__ __m512d __DEFAULT_FN_ATTRS
1824_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1825{
1826 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1827 _MM_FROUND_FLOOR,
1828 (__v8df) __W, __U,
1829 _MM_FROUND_CUR_DIRECTION);
1830}
1831
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001832static __inline__ __m512 __DEFAULT_FN_ATTRS
1833_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1834{
1835 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1836 _MM_FROUND_CEIL,
1837 (__v16sf) __W, __U,
1838 _MM_FROUND_CUR_DIRECTION);
1839}
1840
Michael Kupersteine45af542015-06-30 13:36:19 +00001841static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001842_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001843{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001844 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1845 _MM_FROUND_CEIL,
1846 (__v16sf) __A, -1,
1847 _MM_FROUND_CUR_DIRECTION);
1848}
1849
Michael Kupersteine45af542015-06-30 13:36:19 +00001850static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001851_mm512_ceil_pd(__m512d __A)
1852{
1853 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1854 _MM_FROUND_CEIL,
1855 (__v8df) __A, -1,
1856 _MM_FROUND_CUR_DIRECTION);
1857}
1858
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001859static __inline__ __m512d __DEFAULT_FN_ATTRS
1860_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1861{
1862 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1863 _MM_FROUND_CEIL,
1864 (__v8df) __W, __U,
1865 _MM_FROUND_CUR_DIRECTION);
1866}
1867
Michael Kupersteine45af542015-06-30 13:36:19 +00001868static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001869_mm512_abs_epi64(__m512i __A)
1870{
1871 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1872 (__v8di)
1873 _mm512_setzero_si512 (),
1874 (__mmask8) -1);
1875}
1876
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001877static __inline__ __m512i __DEFAULT_FN_ATTRS
1878_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1879{
1880 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1881 (__v8di) __W,
1882 (__mmask8) __U);
1883}
1884
1885static __inline__ __m512i __DEFAULT_FN_ATTRS
1886_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1887{
1888 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1889 (__v8di)
1890 _mm512_setzero_si512 (),
1891 (__mmask8) __U);
1892}
1893
Michael Kupersteine45af542015-06-30 13:36:19 +00001894static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001895_mm512_abs_epi32(__m512i __A)
1896{
1897 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1898 (__v16si)
1899 _mm512_setzero_si512 (),
1900 (__mmask16) -1);
1901}
1902
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001903static __inline__ __m512i __DEFAULT_FN_ATTRS
1904_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1905{
1906 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1907 (__v16si) __W,
1908 (__mmask16) __U);
1909}
1910
1911static __inline__ __m512i __DEFAULT_FN_ATTRS
1912_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1913{
1914 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1915 (__v16si)
1916 _mm512_setzero_si512 (),
1917 (__mmask16) __U);
1918}
1919
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001920static __inline__ __m128 __DEFAULT_FN_ATTRS
1921_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001922 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001923 (__v4sf) __B,
1924 (__v4sf) __W,
1925 (__mmask8) __U,
1926 _MM_FROUND_CUR_DIRECTION);
1927}
1928
1929static __inline__ __m128 __DEFAULT_FN_ATTRS
1930_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001931 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001932 (__v4sf) __B,
1933 (__v4sf) _mm_setzero_ps (),
1934 (__mmask8) __U,
1935 _MM_FROUND_CUR_DIRECTION);
1936}
1937
Craig Topper8c18e112016-05-17 04:41:50 +00001938#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1939 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1940 (__v4sf)(__m128)(B), \
1941 (__v4sf)_mm_setzero_ps(), \
1942 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001943
Craig Topper8c18e112016-05-17 04:41:50 +00001944#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1945 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1946 (__v4sf)(__m128)(B), \
1947 (__v4sf)(__m128)(W), (__mmask8)(U), \
1948 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001949
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)_mm_setzero_ps(), \
1954 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
1956static __inline__ __m128d __DEFAULT_FN_ATTRS
1957_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001958 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001959 (__v2df) __B,
1960 (__v2df) __W,
1961 (__mmask8) __U,
1962 _MM_FROUND_CUR_DIRECTION);
1963}
1964
1965static __inline__ __m128d __DEFAULT_FN_ATTRS
1966_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001967 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001968 (__v2df) __B,
1969 (__v2df) _mm_setzero_pd (),
1970 (__mmask8) __U,
1971 _MM_FROUND_CUR_DIRECTION);
1972}
Craig Topper8c18e112016-05-17 04:41:50 +00001973#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1974 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1975 (__v2df)(__m128d)(B), \
1976 (__v2df)_mm_setzero_pd(), \
1977 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001978
Craig Topper8c18e112016-05-17 04:41:50 +00001979#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1980 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1981 (__v2df)(__m128d)(B), \
1982 (__v2df)(__m128d)(W), \
1983 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001984
Craig Topper8c18e112016-05-17 04:41:50 +00001985#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1986 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1987 (__v2df)(__m128d)(B), \
1988 (__v2df)_mm_setzero_pd(), \
1989 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001990
Asaf Badouhffeb6242015-07-21 15:27:28 +00001991static __inline__ __m512d __DEFAULT_FN_ATTRS
1992_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1993 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1994 (__v8df) __B,
1995 (__v8df) __W,
1996 (__mmask8) __U,
1997 _MM_FROUND_CUR_DIRECTION);
1998}
1999
2000static __inline__ __m512d __DEFAULT_FN_ATTRS
2001_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2002 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2003 (__v8df) __B,
2004 (__v8df) _mm512_setzero_pd (),
2005 (__mmask8) __U,
2006 _MM_FROUND_CUR_DIRECTION);
2007}
2008
2009static __inline__ __m512 __DEFAULT_FN_ATTRS
2010_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2011 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2012 (__v16sf) __B,
2013 (__v16sf) __W,
2014 (__mmask16) __U,
2015 _MM_FROUND_CUR_DIRECTION);
2016}
2017
2018static __inline__ __m512 __DEFAULT_FN_ATTRS
2019_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2020 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2021 (__v16sf) __B,
2022 (__v16sf) _mm512_setzero_ps (),
2023 (__mmask16) __U,
2024 _MM_FROUND_CUR_DIRECTION);
2025}
2026
Craig Topper8c18e112016-05-17 04:41:50 +00002027#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
2028 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2029 (__v8df)(__m512d)(B), \
2030 (__v8df)_mm512_setzero_pd(), \
2031 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002032
Craig Topper8c18e112016-05-17 04:41:50 +00002033#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
2034 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2035 (__v8df)(__m512d)(B), \
2036 (__v8df)(__m512d)(W), (__mmask8)(U), \
2037 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002038
Craig Topper8c18e112016-05-17 04:41:50 +00002039#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
2040 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2041 (__v8df)(__m512d)(B), \
2042 (__v8df)_mm512_setzero_pd(), \
2043 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002044
Craig Topper8c18e112016-05-17 04:41:50 +00002045#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
2046 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2047 (__v16sf)(__m512)(B), \
2048 (__v16sf)_mm512_setzero_ps(), \
2049 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002050
Craig Topper8c18e112016-05-17 04:41:50 +00002051#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
2052 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2053 (__v16sf)(__m512)(B), \
2054 (__v16sf)(__m512)(W), (__mmask16)(U), \
2055 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002056
Craig Topper8c18e112016-05-17 04:41:50 +00002057#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
2058 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2059 (__v16sf)(__m512)(B), \
2060 (__v16sf)_mm512_setzero_ps(), \
2061 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002062
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002063static __inline__ __m128 __DEFAULT_FN_ATTRS
2064_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002065 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002066 (__v4sf) __B,
2067 (__v4sf) __W,
2068 (__mmask8) __U,
2069 _MM_FROUND_CUR_DIRECTION);
2070}
2071
2072static __inline__ __m128 __DEFAULT_FN_ATTRS
2073_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002074 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002075 (__v4sf) __B,
2076 (__v4sf) _mm_setzero_ps (),
2077 (__mmask8) __U,
2078 _MM_FROUND_CUR_DIRECTION);
2079}
Craig Topper8c18e112016-05-17 04:41:50 +00002080#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
2081 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2082 (__v4sf)(__m128)(B), \
2083 (__v4sf)_mm_setzero_ps(), \
2084 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002085
Craig Topper8c18e112016-05-17 04:41:50 +00002086#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
2087 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2088 (__v4sf)(__m128)(B), \
2089 (__v4sf)(__m128)(W), (__mmask8)(U), \
2090 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002091
Craig Topper8c18e112016-05-17 04:41:50 +00002092#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
2093 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2094 (__v4sf)(__m128)(B), \
2095 (__v4sf)_mm_setzero_ps(), \
2096 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002097
2098static __inline__ __m128d __DEFAULT_FN_ATTRS
2099_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002100 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002101 (__v2df) __B,
2102 (__v2df) __W,
2103 (__mmask8) __U,
2104 _MM_FROUND_CUR_DIRECTION);
2105}
2106
2107static __inline__ __m128d __DEFAULT_FN_ATTRS
2108_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002109 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002110 (__v2df) __B,
2111 (__v2df) _mm_setzero_pd (),
2112 (__mmask8) __U,
2113 _MM_FROUND_CUR_DIRECTION);
2114}
2115
Craig Topper8c18e112016-05-17 04:41:50 +00002116#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
2117 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2118 (__v2df)(__m128d)(B), \
2119 (__v2df)_mm_setzero_pd(), \
2120 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002121
Craig Topper8c18e112016-05-17 04:41:50 +00002122#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
2123 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2124 (__v2df)(__m128d)(B), \
2125 (__v2df)(__m128d)(W), \
2126 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002127
Craig Topper8c18e112016-05-17 04:41:50 +00002128#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
2129 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2130 (__v2df)(__m128d)(B), \
2131 (__v2df)_mm_setzero_pd(), \
2132 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002133
Asaf Badouhffeb6242015-07-21 15:27:28 +00002134static __inline__ __m512d __DEFAULT_FN_ATTRS
2135_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2136 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2137 (__v8df) __B,
2138 (__v8df) __W,
2139 (__mmask8) __U,
2140 _MM_FROUND_CUR_DIRECTION);
2141}
2142
2143static __inline__ __m512d __DEFAULT_FN_ATTRS
2144_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2145 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2146 (__v8df) __B,
2147 (__v8df)
2148 _mm512_setzero_pd (),
2149 (__mmask8) __U,
2150 _MM_FROUND_CUR_DIRECTION);
2151}
2152
2153static __inline__ __m512 __DEFAULT_FN_ATTRS
2154_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2155 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2156 (__v16sf) __B,
2157 (__v16sf) __W,
2158 (__mmask16) __U,
2159 _MM_FROUND_CUR_DIRECTION);
2160}
2161
2162static __inline__ __m512 __DEFAULT_FN_ATTRS
2163_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2164 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2165 (__v16sf) __B,
2166 (__v16sf)
2167 _mm512_setzero_ps (),
2168 (__mmask16) __U,
2169 _MM_FROUND_CUR_DIRECTION);
2170}
2171
Craig Topper8c18e112016-05-17 04:41:50 +00002172#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2173 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2174 (__v8df)(__m512d)(B), \
2175 (__v8df)_mm512_setzero_pd(), \
2176 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002177
Craig Topper8c18e112016-05-17 04:41:50 +00002178#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2179 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2180 (__v8df)(__m512d)(B), \
2181 (__v8df)(__m512d)(W), (__mmask8)(U), \
2182 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002183
Craig Topper8c18e112016-05-17 04:41:50 +00002184#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2185 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2186 (__v8df)(__m512d)(B), \
2187 (__v8df)_mm512_setzero_pd(), \
2188 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002189
Craig Topper8c18e112016-05-17 04:41:50 +00002190#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2191 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2192 (__v16sf)(__m512)(B), \
2193 (__v16sf)_mm512_setzero_ps(), \
2194 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002195
Craig Topper8c18e112016-05-17 04:41:50 +00002196#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2197 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2198 (__v16sf)(__m512)(B), \
2199 (__v16sf)(__m512)(W), (__mmask16)(U), \
2200 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002201
Craig Topper8c18e112016-05-17 04:41:50 +00002202#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2203 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2204 (__v16sf)(__m512)(B), \
2205 (__v16sf)_mm512_setzero_ps(), \
2206 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002207
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002208static __inline__ __m128 __DEFAULT_FN_ATTRS
2209_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002210 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002211 (__v4sf) __B,
2212 (__v4sf) __W,
2213 (__mmask8) __U,
2214 _MM_FROUND_CUR_DIRECTION);
2215}
2216
2217static __inline__ __m128 __DEFAULT_FN_ATTRS
2218_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002219 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002220 (__v4sf) __B,
2221 (__v4sf) _mm_setzero_ps (),
2222 (__mmask8) __U,
2223 _MM_FROUND_CUR_DIRECTION);
2224}
Craig Topper8c18e112016-05-17 04:41:50 +00002225#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2226 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2227 (__v4sf)(__m128)(B), \
2228 (__v4sf)_mm_setzero_ps(), \
2229 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002230
Craig Topper8c18e112016-05-17 04:41:50 +00002231#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2232 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2233 (__v4sf)(__m128)(B), \
2234 (__v4sf)(__m128)(W), (__mmask8)(U), \
2235 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002236
Craig Topper8c18e112016-05-17 04:41:50 +00002237#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2238 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2239 (__v4sf)(__m128)(B), \
2240 (__v4sf)_mm_setzero_ps(), \
2241 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002242
2243static __inline__ __m128d __DEFAULT_FN_ATTRS
2244_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002245 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246 (__v2df) __B,
2247 (__v2df) __W,
2248 (__mmask8) __U,
2249 _MM_FROUND_CUR_DIRECTION);
2250}
2251
2252static __inline__ __m128d __DEFAULT_FN_ATTRS
2253_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002254 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002255 (__v2df) __B,
2256 (__v2df) _mm_setzero_pd (),
2257 (__mmask8) __U,
2258 _MM_FROUND_CUR_DIRECTION);
2259}
2260
Craig Topper8c18e112016-05-17 04:41:50 +00002261#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2262 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2263 (__v2df)(__m128d)(B), \
2264 (__v2df)_mm_setzero_pd(), \
2265 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002266
Craig Topper8c18e112016-05-17 04:41:50 +00002267#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2268 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2269 (__v2df)(__m128d)(B), \
2270 (__v2df)(__m128d)(W), \
2271 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002272
Craig Topper8c18e112016-05-17 04:41:50 +00002273#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2274 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2275 (__v2df)(__m128d)(B), \
2276 (__v2df)_mm_setzero_pd(), \
2277 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002278
Asaf Badouhffeb6242015-07-21 15:27:28 +00002279static __inline__ __m512d __DEFAULT_FN_ATTRS
2280_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2281 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2282 (__v8df) __B,
2283 (__v8df) __W,
2284 (__mmask8) __U,
2285 _MM_FROUND_CUR_DIRECTION);
2286}
2287
2288static __inline__ __m512d __DEFAULT_FN_ATTRS
2289_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2290 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2291 (__v8df) __B,
2292 (__v8df)
2293 _mm512_setzero_pd (),
2294 (__mmask8) __U,
2295 _MM_FROUND_CUR_DIRECTION);
2296}
2297
2298static __inline__ __m512 __DEFAULT_FN_ATTRS
2299_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2300 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2301 (__v16sf) __B,
2302 (__v16sf) __W,
2303 (__mmask16) __U,
2304 _MM_FROUND_CUR_DIRECTION);
2305}
2306
2307static __inline__ __m512 __DEFAULT_FN_ATTRS
2308_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2309 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2310 (__v16sf) __B,
2311 (__v16sf)
2312 _mm512_setzero_ps (),
2313 (__mmask16) __U,
2314 _MM_FROUND_CUR_DIRECTION);
2315}
2316
Craig Topper8c18e112016-05-17 04:41:50 +00002317#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2318 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2319 (__v8df)(__m512d)(B), \
2320 (__v8df)_mm512_setzero_pd(), \
2321 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002322
Craig Topper8c18e112016-05-17 04:41:50 +00002323#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2324 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2325 (__v8df)(__m512d)(B), \
2326 (__v8df)(__m512d)(W), (__mmask8)(U), \
2327 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002328
Craig Topper8c18e112016-05-17 04:41:50 +00002329#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2330 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2331 (__v8df)(__m512d)(B), \
2332 (__v8df)_mm512_setzero_pd(), \
2333 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002334
Craig Topper8c18e112016-05-17 04:41:50 +00002335#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2336 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2337 (__v16sf)(__m512)(B), \
2338 (__v16sf)_mm512_setzero_ps(), \
2339 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002340
Craig Topper8c18e112016-05-17 04:41:50 +00002341#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2342 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2343 (__v16sf)(__m512)(B), \
2344 (__v16sf)(__m512)(W), (__mmask16)(U), \
2345 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002346
Craig Topper8c18e112016-05-17 04:41:50 +00002347#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2348 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2349 (__v16sf)(__m512)(B), \
2350 (__v16sf)_mm512_setzero_ps(), \
2351 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002352
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002353static __inline__ __m128 __DEFAULT_FN_ATTRS
2354_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002355 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002356 (__v4sf) __B,
2357 (__v4sf) __W,
2358 (__mmask8) __U,
2359 _MM_FROUND_CUR_DIRECTION);
2360}
2361
2362static __inline__ __m128 __DEFAULT_FN_ATTRS
2363_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002364 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002365 (__v4sf) __B,
2366 (__v4sf) _mm_setzero_ps (),
2367 (__mmask8) __U,
2368 _MM_FROUND_CUR_DIRECTION);
2369}
2370
Craig Topper8c18e112016-05-17 04:41:50 +00002371#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2372 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2373 (__v4sf)(__m128)(B), \
2374 (__v4sf)_mm_setzero_ps(), \
2375 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002376
Craig Topper8c18e112016-05-17 04:41:50 +00002377#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2378 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2379 (__v4sf)(__m128)(B), \
2380 (__v4sf)(__m128)(W), (__mmask8)(U), \
2381 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002382
Craig Topper8c18e112016-05-17 04:41:50 +00002383#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2384 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2385 (__v4sf)(__m128)(B), \
2386 (__v4sf)_mm_setzero_ps(), \
2387 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002388
2389static __inline__ __m128d __DEFAULT_FN_ATTRS
2390_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002391 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002392 (__v2df) __B,
2393 (__v2df) __W,
2394 (__mmask8) __U,
2395 _MM_FROUND_CUR_DIRECTION);
2396}
2397
2398static __inline__ __m128d __DEFAULT_FN_ATTRS
2399_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002400 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002401 (__v2df) __B,
2402 (__v2df) _mm_setzero_pd (),
2403 (__mmask8) __U,
2404 _MM_FROUND_CUR_DIRECTION);
2405}
2406
Craig Topper8c18e112016-05-17 04:41:50 +00002407#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2408 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2409 (__v2df)(__m128d)(B), \
2410 (__v2df)_mm_setzero_pd(), \
2411 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002412
Craig Topper8c18e112016-05-17 04:41:50 +00002413#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2414 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2415 (__v2df)(__m128d)(B), \
2416 (__v2df)(__m128d)(W), \
2417 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002418
Craig Topper8c18e112016-05-17 04:41:50 +00002419#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2420 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2421 (__v2df)(__m128d)(B), \
2422 (__v2df)_mm_setzero_pd(), \
2423 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002424
Asaf Badouhffeb6242015-07-21 15:27:28 +00002425static __inline__ __m512d __DEFAULT_FN_ATTRS
2426_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2427 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2428 (__v8df) __B,
2429 (__v8df) __W,
2430 (__mmask8) __U,
2431 _MM_FROUND_CUR_DIRECTION);
2432}
2433
2434static __inline__ __m512d __DEFAULT_FN_ATTRS
2435_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2436 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2437 (__v8df) __B,
2438 (__v8df)
2439 _mm512_setzero_pd (),
2440 (__mmask8) __U,
2441 _MM_FROUND_CUR_DIRECTION);
2442}
2443
2444static __inline__ __m512 __DEFAULT_FN_ATTRS
2445_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2446 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2447 (__v16sf) __B,
2448 (__v16sf) __W,
2449 (__mmask16) __U,
2450 _MM_FROUND_CUR_DIRECTION);
2451}
2452
2453static __inline__ __m512 __DEFAULT_FN_ATTRS
2454_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2455 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2456 (__v16sf) __B,
2457 (__v16sf)
2458 _mm512_setzero_ps (),
2459 (__mmask16) __U,
2460 _MM_FROUND_CUR_DIRECTION);
2461}
2462
Craig Topper8c18e112016-05-17 04:41:50 +00002463#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2464 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2465 (__v8df)(__m512d)(B), \
2466 (__v8df)_mm512_setzero_pd(), \
2467 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002468
Craig Topper8c18e112016-05-17 04:41:50 +00002469#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2470 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2471 (__v8df)(__m512d)(B), \
2472 (__v8df)(__m512d)(W), (__mmask8)(U), \
2473 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002474
Craig Topper8c18e112016-05-17 04:41:50 +00002475#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2476 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2477 (__v8df)(__m512d)(B), \
2478 (__v8df)_mm512_setzero_pd(), \
2479 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002480
Craig Topper8c18e112016-05-17 04:41:50 +00002481#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2482 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2483 (__v16sf)(__m512)(B), \
2484 (__v16sf)_mm512_setzero_ps(), \
2485 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002486
Craig Topper8c18e112016-05-17 04:41:50 +00002487#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2488 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2489 (__v16sf)(__m512)(B), \
2490 (__v16sf)(__m512)(W), (__mmask16)(U), \
2491 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002492
Craig Topper8c18e112016-05-17 04:41:50 +00002493#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2494 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2495 (__v16sf)(__m512)(B), \
2496 (__v16sf)_mm512_setzero_ps(), \
2497 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002498
Craig Topper72c7d512015-02-01 07:35:35 +00002499#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002500 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2501 (__v16sf)(__m512)(A), (__mmask16)-1, \
2502 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002503
Craig Topper8c18e112016-05-17 04:41:50 +00002504#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2505 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2506 (__v16sf)(__m512)(A), (__mmask16)(B), \
2507 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002508
Craig Topper8c18e112016-05-17 04:41:50 +00002509#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2510 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2511 (__v16sf)_mm512_setzero_ps(), \
2512 (__mmask16)(A), \
2513 _MM_FROUND_CUR_DIRECTION); })
2514
Michael Zuckermanc301c192016-06-01 07:35:44 +00002515#define _mm512_mask_roundscale_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
2516 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __C), (int)__imm,\
2517 (__v16sf)( __A),\
2518 (__mmask16)( __B),(int) __R);\
2519})
2520
2521#define _mm512_maskz_roundscale_round_ps( __A, __B, __imm,__R) __extension__ ({ \
2522 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __B), (int)__imm,\
2523 (__v16sf)_mm512_setzero_ps (),\
2524 (__mmask16)( __A),(int) __R);\
2525})
2526
2527#define _mm512_roundscale_round_ps( __A, __imm, __R) __extension__ ({ \
2528 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __A),(int) __imm,\
2529 (__v16sf) _mm512_undefined_ps (),\
2530 (__mmask16) -1,(int) __R);\
2531})
2532
Craig Topper72c7d512015-02-01 07:35:35 +00002533#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002534 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2535 (__v8df)(__m512d)(A), (__mmask8)-1, \
2536 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002537
Craig Topper8c18e112016-05-17 04:41:50 +00002538#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2539 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2540 (__v8df)(__m512d)(A), (__mmask8)(B), \
2541 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002542
Craig Topper8c18e112016-05-17 04:41:50 +00002543#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2544 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2545 (__v8df)_mm512_setzero_pd(), \
2546 (__mmask8)(A), \
2547 _MM_FROUND_CUR_DIRECTION); })
2548
Michael Zuckermanc301c192016-06-01 07:35:44 +00002549#define _mm512_mask_roundscale_round_pd( __A, __B, __C, __imm ,__R) __extension__ ({ \
2550 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __C),(int)__imm,\
2551 (__v8df)( __A),\
2552 (__mmask8)( __B),(int)__R);\
2553})
2554
2555#define _mm512_maskz_roundscale_round_pd( __A, __B, __imm, __R) __extension__ ({ \
2556 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __B),(int)__imm,\
2557 (__v8df)_mm512_setzero_pd (),\
2558 (__mmask8)( __A),(int) __R);\
2559})
2560
2561#define _mm512_roundscale_round_pd( __A, __imm , __R) __extension__ ({ \
2562 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __A),(int) __imm,\
2563 (__v8df)_mm512_undefined_pd (),\
2564 (__mmask8) -1,(int) __R);\
2565})
2566
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002567#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002568 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2569 (__v8df)(__m512d)(B), \
2570 (__v8df)(__m512d)(C), (__mmask8)-1, \
2571 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002572
2573
2574#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002575 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2576 (__v8df)(__m512d)(B), \
2577 (__v8df)(__m512d)(C), \
2578 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002579
2580
2581#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002582 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2583 (__v8df)(__m512d)(B), \
2584 (__v8df)(__m512d)(C), \
2585 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002586
2587
2588#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002589 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2590 (__v8df)(__m512d)(B), \
2591 (__v8df)(__m512d)(C), \
2592 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002593
2594
2595#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002596 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2597 (__v8df)(__m512d)(B), \
2598 -(__v8df)(__m512d)(C), \
2599 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002600
2601
2602#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002603 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2604 (__v8df)(__m512d)(B), \
2605 -(__v8df)(__m512d)(C), \
2606 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002607
2608
2609#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002610 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2611 (__v8df)(__m512d)(B), \
2612 -(__v8df)(__m512d)(C), \
2613 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002614
2615
2616#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002617 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2618 (__v8df)(__m512d)(B), \
2619 (__v8df)(__m512d)(C), (__mmask8)-1, \
2620 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002621
2622
2623#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002624 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2625 (__v8df)(__m512d)(B), \
2626 (__v8df)(__m512d)(C), \
2627 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002628
2629
2630#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002631 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2632 (__v8df)(__m512d)(B), \
2633 (__v8df)(__m512d)(C), \
2634 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002635
2636
2637#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002638 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2639 (__v8df)(__m512d)(B), \
2640 -(__v8df)(__m512d)(C), \
2641 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002642
2643
2644#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002645 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2646 (__v8df)(__m512d)(B), \
2647 -(__v8df)(__m512d)(C), \
2648 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002649
2650
Michael Kupersteine45af542015-06-30 13:36:19 +00002651static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002652_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2653{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002654 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2655 (__v8df) __B,
2656 (__v8df) __C,
2657 (__mmask8) -1,
2658 _MM_FROUND_CUR_DIRECTION);
2659}
2660
Michael Kupersteine45af542015-06-30 13:36:19 +00002661static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002662_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2663{
2664 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2665 (__v8df) __B,
2666 (__v8df) __C,
2667 (__mmask8) __U,
2668 _MM_FROUND_CUR_DIRECTION);
2669}
2670
Michael Kupersteine45af542015-06-30 13:36:19 +00002671static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002672_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2673{
2674 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2675 (__v8df) __B,
2676 (__v8df) __C,
2677 (__mmask8) __U,
2678 _MM_FROUND_CUR_DIRECTION);
2679}
2680
Michael Kupersteine45af542015-06-30 13:36:19 +00002681static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002682_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2683{
2684 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2685 (__v8df) __B,
2686 (__v8df) __C,
2687 (__mmask8) __U,
2688 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002689}
2690
Michael Kupersteine45af542015-06-30 13:36:19 +00002691static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002692_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2693{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002694 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2695 (__v8df) __B,
2696 -(__v8df) __C,
2697 (__mmask8) -1,
2698 _MM_FROUND_CUR_DIRECTION);
2699}
2700
Michael Kupersteine45af542015-06-30 13:36:19 +00002701static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002702_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2703{
2704 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2705 (__v8df) __B,
2706 -(__v8df) __C,
2707 (__mmask8) __U,
2708 _MM_FROUND_CUR_DIRECTION);
2709}
2710
Michael Kupersteine45af542015-06-30 13:36:19 +00002711static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002712_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2713{
2714 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2715 (__v8df) __B,
2716 -(__v8df) __C,
2717 (__mmask8) __U,
2718 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002719}
2720
Michael Kupersteine45af542015-06-30 13:36:19 +00002721static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002722_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2723{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002724 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2725 (__v8df) __B,
2726 (__v8df) __C,
2727 (__mmask8) -1,
2728 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002729}
2730
Michael Kupersteine45af542015-06-30 13:36:19 +00002731static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002732_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2733{
2734 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2735 (__v8df) __B,
2736 (__v8df) __C,
2737 (__mmask8) __U,
2738 _MM_FROUND_CUR_DIRECTION);
2739}
2740
Michael Kupersteine45af542015-06-30 13:36:19 +00002741static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002742_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2743{
2744 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2745 (__v8df) __B,
2746 (__v8df) __C,
2747 (__mmask8) __U,
2748 _MM_FROUND_CUR_DIRECTION);
2749}
2750
Michael Kupersteine45af542015-06-30 13:36:19 +00002751static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002752_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2753{
2754 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2755 (__v8df) __B,
2756 -(__v8df) __C,
2757 (__mmask8) -1,
2758 _MM_FROUND_CUR_DIRECTION);
2759}
2760
Michael Kupersteine45af542015-06-30 13:36:19 +00002761static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002762_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2763{
2764 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2765 (__v8df) __B,
2766 -(__v8df) __C,
2767 (__mmask8) __U,
2768 _MM_FROUND_CUR_DIRECTION);
2769}
2770
2771#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002772 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2773 (__v16sf)(__m512)(B), \
2774 (__v16sf)(__m512)(C), (__mmask16)-1, \
2775 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002776
2777
2778#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002779 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2780 (__v16sf)(__m512)(B), \
2781 (__v16sf)(__m512)(C), \
2782 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002783
2784
2785#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002786 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2787 (__v16sf)(__m512)(B), \
2788 (__v16sf)(__m512)(C), \
2789 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002790
2791
2792#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002793 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2794 (__v16sf)(__m512)(B), \
2795 (__v16sf)(__m512)(C), \
2796 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002797
2798
2799#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002800 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2801 (__v16sf)(__m512)(B), \
2802 -(__v16sf)(__m512)(C), \
2803 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002804
2805
2806#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002807 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2808 (__v16sf)(__m512)(B), \
2809 -(__v16sf)(__m512)(C), \
2810 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002811
2812
2813#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002814 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2815 (__v16sf)(__m512)(B), \
2816 -(__v16sf)(__m512)(C), \
2817 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002818
2819
2820#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002821 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2822 (__v16sf)(__m512)(B), \
2823 (__v16sf)(__m512)(C), (__mmask16)-1, \
2824 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002825
2826
2827#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002828 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2829 (__v16sf)(__m512)(B), \
2830 (__v16sf)(__m512)(C), \
2831 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002832
2833
2834#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002835 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2836 (__v16sf)(__m512)(B), \
2837 (__v16sf)(__m512)(C), \
2838 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002839
2840
2841#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002842 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2843 (__v16sf)(__m512)(B), \
2844 -(__v16sf)(__m512)(C), \
2845 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002846
2847
2848#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002849 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2850 (__v16sf)(__m512)(B), \
2851 -(__v16sf)(__m512)(C), \
2852 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002853
2854
Michael Kupersteine45af542015-06-30 13:36:19 +00002855static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002856_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2857{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002858 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2859 (__v16sf) __B,
2860 (__v16sf) __C,
2861 (__mmask16) -1,
2862 _MM_FROUND_CUR_DIRECTION);
2863}
2864
Michael Kupersteine45af542015-06-30 13:36:19 +00002865static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002866_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2867{
2868 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2869 (__v16sf) __B,
2870 (__v16sf) __C,
2871 (__mmask16) __U,
2872 _MM_FROUND_CUR_DIRECTION);
2873}
2874
Michael Kupersteine45af542015-06-30 13:36:19 +00002875static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002876_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2877{
2878 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2879 (__v16sf) __B,
2880 (__v16sf) __C,
2881 (__mmask16) __U,
2882 _MM_FROUND_CUR_DIRECTION);
2883}
2884
Michael Kupersteine45af542015-06-30 13:36:19 +00002885static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002886_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2887{
2888 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2889 (__v16sf) __B,
2890 (__v16sf) __C,
2891 (__mmask16) __U,
2892 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002893}
2894
Michael Kupersteine45af542015-06-30 13:36:19 +00002895static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002896_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2897{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002898 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2899 (__v16sf) __B,
2900 -(__v16sf) __C,
2901 (__mmask16) -1,
2902 _MM_FROUND_CUR_DIRECTION);
2903}
2904
Michael Kupersteine45af542015-06-30 13:36:19 +00002905static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002906_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2907{
2908 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2909 (__v16sf) __B,
2910 -(__v16sf) __C,
2911 (__mmask16) __U,
2912 _MM_FROUND_CUR_DIRECTION);
2913}
2914
Michael Kupersteine45af542015-06-30 13:36:19 +00002915static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002916_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2917{
2918 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2919 (__v16sf) __B,
2920 -(__v16sf) __C,
2921 (__mmask16) __U,
2922 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002923}
2924
Michael Kupersteine45af542015-06-30 13:36:19 +00002925static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002926_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2927{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002928 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2929 (__v16sf) __B,
2930 (__v16sf) __C,
2931 (__mmask16) -1,
2932 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002933}
2934
Michael Kupersteine45af542015-06-30 13:36:19 +00002935static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002936_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2937{
2938 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2939 (__v16sf) __B,
2940 (__v16sf) __C,
2941 (__mmask16) __U,
2942 _MM_FROUND_CUR_DIRECTION);
2943}
2944
Michael Kupersteine45af542015-06-30 13:36:19 +00002945static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002946_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2947{
2948 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2949 (__v16sf) __B,
2950 (__v16sf) __C,
2951 (__mmask16) __U,
2952 _MM_FROUND_CUR_DIRECTION);
2953}
2954
Michael Kupersteine45af542015-06-30 13:36:19 +00002955static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002956_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2957{
2958 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2959 (__v16sf) __B,
2960 -(__v16sf) __C,
2961 (__mmask16) -1,
2962 _MM_FROUND_CUR_DIRECTION);
2963}
2964
Michael Kupersteine45af542015-06-30 13:36:19 +00002965static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002966_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2967{
2968 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2969 (__v16sf) __B,
2970 -(__v16sf) __C,
2971 (__mmask16) __U,
2972 _MM_FROUND_CUR_DIRECTION);
2973}
2974
2975#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002976 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2977 (__v8df)(__m512d)(B), \
2978 (__v8df)(__m512d)(C), \
2979 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002980
2981
2982#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002983 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2984 (__v8df)(__m512d)(B), \
2985 (__v8df)(__m512d)(C), \
2986 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002987
2988
2989#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002990 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2991 (__v8df)(__m512d)(B), \
2992 (__v8df)(__m512d)(C), \
2993 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002994
2995
2996#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002997 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2998 (__v8df)(__m512d)(B), \
2999 (__v8df)(__m512d)(C), \
3000 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003001
3002
3003#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003004 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
3005 (__v8df)(__m512d)(B), \
3006 -(__v8df)(__m512d)(C), \
3007 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003008
3009
3010#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003011 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
3012 (__v8df)(__m512d)(B), \
3013 -(__v8df)(__m512d)(C), \
3014 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003015
3016
3017#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003018 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
3019 (__v8df)(__m512d)(B), \
3020 -(__v8df)(__m512d)(C), \
3021 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003022
3023
Michael Kupersteine45af542015-06-30 13:36:19 +00003024static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003025_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
3026{
3027 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3028 (__v8df) __B,
3029 (__v8df) __C,
3030 (__mmask8) -1,
3031 _MM_FROUND_CUR_DIRECTION);
3032}
3033
Michael Kupersteine45af542015-06-30 13:36:19 +00003034static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003035_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3036{
3037 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3038 (__v8df) __B,
3039 (__v8df) __C,
3040 (__mmask8) __U,
3041 _MM_FROUND_CUR_DIRECTION);
3042}
3043
Michael Kupersteine45af542015-06-30 13:36:19 +00003044static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003045_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3046{
3047 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
3048 (__v8df) __B,
3049 (__v8df) __C,
3050 (__mmask8) __U,
3051 _MM_FROUND_CUR_DIRECTION);
3052}
3053
Michael Kupersteine45af542015-06-30 13:36:19 +00003054static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003055_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
3056{
3057 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3058 (__v8df) __B,
3059 (__v8df) __C,
3060 (__mmask8) __U,
3061 _MM_FROUND_CUR_DIRECTION);
3062}
3063
Michael Kupersteine45af542015-06-30 13:36:19 +00003064static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003065_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
3066{
3067 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3068 (__v8df) __B,
3069 -(__v8df) __C,
3070 (__mmask8) -1,
3071 _MM_FROUND_CUR_DIRECTION);
3072}
3073
Michael Kupersteine45af542015-06-30 13:36:19 +00003074static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003075_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3076{
3077 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3078 (__v8df) __B,
3079 -(__v8df) __C,
3080 (__mmask8) __U,
3081 _MM_FROUND_CUR_DIRECTION);
3082}
3083
Michael Kupersteine45af542015-06-30 13:36:19 +00003084static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003085_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
3086{
3087 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3088 (__v8df) __B,
3089 -(__v8df) __C,
3090 (__mmask8) __U,
3091 _MM_FROUND_CUR_DIRECTION);
3092}
3093
3094#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003095 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3096 (__v16sf)(__m512)(B), \
3097 (__v16sf)(__m512)(C), \
3098 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003099
3100
3101#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003102 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3103 (__v16sf)(__m512)(B), \
3104 (__v16sf)(__m512)(C), \
3105 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003106
3107
3108#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003109 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
3110 (__v16sf)(__m512)(B), \
3111 (__v16sf)(__m512)(C), \
3112 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003113
3114
3115#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003116 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3117 (__v16sf)(__m512)(B), \
3118 (__v16sf)(__m512)(C), \
3119 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003120
3121
3122#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003123 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3124 (__v16sf)(__m512)(B), \
3125 -(__v16sf)(__m512)(C), \
3126 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003127
3128
3129#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003130 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3131 (__v16sf)(__m512)(B), \
3132 -(__v16sf)(__m512)(C), \
3133 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003134
3135
3136#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003137 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3138 (__v16sf)(__m512)(B), \
3139 -(__v16sf)(__m512)(C), \
3140 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003141
3142
Michael Kupersteine45af542015-06-30 13:36:19 +00003143static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003144_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
3145{
3146 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3147 (__v16sf) __B,
3148 (__v16sf) __C,
3149 (__mmask16) -1,
3150 _MM_FROUND_CUR_DIRECTION);
3151}
3152
Michael Kupersteine45af542015-06-30 13:36:19 +00003153static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003154_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3155{
3156 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3157 (__v16sf) __B,
3158 (__v16sf) __C,
3159 (__mmask16) __U,
3160 _MM_FROUND_CUR_DIRECTION);
3161}
3162
Michael Kupersteine45af542015-06-30 13:36:19 +00003163static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003164_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3165{
3166 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3167 (__v16sf) __B,
3168 (__v16sf) __C,
3169 (__mmask16) __U,
3170 _MM_FROUND_CUR_DIRECTION);
3171}
3172
Michael Kupersteine45af542015-06-30 13:36:19 +00003173static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003174_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3175{
3176 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3177 (__v16sf) __B,
3178 (__v16sf) __C,
3179 (__mmask16) __U,
3180 _MM_FROUND_CUR_DIRECTION);
3181}
3182
Michael Kupersteine45af542015-06-30 13:36:19 +00003183static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003184_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3185{
3186 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3187 (__v16sf) __B,
3188 -(__v16sf) __C,
3189 (__mmask16) -1,
3190 _MM_FROUND_CUR_DIRECTION);
3191}
3192
Michael Kupersteine45af542015-06-30 13:36:19 +00003193static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003194_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3195{
3196 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3197 (__v16sf) __B,
3198 -(__v16sf) __C,
3199 (__mmask16) __U,
3200 _MM_FROUND_CUR_DIRECTION);
3201}
3202
Michael Kupersteine45af542015-06-30 13:36:19 +00003203static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003204_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3205{
3206 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3207 (__v16sf) __B,
3208 -(__v16sf) __C,
3209 (__mmask16) __U,
3210 _MM_FROUND_CUR_DIRECTION);
3211}
3212
3213#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003214 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3215 (__v8df)(__m512d)(B), \
3216 (__v8df)(__m512d)(C), \
3217 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003218
3219
Michael Kupersteine45af542015-06-30 13:36:19 +00003220static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003221_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3222{
3223 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3224 (__v8df) __B,
3225 (__v8df) __C,
3226 (__mmask8) __U,
3227 _MM_FROUND_CUR_DIRECTION);
3228}
3229
3230#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003231 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3232 (__v16sf)(__m512)(B), \
3233 (__v16sf)(__m512)(C), \
3234 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003235
3236
Michael Kupersteine45af542015-06-30 13:36:19 +00003237static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003238_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3239{
3240 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3241 (__v16sf) __B,
3242 (__v16sf) __C,
3243 (__mmask16) __U,
3244 _MM_FROUND_CUR_DIRECTION);
3245}
3246
3247#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003248 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3249 (__v8df)(__m512d)(B), \
3250 (__v8df)(__m512d)(C), \
3251 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003252
3253
Michael Kupersteine45af542015-06-30 13:36:19 +00003254static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003255_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3256{
3257 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3258 (__v8df) __B,
3259 (__v8df) __C,
3260 (__mmask8) __U,
3261 _MM_FROUND_CUR_DIRECTION);
3262}
3263
3264#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003265 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3266 (__v16sf)(__m512)(B), \
3267 (__v16sf)(__m512)(C), \
3268 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003269
3270
Michael Kupersteine45af542015-06-30 13:36:19 +00003271static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003272_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3273{
3274 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3275 (__v16sf) __B,
3276 (__v16sf) __C,
3277 (__mmask16) __U,
3278 _MM_FROUND_CUR_DIRECTION);
3279}
3280
3281#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003282 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3283 (__v8df)(__m512d)(B), \
3284 (__v8df)(__m512d)(C), \
3285 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003286
3287
Michael Kupersteine45af542015-06-30 13:36:19 +00003288static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003289_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3290{
3291 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3292 (__v8df) __B,
3293 (__v8df) __C,
3294 (__mmask8) __U,
3295 _MM_FROUND_CUR_DIRECTION);
3296}
3297
3298#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003299 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3300 (__v16sf)(__m512)(B), \
3301 (__v16sf)(__m512)(C), \
3302 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003303
3304
Michael Kupersteine45af542015-06-30 13:36:19 +00003305static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003306_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3307{
3308 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3309 (__v16sf) __B,
3310 (__v16sf) __C,
3311 (__mmask16) __U,
3312 _MM_FROUND_CUR_DIRECTION);
3313}
3314
3315#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003316 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3317 (__v8df)(__m512d)(B), \
3318 (__v8df)(__m512d)(C), \
3319 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003320
3321
3322#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003323 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3324 (__v8df)(__m512d)(B), \
3325 (__v8df)(__m512d)(C), \
3326 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003327
3328
Michael Kupersteine45af542015-06-30 13:36:19 +00003329static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003330_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3331{
3332 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3333 (__v8df) __B,
3334 (__v8df) __C,
3335 (__mmask8) __U,
3336 _MM_FROUND_CUR_DIRECTION);
3337}
3338
Michael Kupersteine45af542015-06-30 13:36:19 +00003339static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003340_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3341{
3342 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3343 (__v8df) __B,
3344 (__v8df) __C,
3345 (__mmask8) __U,
3346 _MM_FROUND_CUR_DIRECTION);
3347}
3348
3349#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003350 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3351 (__v16sf)(__m512)(B), \
3352 (__v16sf)(__m512)(C), \
3353 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003354
3355
3356#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003357 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3358 (__v16sf)(__m512)(B), \
3359 (__v16sf)(__m512)(C), \
3360 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003361
3362
Michael Kupersteine45af542015-06-30 13:36:19 +00003363static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003364_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3365{
3366 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3367 (__v16sf) __B,
3368 (__v16sf) __C,
3369 (__mmask16) __U,
3370 _MM_FROUND_CUR_DIRECTION);
3371}
3372
Michael Kupersteine45af542015-06-30 13:36:19 +00003373static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003374_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3375{
3376 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3377 (__v16sf) __B,
3378 (__v16sf) __C,
3379 (__mmask16) __U,
3380 _MM_FROUND_CUR_DIRECTION);
3381}
3382
3383
3384
Adam Nemet0d5bb552014-07-28 17:14:40 +00003385/* Vector permutations */
3386
Michael Kupersteine45af542015-06-30 13:36:19 +00003387static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003388_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3389{
3390 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3391 /* idx */ ,
3392 (__v16si) __A,
3393 (__v16si) __B,
3394 (__mmask16) -1);
3395}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003396
3397static __inline__ __m512i __DEFAULT_FN_ATTRS
3398_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3399 __m512i __I, __m512i __B)
3400{
3401 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3402 /* idx */ ,
3403 (__v16si) __A,
3404 (__v16si) __B,
3405 (__mmask16) __U);
3406}
3407
3408static __inline__ __m512i __DEFAULT_FN_ATTRS
3409_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3410 __m512i __I, __m512i __B)
3411{
3412 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3413 /* idx */ ,
3414 (__v16si) __A,
3415 (__v16si) __B,
3416 (__mmask16) __U);
3417}
3418
Michael Kupersteine45af542015-06-30 13:36:19 +00003419static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003420_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3421{
3422 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3423 /* idx */ ,
3424 (__v8di) __A,
3425 (__v8di) __B,
3426 (__mmask8) -1);
3427}
3428
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003429static __inline__ __m512i __DEFAULT_FN_ATTRS
3430_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3431 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003432{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003433 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003434 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003435 (__v8di) __A,
3436 (__v8di) __B,
3437 (__mmask8) __U);
3438}
3439
3440
3441static __inline__ __m512i __DEFAULT_FN_ATTRS
3442_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3443 __m512i __I, __m512i __B)
3444{
3445 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3446 /* idx */ ,
3447 (__v8di) __A,
3448 (__v8di) __B,
3449 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003450}
3451
Craig Topper67826a52015-02-01 07:35:40 +00003452#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3453 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003454 (__v8di)(__m512i)(B), (int)(I), \
3455 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003456 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003457
Craig Topper8c18e112016-05-17 04:41:50 +00003458#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3459 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3460 (__v8di)(__m512i)(B), (int)(imm), \
3461 (__v8di)(__m512i)(W), \
3462 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003463
Craig Topper8c18e112016-05-17 04:41:50 +00003464#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3465 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3466 (__v8di)(__m512i)(B), (int)(imm), \
3467 (__v8di)_mm512_setzero_si512(), \
3468 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003469
Craig Topper67826a52015-02-01 07:35:40 +00003470#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003471 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3472 (__v16si)(__m512i)(B), (int)(I), \
3473 (__v16si)_mm512_setzero_si512(), \
3474 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003475
Craig Topper8c18e112016-05-17 04:41:50 +00003476#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3477 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3478 (__v16si)(__m512i)(B), (int)(imm), \
3479 (__v16si)(__m512i)(W), \
3480 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003481
Craig Topper8c18e112016-05-17 04:41:50 +00003482#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3483 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3484 (__v16si)(__m512i)(B), (int)(imm), \
3485 (__v16si)_mm512_setzero_si512(), \
3486 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003487/* Vector Extract */
3488
3489#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003490 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3491 (__v4df)_mm256_setzero_si256(), \
3492 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003493
Craig Topper8c18e112016-05-17 04:41:50 +00003494#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3495 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3496 (__v4df)(__m256d)(W), \
3497 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003498
Craig Topper8c18e112016-05-17 04:41:50 +00003499#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3500 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3501 (__v4df)_mm256_setzero_pd(), \
3502 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003503
Adam Nemetf893ede2015-01-19 20:12:05 +00003504#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003505 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3506 (__v4sf)_mm_setzero_ps(), \
3507 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003508
Craig Topper8c18e112016-05-17 04:41:50 +00003509#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3510 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3511 (__v4sf)(__m128)(W), \
3512 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003513
Craig Topper8c18e112016-05-17 04:41:50 +00003514#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3515 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3516 (__v4sf)_mm_setzero_ps(), \
3517 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003518/* Vector Blend */
3519
Michael Kupersteine45af542015-06-30 13:36:19 +00003520static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003521_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3522{
3523 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3524 (__v8df) __W,
3525 (__mmask8) __U);
3526}
3527
Michael Kupersteine45af542015-06-30 13:36:19 +00003528static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003529_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3530{
3531 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3532 (__v16sf) __W,
3533 (__mmask16) __U);
3534}
3535
Michael Kupersteine45af542015-06-30 13:36:19 +00003536static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003537_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3538{
3539 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3540 (__v8di) __W,
3541 (__mmask8) __U);
3542}
3543
Michael Kupersteine45af542015-06-30 13:36:19 +00003544static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003545_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3546{
3547 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3548 (__v16si) __W,
3549 (__mmask16) __U);
3550}
3551
3552/* Compare */
3553
Craig Topper53565c62015-02-01 22:27:40 +00003554#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3555 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003556 (__v16sf)(__m512)(B), (int)(P), \
3557 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003558
Craig Topper53565c62015-02-01 22:27:40 +00003559#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3560 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003561 (__v16sf)(__m512)(B), (int)(P), \
3562 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003563
3564#define _mm512_cmp_ps_mask(A, B, P) \
3565 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3566
3567#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3568 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3569
3570#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3571 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003572 (__v8df)(__m512d)(B), (int)(P), \
3573 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003574
3575#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3576 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003577 (__v8df)(__m512d)(B), (int)(P), \
3578 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003579
3580#define _mm512_cmp_pd_mask(A, B, P) \
3581 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3582
3583#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3584 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003585
3586/* Conversion */
3587
Michael Zuckerman6170c152016-06-01 14:41:41 +00003588#define _mm512_cvtt_roundps_epu32( __A, __R) __extension__ ({ \
3589__builtin_ia32_cvttps2udq512_mask ((__v16sf)( __A),\
3590 (__v16si)\
3591 _mm512_undefined_epi32 (),\
3592 (__mmask16) -1,( __R));\
3593})
3594
3595#define _mm512_mask_cvtt_roundps_epu32( __W, __U, __A, __R) __extension__ ({ \
3596__builtin_ia32_cvttps2udq512_mask ((__v16sf)( __A),\
3597 (__v16si)( __W),\
3598 (__mmask16)( __U),( __R));\
3599})
3600
3601#define _mm512_maskz_cvtt_roundps_epu32( __U, __A, __R) __extension__ ({ \
3602__builtin_ia32_cvttps2udq512_mask ((__v16sf)( __A),\
3603 (__v16si)\
3604 _mm512_setzero_si512 (),\
3605 (__mmask16)( __U),( __R));\
3606})
3607
3608
Michael Kupersteine45af542015-06-30 13:36:19 +00003609static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003610_mm512_cvttps_epu32(__m512 __A)
3611{
3612 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3613 (__v16si)
3614 _mm512_setzero_si512 (),
3615 (__mmask16) -1,
3616 _MM_FROUND_CUR_DIRECTION);
3617}
3618
Michael Zuckermanf1544752016-05-09 10:32:51 +00003619static __inline__ __m512i __DEFAULT_FN_ATTRS
3620_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3621{
3622 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3623 (__v16si) __W,
3624 (__mmask16) __U,
3625 _MM_FROUND_CUR_DIRECTION);
3626}
3627
3628static __inline__ __m512i __DEFAULT_FN_ATTRS
3629_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3630{
3631 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3632 (__v16si) _mm512_setzero_si512 (),
3633 (__mmask16) __U,
3634 _MM_FROUND_CUR_DIRECTION);
3635}
3636
Craig Topper72c7d512015-02-01 07:35:35 +00003637#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003638 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003639 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003640 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003641
Michael Zuckerman186d8672016-05-31 11:27:34 +00003642#define _mm512_mask_cvt_roundepi32_ps( __W, __U, __A, __R) __extension__ ({ \
3643__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3644 (__v16sf)( __W),\
3645 (__mmask16)( __U),( __R));\
3646})
3647
3648#define _mm512_maskz_cvt_roundepi32_ps( __U, __A, __R) __extension__ ({ \
3649__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3650 (__v16sf)\
3651 _mm512_setzero_ps (),\
3652 (__mmask16)( __U),( __R));\
3653})
3654
Craig Topper72c7d512015-02-01 07:35:35 +00003655#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003656 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003657 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003658 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003659
Michael Zuckerman186d8672016-05-31 11:27:34 +00003660#define _mm512_mask_cvt_roundepu32_ps( __W, __U, __A, __R) __extension__ ({ \
3661__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3662 (__v16sf)( __W),\
3663 (__mmask16)( __U),( __R));\
3664})
3665
3666#define _mm512_maskz_cvt_roundepu32_ps( __U, __A, __R) __extension__ ({ \
3667__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3668 (__v16sf)\
3669 _mm512_setzero_ps (),\
3670 (__mmask16)( __U),( __R));\
3671})
3672
Michael Zuckermanf1544752016-05-09 10:32:51 +00003673static __inline__ __m512 __DEFAULT_FN_ATTRS
3674_mm512_cvtepu32_ps (__m512i __A)
3675{
3676 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3677 (__v16sf) _mm512_undefined_ps (),
3678 (__mmask16) -1,
3679 _MM_FROUND_CUR_DIRECTION);
3680}
3681
3682static __inline__ __m512 __DEFAULT_FN_ATTRS
3683_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3684{
3685 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3686 (__v16sf) __W,
3687 (__mmask16) __U,
3688 _MM_FROUND_CUR_DIRECTION);
3689}
3690
3691static __inline__ __m512 __DEFAULT_FN_ATTRS
3692_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3693{
3694 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3695 (__v16sf) _mm512_setzero_ps (),
3696 (__mmask16) __U,
3697 _MM_FROUND_CUR_DIRECTION);
3698}
3699
Michael Kupersteine45af542015-06-30 13:36:19 +00003700static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003701_mm512_cvtepi32_pd(__m256i __A)
3702{
3703 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003704 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003705 _mm512_setzero_pd (),
3706 (__mmask8) -1);
3707}
3708
Michael Zuckermanf1544752016-05-09 10:32:51 +00003709static __inline__ __m512d __DEFAULT_FN_ATTRS
3710_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3711{
3712 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3713 (__v8df) __W,
3714 (__mmask8) __U);
3715}
3716
3717static __inline__ __m512d __DEFAULT_FN_ATTRS
3718_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3719{
3720 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3721 (__v8df) _mm512_setzero_pd (),
3722 (__mmask8) __U);
3723}
3724
3725static __inline__ __m512 __DEFAULT_FN_ATTRS
3726_mm512_cvtepi32_ps (__m512i __A)
3727{
3728 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3729 (__v16sf) _mm512_undefined_ps (),
3730 (__mmask16) -1,
3731 _MM_FROUND_CUR_DIRECTION);
3732}
3733
3734static __inline__ __m512 __DEFAULT_FN_ATTRS
3735_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3736{
3737 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3738 (__v16sf) __W,
3739 (__mmask16) __U,
3740 _MM_FROUND_CUR_DIRECTION);
3741}
3742
3743static __inline__ __m512 __DEFAULT_FN_ATTRS
3744_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3745{
3746 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3747 (__v16sf) _mm512_setzero_ps (),
3748 (__mmask16) __U,
3749 _MM_FROUND_CUR_DIRECTION);
3750}
3751
Michael Kupersteine45af542015-06-30 13:36:19 +00003752static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003753_mm512_cvtepu32_pd(__m256i __A)
3754{
3755 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3756 (__v8df)
3757 _mm512_setzero_pd (),
3758 (__mmask8) -1);
3759}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003760
Michael Zuckermanf1544752016-05-09 10:32:51 +00003761static __inline__ __m512d __DEFAULT_FN_ATTRS
3762_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3763{
3764 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3765 (__v8df) __W,
3766 (__mmask8) __U);
3767}
3768
3769static __inline__ __m512d __DEFAULT_FN_ATTRS
3770_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3771{
3772 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3773 (__v8df) _mm512_setzero_pd (),
3774 (__mmask8) __U);
3775}
3776
Craig Topper72c7d512015-02-01 07:35:35 +00003777#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003778 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003779 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003780 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003781
Michael Zuckerman186d8672016-05-31 11:27:34 +00003782#define _mm512_mask_cvt_roundpd_ps(W, U, A, R) __extension__ ({ \
3783 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3784 (__v8sf)(W), \
3785 (__mmask8)(U), (int)(R)); })
3786
3787#define _mm512_maskz_cvt_roundpd_ps(U, A, R) __extension__ ({ \
3788 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3789 (__v8sf)_mm256_setzero_ps(), \
3790 (__mmask8)(U), (int)(R)); })
3791
Michael Zuckermanf1544752016-05-09 10:32:51 +00003792static __inline__ __m256 __DEFAULT_FN_ATTRS
3793_mm512_cvtpd_ps (__m512d __A)
3794{
3795 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3796 (__v8sf) _mm256_undefined_ps (),
3797 (__mmask8) -1,
3798 _MM_FROUND_CUR_DIRECTION);
3799}
3800
3801static __inline__ __m256 __DEFAULT_FN_ATTRS
3802_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3803{
3804 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3805 (__v8sf) __W,
3806 (__mmask8) __U,
3807 _MM_FROUND_CUR_DIRECTION);
3808}
3809
3810static __inline__ __m256 __DEFAULT_FN_ATTRS
3811_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3812{
3813 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3814 (__v8sf) _mm256_setzero_ps (),
3815 (__mmask8) __U,
3816 _MM_FROUND_CUR_DIRECTION);
3817}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003818
Michael Zuckerman6170c152016-06-01 14:41:41 +00003819#define _mm512_cvt_roundps_ph( __A, __I) __extension__ ({ \
3820 (__m256i)__builtin_ia32_vcvtps2ph512_mask ((__v16sf)( __A),\
3821 (__I),\
3822 (__v16hi)_mm256_undefined_si256 (),\
3823 (__mmask16) -1);\
3824})
3825
3826#define _mm512_mask_cvt_roundps_ph( __U, __W, __A, __I) __extension__ ({ \
3827 (__m256i)__builtin_ia32_vcvtps2ph512_mask ((__v16sf)( __A),\
3828 (__I),\
3829 (__v16hi)( __U),\
3830 (__mmask16)( __W));\
3831})
3832
3833#define _mm512_maskz_cvt_roundps_ph( __W, __A, __I) __extension__ ({ \
3834 (__m256i)__builtin_ia32_vcvtps2ph512_mask ((__v16sf)( __A),\
3835 (__I),\
3836 (__v16hi)\
3837 _mm256_setzero_si256 (),\
3838 (__mmask16)( __W));\
3839})
3840
Craig Topper72c7d512015-02-01 07:35:35 +00003841#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003842 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003843 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003844 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003845
Craig Topper8c18e112016-05-17 04:41:50 +00003846#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3847 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3848 (__v16hi)(__m256i)(U), \
3849 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003850
Craig Topper8c18e112016-05-17 04:41:50 +00003851#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3852 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3853 (__v16hi)_mm256_setzero_si256(), \
3854 (__mmask16)(W)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003855
3856#define _mm512_cvt_roundph_ps( __A, __R) __extension__ ({ \
3857__builtin_ia32_vcvtph2ps512_mask ((__v16hi)( __A),\
3858 (__v16sf)\
3859 _mm512_undefined_ps (),\
3860 (__mmask16) -1,( __R));\
3861})
3862
3863#define _mm512_mask_cvt_roundph_ps( __W, __U, __A, __R) __extension__ ({ \
3864__builtin_ia32_vcvtph2ps512_mask ((__v16hi)( __A),\
3865 (__v16sf)( __W),\
3866 (__mmask16)( __U),( __R));\
3867})
3868
3869#define _mm512_maskz_cvt_roundph_ps( __U, __A, __R) __extension__ ({ \
3870__builtin_ia32_vcvtph2ps512_mask ((__v16hi)( __A),\
3871 (__v16sf)\
3872 _mm512_setzero_ps (),\
3873 (__mmask16)( __U),( __R));\
3874})
3875
3876
Michael Kupersteine45af542015-06-30 13:36:19 +00003877static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003878_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003879{
3880 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003881 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003882 _mm512_setzero_ps (),
3883 (__mmask16) -1,
3884 _MM_FROUND_CUR_DIRECTION);
3885}
3886
Michael Zuckermanf1544752016-05-09 10:32:51 +00003887static __inline__ __m512 __DEFAULT_FN_ATTRS
3888_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003889{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003890 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3891 (__v16sf) __W,
3892 (__mmask16) __U,
3893 _MM_FROUND_CUR_DIRECTION);
3894}
3895
3896static __inline__ __m512 __DEFAULT_FN_ATTRS
3897_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3898{
3899 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3900 (__v16sf) _mm512_setzero_ps (),
3901 (__mmask16) __U,
3902 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003903}
3904
Michael Zuckerman186d8672016-05-31 11:27:34 +00003905#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3906 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3907 (__v8si)_mm256_setzero_si256(), \
3908 (__mmask8)-1, (int)(R)); })
3909
3910#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, R) __extension__ ({ \
3911 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3912 (__v8si)(W), \
3913 (__mmask8)(U), (int)(R)); })
3914
3915#define _mm512_maskz_cvtt_roundpd_epi32( U, A, R) __extension__ ({ \
3916 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3917 (__v8si)_mm256_setzero_si256(), \
3918 (__mmask8)(U), (int)(R)); })
3919
Michael Kupersteine45af542015-06-30 13:36:19 +00003920static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003921_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003922{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003923 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003924 (__v8si)_mm256_setzero_si256(),
3925 (__mmask8) -1,
3926 _MM_FROUND_CUR_DIRECTION);
3927}
3928
Michael Zuckermanf1544752016-05-09 10:32:51 +00003929static __inline__ __m256i __DEFAULT_FN_ATTRS
3930_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3931{
3932 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3933 (__v8si) __W,
3934 (__mmask8) __U,
3935 _MM_FROUND_CUR_DIRECTION);
3936}
3937
3938static __inline__ __m256i __DEFAULT_FN_ATTRS
3939_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3940{
3941 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3942 (__v8si) _mm256_setzero_si256 (),
3943 (__mmask8) __U,
3944 _MM_FROUND_CUR_DIRECTION);
3945}
3946
Craig Topper72c7d512015-02-01 07:35:35 +00003947#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003948 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003949 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003950 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003951
Michael Zuckerman186d8672016-05-31 11:27:34 +00003952#define _mm512_mask_cvtt_roundps_epi32( W, U, A, R) __extension__ ({ \
3953 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3954 (__v16si)(W), \
3955 (__mmask16)(U), (int)(R)); })
3956
3957#define _mm512_maskz_cvtt_roundps_epi32( U, A, R) __extension__ ({ \
3958 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3959 (__v16si)_mm512_setzero_si512(), \
3960 (__mmask16)(U), (int)(R)); })
3961
Michael Zuckermanf1544752016-05-09 10:32:51 +00003962static __inline __m512i __DEFAULT_FN_ATTRS
3963_mm512_cvttps_epi32(__m512 __a)
3964{
3965 return (__m512i)
3966 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3967 (__v16si) _mm512_setzero_si512 (),
3968 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3969}
3970
3971static __inline__ __m512i __DEFAULT_FN_ATTRS
3972_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3973{
3974 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3975 (__v16si) __W,
3976 (__mmask16) __U,
3977 _MM_FROUND_CUR_DIRECTION);
3978}
3979
3980static __inline__ __m512i __DEFAULT_FN_ATTRS
3981_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3982{
3983 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3984 (__v16si) _mm512_setzero_si512 (),
3985 (__mmask16) __U,
3986 _MM_FROUND_CUR_DIRECTION);
3987}
Craig Topper72c7d512015-02-01 07:35:35 +00003988
3989#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003990 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003991 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003992 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003993
Michael Zuckerman186d8672016-05-31 11:27:34 +00003994#define _mm512_mask_cvt_roundps_epi32( __W, __U, __A, __R) __extension__ ({ \
3995 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
3996 (__v16si)( __W),\
3997 (__mmask16)( __U),( __R));\
3998})
3999
4000#define _mm512_maskz_cvt_roundps_epi32( __U, __A, __R) __extension__ ({ \
4001 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
4002 (__v16si)\
4003 _mm512_setzero_si512 (),\
4004 (__mmask16)( __U),( __R));\
4005})
4006
Michael Zuckermanf1544752016-05-09 10:32:51 +00004007static __inline__ __m512i __DEFAULT_FN_ATTRS
4008_mm512_cvtps_epi32 (__m512 __A)
4009{
4010 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4011 (__v16si) _mm512_undefined_epi32 (),
4012 (__mmask16) -1,
4013 _MM_FROUND_CUR_DIRECTION);
4014}
4015
4016static __inline__ __m512i __DEFAULT_FN_ATTRS
4017_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
4018{
4019 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4020 (__v16si) __W,
4021 (__mmask16) __U,
4022 _MM_FROUND_CUR_DIRECTION);
4023}
4024
4025static __inline__ __m512i __DEFAULT_FN_ATTRS
4026_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
4027{
4028 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4029 (__v16si)
4030 _mm512_setzero_si512 (),
4031 (__mmask16) __U,
4032 _MM_FROUND_CUR_DIRECTION);
4033}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00004034
Craig Topper72c7d512015-02-01 07:35:35 +00004035#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004036 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004037 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004038 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004039
Michael Zuckerman186d8672016-05-31 11:27:34 +00004040#define _mm512_mask_cvt_roundpd_epi32( W, U, A, R) __extension__ ({ \
4041 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
4042 (__v8si)(W), \
4043 (__mmask8)(U), (int)(R)); })
4044
4045#define _mm512_maskz_cvt_roundpd_epi32(U, A, R) __extension__ ({ \
4046 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
4047 (__v8si)_mm256_setzero_si256(), \
4048 (__mmask8)(U), (int)(R)); })
4049
Michael Zuckermanf1544752016-05-09 10:32:51 +00004050static __inline__ __m256i __DEFAULT_FN_ATTRS
4051_mm512_cvtpd_epi32 (__m512d __A)
4052{
4053 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4054 (__v8si)
4055 _mm256_undefined_si256 (),
4056 (__mmask8) -1,
4057 _MM_FROUND_CUR_DIRECTION);
4058}
4059
4060static __inline__ __m256i __DEFAULT_FN_ATTRS
4061_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
4062{
4063 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4064 (__v8si) __W,
4065 (__mmask8) __U,
4066 _MM_FROUND_CUR_DIRECTION);
4067}
4068
4069static __inline__ __m256i __DEFAULT_FN_ATTRS
4070_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
4071{
4072 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4073 (__v8si)
4074 _mm256_setzero_si256 (),
4075 (__mmask8) __U,
4076 _MM_FROUND_CUR_DIRECTION);
4077}
4078
Craig Topper72c7d512015-02-01 07:35:35 +00004079#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004080 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004081 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004082 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004083
Michael Zuckerman186d8672016-05-31 11:27:34 +00004084#define _mm512_mask_cvt_roundps_epu32( __W, __U, __A, __R) __extension__ ({ \
4085 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
4086 (__v16si)( __W),\
4087 (__mmask16)( __U),( __R));\
4088})
4089
4090#define _mm512_maskz_cvt_roundps_epu32( __U, __A, __R) __extension__ ({ \
4091 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
4092 (__v16si)\
4093 _mm512_setzero_si512 (),\
4094 (__mmask16)( __U),( __R));\
4095})
4096
Michael Zuckermanf1544752016-05-09 10:32:51 +00004097static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00004098_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00004099{
4100 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
4101 (__v16si)\
4102 _mm512_undefined_epi32 (),\
4103 (__mmask16) -1,\
4104 _MM_FROUND_CUR_DIRECTION);\
4105}
4106
4107static __inline__ __m512i __DEFAULT_FN_ATTRS
4108_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
4109{
4110 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4111 (__v16si) __W,
4112 (__mmask16) __U,
4113 _MM_FROUND_CUR_DIRECTION);
4114}
4115
Michael Zuckerman9fcf3552016-05-30 13:22:12 +00004116static __inline__ __m512i __DEFAULT_FN_ATTRS
4117_mm512_maskz_cvtps_epu32 ( __mmask16 __U, __m512 __A)
4118{
4119 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4120 (__v16si)
4121 _mm512_setzero_si512 (),
4122 (__mmask16) __U ,
4123 _MM_FROUND_CUR_DIRECTION);
4124}
4125
Craig Topper72c7d512015-02-01 07:35:35 +00004126#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004127 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004128 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004129 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004130
Michael Zuckerman186d8672016-05-31 11:27:34 +00004131#define _mm512_mask_cvt_roundpd_epu32( W, U, A, R) __extension__ ({ \
4132 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4133 (__v8si)(W), \
4134 (__mmask8) (U), (int)(R)); })
4135
4136#define _mm512_maskz_cvt_roundpd_epu32(U, A, R) __extension__ ({ \
4137 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4138 (__v8si)_mm256_setzero_si256(), \
4139 (__mmask8)(U), (int)(R)); })
4140
Michael Zuckermanf1544752016-05-09 10:32:51 +00004141static __inline__ __m256i __DEFAULT_FN_ATTRS
4142_mm512_cvtpd_epu32 (__m512d __A)
4143{
4144 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4145 (__v8si)
4146 _mm256_undefined_si256 (),
4147 (__mmask8) -1,
4148 _MM_FROUND_CUR_DIRECTION);
4149}
4150
4151static __inline__ __m256i __DEFAULT_FN_ATTRS
4152_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
4153{
4154 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4155 (__v8si) __W,
4156 (__mmask8) __U,
4157 _MM_FROUND_CUR_DIRECTION);
4158}
4159
4160static __inline__ __m256i __DEFAULT_FN_ATTRS
4161_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
4162{
4163 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4164 (__v8si)
4165 _mm256_setzero_si256 (),
4166 (__mmask8) __U,
4167 _MM_FROUND_CUR_DIRECTION);
4168}
Adam Nemet63a951e2015-01-14 01:31:17 +00004169/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00004170static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004171_mm512_unpackhi_pd(__m512d __a, __m512d __b)
4172{
4173 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
4174}
4175
Michael Kupersteine45af542015-06-30 13:36:19 +00004176static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004177_mm512_unpacklo_pd(__m512d __a, __m512d __b)
4178{
4179 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
4180}
4181
Michael Kupersteine45af542015-06-30 13:36:19 +00004182static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004183_mm512_unpackhi_ps(__m512 __a, __m512 __b)
4184{
4185 return __builtin_shufflevector(__a, __b,
4186 2, 18, 3, 19,
4187 2+4, 18+4, 3+4, 19+4,
4188 2+8, 18+8, 3+8, 19+8,
4189 2+12, 18+12, 3+12, 19+12);
4190}
4191
Michael Kupersteine45af542015-06-30 13:36:19 +00004192static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004193_mm512_unpacklo_ps(__m512 __a, __m512 __b)
4194{
4195 return __builtin_shufflevector(__a, __b,
4196 0, 16, 1, 17,
4197 0+4, 16+4, 1+4, 17+4,
4198 0+8, 16+8, 1+8, 17+8,
4199 0+12, 16+12, 1+12, 17+12);
4200}
4201
Adam Nemet0d5bb552014-07-28 17:14:40 +00004202/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004203
Michael Kupersteine45af542015-06-30 13:36:19 +00004204static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004205_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004206{
4207 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4208 (__v16si) __B,
4209 (__mmask16) -1);
4210}
4211
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004212static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4213_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
4214{
4215 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4216 (__v16si) __B, __U);
4217}
4218
Michael Kupersteine45af542015-06-30 13:36:19 +00004219static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004220_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004221{
4222 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
4223 (__v8di) __B,
4224 (__mmask8) -1);
4225}
4226
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004227static __inline__ __mmask8 __DEFAULT_FN_ATTRS
4228_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
4229{
4230 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
4231}
4232
4233
Adam Nemet0d5bb552014-07-28 17:14:40 +00004234/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004235
Michael Kupersteine45af542015-06-30 13:36:19 +00004236static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004237_mm512_loadu_si512 (void const *__P)
4238{
Craig Topper4537ea72016-05-14 06:03:13 +00004239 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004240 (__v16si)
4241 _mm512_setzero_si512 (),
4242 (__mmask16) -1);
4243}
4244
4245static __inline __m512i __DEFAULT_FN_ATTRS
4246_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4247{
Craig Topper4537ea72016-05-14 06:03:13 +00004248 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004249 (__v16si) __W,
4250 (__mmask16) __U);
4251}
4252
4253
4254static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004255_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004256{
Craig Topper4537ea72016-05-14 06:03:13 +00004257 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004258 (__v16si)
4259 _mm512_setzero_si512 (),
4260 (__mmask16) __U);
4261}
4262
Michael Kupersteine45af542015-06-30 13:36:19 +00004263static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004264_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4265{
Craig Topper4537ea72016-05-14 06:03:13 +00004266 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004267 (__v8di) __W,
4268 (__mmask8) __U);
4269}
4270
4271static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004272_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004273{
Craig Topper4537ea72016-05-14 06:03:13 +00004274 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004275 (__v8di)
4276 _mm512_setzero_si512 (),
4277 (__mmask8) __U);
4278}
4279
Michael Kupersteine45af542015-06-30 13:36:19 +00004280static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004281_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
4282{
Craig Topper4537ea72016-05-14 06:03:13 +00004283 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004284 (__v16sf) __W,
4285 (__mmask16) __U);
4286}
4287
4288static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004289_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004290{
Craig Topper4537ea72016-05-14 06:03:13 +00004291 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004292 (__v16sf)
4293 _mm512_setzero_ps (),
4294 (__mmask16) __U);
4295}
4296
Michael Kupersteine45af542015-06-30 13:36:19 +00004297static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004298_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004299{
Craig Topper4537ea72016-05-14 06:03:13 +00004300 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004301 (__v8df) __W,
4302 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00004303}
4304
Michael Kupersteine45af542015-06-30 13:36:19 +00004305static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004306_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00004307{
Craig Topper4537ea72016-05-14 06:03:13 +00004308 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00004309 (__v8df)
4310 _mm512_setzero_pd (),
4311 (__mmask8) __U);
4312}
4313
Michael Kupersteine45af542015-06-30 13:36:19 +00004314static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004315_mm512_loadu_pd(double const *__p)
4316{
4317 struct __loadu_pd {
4318 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004319 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004320 return ((struct __loadu_pd*)__p)->__v;
4321}
4322
Michael Kupersteine45af542015-06-30 13:36:19 +00004323static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004324_mm512_loadu_ps(float const *__p)
4325{
4326 struct __loadu_ps {
4327 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004328 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004329 return ((struct __loadu_ps*)__p)->__v;
4330}
4331
Michael Kupersteine45af542015-06-30 13:36:19 +00004332static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004333_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004334{
4335 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
4336 (__v16sf)
4337 _mm512_setzero_ps (),
4338 (__mmask16) -1);
4339}
4340
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004341static __inline __m512 __DEFAULT_FN_ATTRS
4342_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4343{
4344 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4345 (__v16sf) __W,
4346 (__mmask16) __U);
4347}
4348
4349static __inline __m512 __DEFAULT_FN_ATTRS
4350_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4351{
4352 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4353 (__v16sf)
4354 _mm512_setzero_ps (),
4355 (__mmask16) __U);
4356}
4357
Michael Kupersteine45af542015-06-30 13:36:19 +00004358static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004359_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004360{
4361 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4362 (__v8df)
4363 _mm512_setzero_pd (),
4364 (__mmask8) -1);
4365}
4366
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004367static __inline __m512d __DEFAULT_FN_ATTRS
4368_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4369{
4370 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4371 (__v8df) __W,
4372 (__mmask8) __U);
4373}
4374
4375static __inline __m512d __DEFAULT_FN_ATTRS
4376_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4377{
4378 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4379 (__v8df)
4380 _mm512_setzero_pd (),
4381 (__mmask8) __U);
4382}
4383
4384static __inline __m512i __DEFAULT_FN_ATTRS
4385_mm512_load_si512 (void const *__P)
4386{
4387 return *(__m512i *) __P;
4388}
4389
4390static __inline __m512i __DEFAULT_FN_ATTRS
4391_mm512_load_epi32 (void const *__P)
4392{
4393 return *(__m512i *) __P;
4394}
4395
4396static __inline __m512i __DEFAULT_FN_ATTRS
4397_mm512_load_epi64 (void const *__P)
4398{
4399 return *(__m512i *) __P;
4400}
4401
Adam Nemet0d5bb552014-07-28 17:14:40 +00004402/* SIMD store ops */
4403
Michael Kupersteine45af542015-06-30 13:36:19 +00004404static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004405_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004406{
Craig Topper4537ea72016-05-14 06:03:13 +00004407 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004408 (__mmask8) __U);
4409}
4410
Michael Kupersteine45af542015-06-30 13:36:19 +00004411static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004412_mm512_storeu_si512 (void *__P, __m512i __A)
4413{
Craig Topper4537ea72016-05-14 06:03:13 +00004414 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004415 (__mmask16) -1);
4416}
4417
4418static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004419_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004420{
Craig Topper4537ea72016-05-14 06:03:13 +00004421 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004422 (__mmask16) __U);
4423}
4424
Michael Kupersteine45af542015-06-30 13:36:19 +00004425static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004426_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004427{
Craig Topper4537ea72016-05-14 06:03:13 +00004428 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004429}
4430
Michael Kupersteine45af542015-06-30 13:36:19 +00004431static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004432_mm512_storeu_pd(void *__P, __m512d __A)
4433{
Craig Topper4537ea72016-05-14 06:03:13 +00004434 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004435}
4436
Michael Kupersteine45af542015-06-30 13:36:19 +00004437static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004438_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004439{
Craig Topper4537ea72016-05-14 06:03:13 +00004440 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004441 (__mmask16) __U);
4442}
4443
Michael Kupersteine45af542015-06-30 13:36:19 +00004444static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004445_mm512_storeu_ps(void *__P, __m512 __A)
4446{
Craig Topper4537ea72016-05-14 06:03:13 +00004447 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004448}
4449
Michael Kupersteine45af542015-06-30 13:36:19 +00004450static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004451_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004452{
Adam Nemetc0cff242015-01-16 18:51:50 +00004453 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004454}
4455
Michael Kupersteine45af542015-06-30 13:36:19 +00004456static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004457_mm512_store_pd(void *__P, __m512d __A)
4458{
4459 *(__m512d*)__P = __A;
4460}
4461
Michael Kupersteine45af542015-06-30 13:36:19 +00004462static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004463_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4464{
4465 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4466 (__mmask16) __U);
4467}
4468
Michael Kupersteine45af542015-06-30 13:36:19 +00004469static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004470_mm512_store_ps(void *__P, __m512 __A)
4471{
4472 *(__m512*)__P = __A;
4473}
4474
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004475static __inline void __DEFAULT_FN_ATTRS
4476_mm512_store_si512 (void *__P, __m512i __A)
4477{
4478 *(__m512i *) __P = __A;
4479}
4480
4481static __inline void __DEFAULT_FN_ATTRS
4482_mm512_store_epi32 (void *__P, __m512i __A)
4483{
4484 *(__m512i *) __P = __A;
4485}
4486
4487static __inline void __DEFAULT_FN_ATTRS
4488_mm512_store_epi64 (void *__P, __m512i __A)
4489{
4490 *(__m512i *) __P = __A;
4491}
4492
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004493/* Mask ops */
4494
Michael Kupersteine45af542015-06-30 13:36:19 +00004495static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004496_mm512_knot(__mmask16 __M)
4497{
4498 return __builtin_ia32_knothi(__M);
4499}
4500
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004501/* Integer compare */
4502
Michael Kupersteine45af542015-06-30 13:36:19 +00004503static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004504_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4505 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4506 (__mmask16)-1);
4507}
4508
Michael Kupersteine45af542015-06-30 13:36:19 +00004509static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004510_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4511 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4512 __u);
4513}
4514
Michael Kupersteine45af542015-06-30 13:36:19 +00004515static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004516_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4517 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4518 (__mmask16)-1);
4519}
4520
Michael Kupersteine45af542015-06-30 13:36:19 +00004521static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004522_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4523 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4524 __u);
4525}
4526
Michael Kupersteine45af542015-06-30 13:36:19 +00004527static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004528_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4529 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4530 __u);
4531}
4532
Michael Kupersteine45af542015-06-30 13:36:19 +00004533static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004534_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4535 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4536 (__mmask8)-1);
4537}
4538
Michael Kupersteine45af542015-06-30 13:36:19 +00004539static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004540_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4541 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4542 (__mmask8)-1);
4543}
4544
Michael Kupersteine45af542015-06-30 13:36:19 +00004545static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004546_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4547 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4548 __u);
4549}
4550
Michael Kupersteine45af542015-06-30 13:36:19 +00004551static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004552_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4553 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4554 (__mmask16)-1);
4555}
4556
Michael Kupersteine45af542015-06-30 13:36:19 +00004557static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004558_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4559 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4560 __u);
4561}
4562
Michael Kupersteine45af542015-06-30 13:36:19 +00004563static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004564_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4565 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4566 (__mmask16)-1);
4567}
4568
Michael Kupersteine45af542015-06-30 13:36:19 +00004569static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004570_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4571 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4572 __u);
4573}
4574
Michael Kupersteine45af542015-06-30 13:36:19 +00004575static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004576_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4577 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4578 (__mmask8)-1);
4579}
4580
Michael Kupersteine45af542015-06-30 13:36:19 +00004581static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004582_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4583 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4584 __u);
4585}
4586
Michael Kupersteine45af542015-06-30 13:36:19 +00004587static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004588_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4589 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4590 (__mmask8)-1);
4591}
4592
Michael Kupersteine45af542015-06-30 13:36:19 +00004593static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004594_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4595 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4596 __u);
4597}
4598
Michael Kupersteine45af542015-06-30 13:36:19 +00004599static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004600_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4601 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4602 (__mmask16)-1);
4603}
4604
Michael Kupersteine45af542015-06-30 13:36:19 +00004605static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004606_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4607 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4608 __u);
4609}
4610
Michael Kupersteine45af542015-06-30 13:36:19 +00004611static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004612_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4613 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4614 (__mmask16)-1);
4615}
4616
Michael Kupersteine45af542015-06-30 13:36:19 +00004617static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004618_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4619 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4620 __u);
4621}
4622
Michael Kupersteine45af542015-06-30 13:36:19 +00004623static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004624_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4625 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4626 __u);
4627}
4628
Michael Kupersteine45af542015-06-30 13:36:19 +00004629static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004630_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4631 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4632 (__mmask8)-1);
4633}
4634
Michael Kupersteine45af542015-06-30 13:36:19 +00004635static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004636_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4637 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4638 (__mmask8)-1);
4639}
4640
Michael Kupersteine45af542015-06-30 13:36:19 +00004641static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004642_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4643 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4644 __u);
4645}
4646
Michael Kupersteine45af542015-06-30 13:36:19 +00004647static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004648_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4649 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4650 (__mmask16)-1);
4651}
4652
Michael Kupersteine45af542015-06-30 13:36:19 +00004653static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004654_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4655 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4656 __u);
4657}
4658
Michael Kupersteine45af542015-06-30 13:36:19 +00004659static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004660_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4661 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4662 (__mmask16)-1);
4663}
4664
Michael Kupersteine45af542015-06-30 13:36:19 +00004665static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004666_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4667 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4668 __u);
4669}
4670
Michael Kupersteine45af542015-06-30 13:36:19 +00004671static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004672_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4673 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4674 (__mmask8)-1);
4675}
4676
Michael Kupersteine45af542015-06-30 13:36:19 +00004677static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004678_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4679 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4680 __u);
4681}
4682
Michael Kupersteine45af542015-06-30 13:36:19 +00004683static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004684_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4685 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4686 (__mmask8)-1);
4687}
4688
Michael Kupersteine45af542015-06-30 13:36:19 +00004689static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004690_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4691 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4692 __u);
4693}
4694
Michael Kupersteine45af542015-06-30 13:36:19 +00004695static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004696_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4697 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4698 (__mmask16)-1);
4699}
4700
Michael Kupersteine45af542015-06-30 13:36:19 +00004701static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004702_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4703 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4704 __u);
4705}
4706
Michael Kupersteine45af542015-06-30 13:36:19 +00004707static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004708_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4709 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4710 (__mmask16)-1);
4711}
4712
Michael Kupersteine45af542015-06-30 13:36:19 +00004713static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004714_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4715 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4716 __u);
4717}
4718
Michael Kupersteine45af542015-06-30 13:36:19 +00004719static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004720_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4721 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4722 (__mmask8)-1);
4723}
4724
Michael Kupersteine45af542015-06-30 13:36:19 +00004725static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004726_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4727 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4728 __u);
4729}
4730
Michael Kupersteine45af542015-06-30 13:36:19 +00004731static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004732_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4733 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4734 (__mmask8)-1);
4735}
4736
Michael Kupersteine45af542015-06-30 13:36:19 +00004737static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004738_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4739 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4740 __u);
4741}
4742
Michael Kupersteine45af542015-06-30 13:36:19 +00004743static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004744_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4745 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4746 (__mmask16)-1);
4747}
4748
Michael Kupersteine45af542015-06-30 13:36:19 +00004749static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004750_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4751 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4752 __u);
4753}
4754
Michael Kupersteine45af542015-06-30 13:36:19 +00004755static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004756_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4757 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4758 (__mmask16)-1);
4759}
4760
Michael Kupersteine45af542015-06-30 13:36:19 +00004761static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004762_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4763 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4764 __u);
4765}
4766
Michael Kupersteine45af542015-06-30 13:36:19 +00004767static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004768_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4769 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4770 (__mmask8)-1);
4771}
4772
Michael Kupersteine45af542015-06-30 13:36:19 +00004773static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004774_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4775 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4776 __u);
4777}
4778
Michael Kupersteine45af542015-06-30 13:36:19 +00004779static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004780_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4781 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4782 (__mmask8)-1);
4783}
4784
Michael Kupersteine45af542015-06-30 13:36:19 +00004785static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004786_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4787 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4788 __u);
4789}
4790
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004791static __inline__ __m512i __DEFAULT_FN_ATTRS
4792_mm512_cvtepi8_epi32 (__m128i __A)
4793{
4794 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4795 (__v16si)
4796 _mm512_setzero_si512 (),
4797 (__mmask16) -1);
4798}
4799
4800static __inline__ __m512i __DEFAULT_FN_ATTRS
4801_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4802{
4803 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4804 (__v16si) __W,
4805 (__mmask16) __U);
4806}
4807
4808static __inline__ __m512i __DEFAULT_FN_ATTRS
4809_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4810{
4811 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4812 (__v16si)
4813 _mm512_setzero_si512 (),
4814 (__mmask16) __U);
4815}
4816
4817static __inline__ __m512i __DEFAULT_FN_ATTRS
4818_mm512_cvtepi8_epi64 (__m128i __A)
4819{
4820 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4821 (__v8di)
4822 _mm512_setzero_si512 (),
4823 (__mmask8) -1);
4824}
4825
4826static __inline__ __m512i __DEFAULT_FN_ATTRS
4827_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4828{
4829 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4830 (__v8di) __W,
4831 (__mmask8) __U);
4832}
4833
4834static __inline__ __m512i __DEFAULT_FN_ATTRS
4835_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4836{
4837 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4838 (__v8di)
4839 _mm512_setzero_si512 (),
4840 (__mmask8) __U);
4841}
4842
4843static __inline__ __m512i __DEFAULT_FN_ATTRS
4844_mm512_cvtepi32_epi64 (__m256i __X)
4845{
4846 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4847 (__v8di)
4848 _mm512_setzero_si512 (),
4849 (__mmask8) -1);
4850}
4851
4852static __inline__ __m512i __DEFAULT_FN_ATTRS
4853_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4854{
4855 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4856 (__v8di) __W,
4857 (__mmask8) __U);
4858}
4859
4860static __inline__ __m512i __DEFAULT_FN_ATTRS
4861_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4862{
4863 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4864 (__v8di)
4865 _mm512_setzero_si512 (),
4866 (__mmask8) __U);
4867}
4868
4869static __inline__ __m512i __DEFAULT_FN_ATTRS
4870_mm512_cvtepi16_epi32 (__m256i __A)
4871{
4872 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4873 (__v16si)
4874 _mm512_setzero_si512 (),
4875 (__mmask16) -1);
4876}
4877
4878static __inline__ __m512i __DEFAULT_FN_ATTRS
4879_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4880{
4881 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4882 (__v16si) __W,
4883 (__mmask16) __U);
4884}
4885
4886static __inline__ __m512i __DEFAULT_FN_ATTRS
4887_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4888{
4889 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4890 (__v16si)
4891 _mm512_setzero_si512 (),
4892 (__mmask16) __U);
4893}
4894
4895static __inline__ __m512i __DEFAULT_FN_ATTRS
4896_mm512_cvtepi16_epi64 (__m128i __A)
4897{
4898 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4899 (__v8di)
4900 _mm512_setzero_si512 (),
4901 (__mmask8) -1);
4902}
4903
4904static __inline__ __m512i __DEFAULT_FN_ATTRS
4905_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4906{
4907 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4908 (__v8di) __W,
4909 (__mmask8) __U);
4910}
4911
4912static __inline__ __m512i __DEFAULT_FN_ATTRS
4913_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4914{
4915 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4916 (__v8di)
4917 _mm512_setzero_si512 (),
4918 (__mmask8) __U);
4919}
4920
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004921static __inline__ __m512i __DEFAULT_FN_ATTRS
4922_mm512_cvtepu8_epi32 (__m128i __A)
4923{
4924 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4925 (__v16si)
4926 _mm512_setzero_si512 (),
4927 (__mmask16) -1);
4928}
4929
4930static __inline__ __m512i __DEFAULT_FN_ATTRS
4931_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4932{
4933 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4934 (__v16si) __W,
4935 (__mmask16) __U);
4936}
4937
4938static __inline__ __m512i __DEFAULT_FN_ATTRS
4939_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4940{
4941 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4942 (__v16si)
4943 _mm512_setzero_si512 (),
4944 (__mmask16) __U);
4945}
4946
4947static __inline__ __m512i __DEFAULT_FN_ATTRS
4948_mm512_cvtepu8_epi64 (__m128i __A)
4949{
4950 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4951 (__v8di)
4952 _mm512_setzero_si512 (),
4953 (__mmask8) -1);
4954}
4955
4956static __inline__ __m512i __DEFAULT_FN_ATTRS
4957_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4958{
4959 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4960 (__v8di) __W,
4961 (__mmask8) __U);
4962}
4963
4964static __inline__ __m512i __DEFAULT_FN_ATTRS
4965_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4966{
4967 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4968 (__v8di)
4969 _mm512_setzero_si512 (),
4970 (__mmask8) __U);
4971}
4972
4973static __inline__ __m512i __DEFAULT_FN_ATTRS
4974_mm512_cvtepu32_epi64 (__m256i __X)
4975{
4976 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4977 (__v8di)
4978 _mm512_setzero_si512 (),
4979 (__mmask8) -1);
4980}
4981
4982static __inline__ __m512i __DEFAULT_FN_ATTRS
4983_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4984{
4985 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4986 (__v8di) __W,
4987 (__mmask8) __U);
4988}
4989
4990static __inline__ __m512i __DEFAULT_FN_ATTRS
4991_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4992{
4993 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4994 (__v8di)
4995 _mm512_setzero_si512 (),
4996 (__mmask8) __U);
4997}
4998
4999static __inline__ __m512i __DEFAULT_FN_ATTRS
5000_mm512_cvtepu16_epi32 (__m256i __A)
5001{
5002 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5003 (__v16si)
5004 _mm512_setzero_si512 (),
5005 (__mmask16) -1);
5006}
5007
5008static __inline__ __m512i __DEFAULT_FN_ATTRS
5009_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
5010{
5011 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5012 (__v16si) __W,
5013 (__mmask16) __U);
5014}
5015
5016static __inline__ __m512i __DEFAULT_FN_ATTRS
5017_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
5018{
5019 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5020 (__v16si)
5021 _mm512_setzero_si512 (),
5022 (__mmask16) __U);
5023}
5024
5025static __inline__ __m512i __DEFAULT_FN_ATTRS
5026_mm512_cvtepu16_epi64 (__m128i __A)
5027{
5028 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5029 (__v8di)
5030 _mm512_setzero_si512 (),
5031 (__mmask8) -1);
5032}
5033
5034static __inline__ __m512i __DEFAULT_FN_ATTRS
5035_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
5036{
5037 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5038 (__v8di) __W,
5039 (__mmask8) __U);
5040}
5041
5042static __inline__ __m512i __DEFAULT_FN_ATTRS
5043_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
5044{
5045 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5046 (__v8di)
5047 _mm512_setzero_si512 (),
5048 (__mmask8) __U);
5049}
5050
Michael Zuckermane98cc742016-02-23 15:59:47 +00005051static __inline__ __m512i __DEFAULT_FN_ATTRS
5052_mm512_rorv_epi32 (__m512i __A, __m512i __B)
5053{
5054 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5055 (__v16si) __B,
5056 (__v16si)
5057 _mm512_setzero_si512 (),
5058 (__mmask16) -1);
5059}
5060
5061static __inline__ __m512i __DEFAULT_FN_ATTRS
5062_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5063{
5064 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5065 (__v16si) __B,
5066 (__v16si) __W,
5067 (__mmask16) __U);
5068}
5069
5070static __inline__ __m512i __DEFAULT_FN_ATTRS
5071_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5072{
5073 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5074 (__v16si) __B,
5075 (__v16si)
5076 _mm512_setzero_si512 (),
5077 (__mmask16) __U);
5078}
5079
5080static __inline__ __m512i __DEFAULT_FN_ATTRS
5081_mm512_rorv_epi64 (__m512i __A, __m512i __B)
5082{
5083 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5084 (__v8di) __B,
5085 (__v8di)
5086 _mm512_setzero_si512 (),
5087 (__mmask8) -1);
5088}
5089
5090static __inline__ __m512i __DEFAULT_FN_ATTRS
5091_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5092{
5093 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5094 (__v8di) __B,
5095 (__v8di) __W,
5096 (__mmask8) __U);
5097}
5098
5099static __inline__ __m512i __DEFAULT_FN_ATTRS
5100_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5101{
5102 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5103 (__v8di) __B,
5104 (__v8di)
5105 _mm512_setzero_si512 (),
5106 (__mmask8) __U);
5107}
5108
5109
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00005110
Craig Topper4cac1c22015-01-25 23:30:07 +00005111#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005112 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005113 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005114 (__mmask16)-1); })
5115
5116#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005117 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005118 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005119 (__mmask16)-1); })
5120
5121#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005122 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005123 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005124 (__mmask8)-1); })
5125
5126#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005127 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005128 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005129 (__mmask8)-1); })
5130
5131#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005132 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005133 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005134 (__mmask16)(m)); })
5135
5136#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005137 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005138 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005139 (__mmask16)(m)); })
5140
5141#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005142 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005143 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005144 (__mmask8)(m)); })
5145
5146#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005147 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005148 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005149 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00005150
Michael Zuckerman38a27272016-02-22 09:05:41 +00005151#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005152 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5153 (__v16si)_mm512_setzero_si512(), \
5154 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005155
5156#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005157 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5158 (__v16si)(__m512i)(W), \
5159 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005160
5161#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005162 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5163 (__v16si)_mm512_setzero_si512(), \
5164 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005165
5166#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005167 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5168 (__v8di)_mm512_setzero_si512(), \
5169 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005170
5171#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005172 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5173 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005174
5175#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005176 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5177 (__v8di)_mm512_setzero_si512(), \
5178 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005179static __inline__ __m512i __DEFAULT_FN_ATTRS
5180_mm512_rolv_epi32 (__m512i __A, __m512i __B)
5181{
5182 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5183 (__v16si) __B,
5184 (__v16si)
5185 _mm512_setzero_si512 (),
5186 (__mmask16) -1);
5187}
5188
5189static __inline__ __m512i __DEFAULT_FN_ATTRS
5190_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5191{
5192 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5193 (__v16si) __B,
5194 (__v16si) __W,
5195 (__mmask16) __U);
5196}
5197
5198static __inline__ __m512i __DEFAULT_FN_ATTRS
5199_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5200{
5201 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5202 (__v16si) __B,
5203 (__v16si)
5204 _mm512_setzero_si512 (),
5205 (__mmask16) __U);
5206}
5207
5208static __inline__ __m512i __DEFAULT_FN_ATTRS
5209_mm512_rolv_epi64 (__m512i __A, __m512i __B)
5210{
5211 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5212 (__v8di) __B,
5213 (__v8di)
5214 _mm512_setzero_si512 (),
5215 (__mmask8) -1);
5216}
5217
5218static __inline__ __m512i __DEFAULT_FN_ATTRS
5219_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5220{
5221 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5222 (__v8di) __B,
5223 (__v8di) __W,
5224 (__mmask8) __U);
5225}
5226
5227static __inline__ __m512i __DEFAULT_FN_ATTRS
5228_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5229{
5230 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5231 (__v8di) __B,
5232 (__v8di)
5233 _mm512_setzero_si512 (),
5234 (__mmask8) __U);
5235}
5236
Craig Topper8c18e112016-05-17 04:41:50 +00005237#define _mm512_ror_epi32(A, B) __extension__ ({ \
5238 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5239 (__v16si)_mm512_setzero_si512(), \
5240 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005241
Craig Topper8c18e112016-05-17 04:41:50 +00005242#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5243 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5244 (__v16si)(__m512i)(W), \
5245 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005246
Craig Topper8c18e112016-05-17 04:41:50 +00005247#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
5248 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5249 (__v16si)_mm512_setzero_si512(), \
5250 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005251
Craig Topper8c18e112016-05-17 04:41:50 +00005252#define _mm512_ror_epi64(A, B) __extension__ ({ \
5253 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5254 (__v8di)_mm512_setzero_si512(), \
5255 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005256
Craig Topper8c18e112016-05-17 04:41:50 +00005257#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5258 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5259 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005260
Craig Topper8c18e112016-05-17 04:41:50 +00005261#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
5262 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5263 (__v8di)_mm512_setzero_si512(), \
5264 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005265
Craig Topper8c18e112016-05-17 04:41:50 +00005266#define _mm512_slli_epi32(A, B) __extension__ ({ \
5267 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5268 (__v16si)_mm512_setzero_si512(), \
5269 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005270
Craig Topper8c18e112016-05-17 04:41:50 +00005271#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5272 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5273 (__v16si)(__m512i)(W), \
5274 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005275
Craig Topper8c18e112016-05-17 04:41:50 +00005276#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
5277 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5278 (__v16si)_mm512_setzero_si512(), \
5279 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005280
Craig Topper8c18e112016-05-17 04:41:50 +00005281#define _mm512_slli_epi64(A, B) __extension__ ({ \
5282 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5283 (__v8di)_mm512_setzero_si512(), \
5284 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005285
Craig Topper8c18e112016-05-17 04:41:50 +00005286#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5287 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5288 (__v8di)(__m512i)(W), \
5289 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005290
Craig Topper8c18e112016-05-17 04:41:50 +00005291#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
5292 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5293 (__v8di)_mm512_setzero_si512(), \
5294 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005295
Michael Zuckerman38a27272016-02-22 09:05:41 +00005296
Michael Zuckermand176d742016-03-01 17:49:03 +00005297
Craig Topper8c18e112016-05-17 04:41:50 +00005298#define _mm512_srli_epi32(A, B) __extension__ ({ \
5299 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5300 (__v16si)_mm512_setzero_si512(), \
5301 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005302
Craig Topper8c18e112016-05-17 04:41:50 +00005303#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
5304 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5305 (__v16si)(__m512i)(W), \
5306 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005307
Craig Topper8c18e112016-05-17 04:41:50 +00005308#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
5309 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5310 (__v16si)_mm512_setzero_si512(), \
5311 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005312
Craig Topper8c18e112016-05-17 04:41:50 +00005313#define _mm512_srli_epi64(A, B) __extension__ ({ \
5314 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5315 (__v8di)_mm512_setzero_si512(), \
5316 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005317
Craig Topper8c18e112016-05-17 04:41:50 +00005318#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
5319 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5320 (__v8di)(__m512i)(W), \
5321 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005322
Craig Topper8c18e112016-05-17 04:41:50 +00005323#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
5324 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5325 (__v8di)_mm512_setzero_si512(), \
5326 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005327
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005328static __inline__ __m512i __DEFAULT_FN_ATTRS
5329_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
5330{
5331 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5332 (__v16si) __W,
5333 (__mmask16) __U);
5334}
5335
5336static __inline__ __m512i __DEFAULT_FN_ATTRS
5337_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
5338{
5339 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5340 (__v16si)
5341 _mm512_setzero_si512 (),
5342 (__mmask16) __U);
5343}
5344
5345static __inline__ void __DEFAULT_FN_ATTRS
5346_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5347{
5348 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5349 (__mmask16) __U);
5350}
5351
5352static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005353_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5354{
5355 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5356 (__v16si) __W,
5357 (__mmask16) __U);
5358}
5359
5360static __inline__ __m512i __DEFAULT_FN_ATTRS
5361_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5362{
5363 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5364 (__v16si)
5365 _mm512_setzero_si512 (),
5366 (__mmask16) __U);
5367}
5368
5369static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005370_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5371{
5372 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5373 (__v8di) __W,
5374 (__mmask8) __U);
5375}
5376
5377static __inline__ __m512i __DEFAULT_FN_ATTRS
5378_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5379{
5380 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5381 (__v8di)
5382 _mm512_setzero_si512 (),
5383 (__mmask8) __U);
5384}
5385
5386static __inline__ __m512i __DEFAULT_FN_ATTRS
5387_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5388{
5389 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5390 (__v8di) __W,
5391 (__mmask8) __U);
5392}
5393
5394static __inline__ __m512i __DEFAULT_FN_ATTRS
5395_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5396{
5397 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5398 (__v8di)
5399 _mm512_setzero_si512 (),
5400 (__mmask8) __U);
5401}
5402
5403static __inline__ void __DEFAULT_FN_ATTRS
5404_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5405{
5406 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5407 (__mmask8) __U);
5408}
5409
5410
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005411
5412static __inline__ __m512d __DEFAULT_FN_ATTRS
5413_mm512_movedup_pd (__m512d __A)
5414{
5415 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5416 (__v8df)
5417 _mm512_undefined_pd (),
5418 (__mmask8) -1);
5419}
5420
5421static __inline__ __m512d __DEFAULT_FN_ATTRS
5422_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5423{
5424 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5425 (__v8df) __W,
5426 (__mmask8) __U);
5427}
5428
5429static __inline__ __m512d __DEFAULT_FN_ATTRS
5430_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5431{
5432 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5433 (__v8df)
5434 _mm512_setzero_pd (),
5435 (__mmask8) __U);
5436}
5437
Craig Topper8c18e112016-05-17 04:41:50 +00005438#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5439 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5440 (__v8df)(__m512d)(B), \
5441 (__v8di)(__m512i)(C), (int)(imm), \
5442 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005443
Craig Topper8c18e112016-05-17 04:41:50 +00005444#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5445 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5446 (__v8df)(__m512d)(B), \
5447 (__v8di)(__m512i)(C), (int)(imm), \
5448 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005449
Craig Topper8c18e112016-05-17 04:41:50 +00005450#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5451 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5452 (__v8df)(__m512d)(B), \
5453 (__v8di)(__m512i)(C), (int)(imm), \
5454 (__mmask8)-1, \
5455 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005456
Craig Topper8c18e112016-05-17 04:41:50 +00005457#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5458 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5459 (__v8df)(__m512d)(B), \
5460 (__v8di)(__m512i)(C), (int)(imm), \
5461 (__mmask8)(U), \
5462 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005463
Craig Topper8c18e112016-05-17 04:41:50 +00005464#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5465 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5466 (__v8df)(__m512d)(B), \
5467 (__v8di)(__m512i)(C), \
5468 (int)(imm), (__mmask8)(U), \
5469 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005470
Craig Topper8c18e112016-05-17 04:41:50 +00005471#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5472 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5473 (__v8df)(__m512d)(B), \
5474 (__v8di)(__m512i)(C), \
5475 (int)(imm), (__mmask8)(U), \
5476 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005477
Craig Topper8c18e112016-05-17 04:41:50 +00005478#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5479 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5480 (__v16sf)(__m512)(B), \
5481 (__v16si)(__m512i)(C), (int)(imm), \
5482 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005483
Craig Topper8c18e112016-05-17 04:41:50 +00005484#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5485 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5486 (__v16sf)(__m512)(B), \
5487 (__v16si)(__m512i)(C), (int)(imm), \
5488 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005489
Craig Topper8c18e112016-05-17 04:41:50 +00005490#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5491 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5492 (__v16sf)(__m512)(B), \
5493 (__v16si)(__m512i)(C), (int)(imm), \
5494 (__mmask16)-1, \
5495 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005496
Craig Topper8c18e112016-05-17 04:41:50 +00005497#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5498 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5499 (__v16sf)(__m512)(B), \
5500 (__v16si)(__m512i)(C), (int)(imm), \
5501 (__mmask16)(U), \
5502 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005503
Craig Topper8c18e112016-05-17 04:41:50 +00005504#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5505 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5506 (__v16sf)(__m512)(B), \
5507 (__v16si)(__m512i)(C), \
5508 (int)(imm), (__mmask16)(U), \
5509 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005510
Craig Topper8c18e112016-05-17 04:41:50 +00005511#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5512 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5513 (__v16sf)(__m512)(B), \
5514 (__v16si)(__m512i)(C), \
5515 (int)(imm), (__mmask16)(U), \
5516 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005517
Craig Topper8c18e112016-05-17 04:41:50 +00005518#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5519 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5520 (__v2df)(__m128d)(B), \
5521 (__v2di)(__m128i)(C), (int)(imm), \
5522 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005523
Craig Topper8c18e112016-05-17 04:41:50 +00005524#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5525 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5526 (__v2df)(__m128d)(B), \
5527 (__v2di)(__m128i)(C), (int)(imm), \
5528 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005529
Craig Topper8c18e112016-05-17 04:41:50 +00005530#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5531 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5532 (__v2df)(__m128d)(B), \
5533 (__v2di)(__m128i)(C), (int)(imm), \
5534 (__mmask8)-1, \
5535 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005536
Craig Topper8c18e112016-05-17 04:41:50 +00005537#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5538 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5539 (__v2df)(__m128d)(B), \
5540 (__v2di)(__m128i)(C), (int)(imm), \
5541 (__mmask8)(U), \
5542 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005543
Craig Topper8c18e112016-05-17 04:41:50 +00005544#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5545 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5546 (__v2df)(__m128d)(B), \
5547 (__v2di)(__m128i)(C), (int)(imm), \
5548 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005549
Craig Topper8c18e112016-05-17 04:41:50 +00005550#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5551 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5552 (__v2df)(__m128d)(B), \
5553 (__v2di)(__m128i)(C), (int)(imm), \
5554 (__mmask8)(U), \
5555 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005556
Craig Topper8c18e112016-05-17 04:41:50 +00005557#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5558 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5559 (__v4sf)(__m128)(B), \
5560 (__v4si)(__m128i)(C), (int)(imm), \
5561 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005562
Craig Topper8c18e112016-05-17 04:41:50 +00005563#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5564 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5565 (__v4sf)(__m128)(B), \
5566 (__v4si)(__m128i)(C), (int)(imm), \
5567 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005568
Craig Topper8c18e112016-05-17 04:41:50 +00005569#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5570 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5571 (__v4sf)(__m128)(B), \
5572 (__v4si)(__m128i)(C), (int)(imm), \
5573 (__mmask8)-1, \
5574 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005575
Craig Topper8c18e112016-05-17 04:41:50 +00005576#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5577 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5578 (__v4sf)(__m128)(B), \
5579 (__v4si)(__m128i)(C), (int)(imm), \
5580 (__mmask8)(U), \
5581 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005582
Craig Topper8c18e112016-05-17 04:41:50 +00005583#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5584 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5585 (__v4sf)(__m128)(B), \
5586 (__v4si)(__m128i)(C), (int)(imm), \
5587 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005588
Craig Topper8c18e112016-05-17 04:41:50 +00005589#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5590 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5591 (__v4sf)(__m128)(B), \
5592 (__v4si)(__m128i)(C), (int)(imm), \
5593 (__mmask8)(U), \
5594 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005595
Craig Topper8c18e112016-05-17 04:41:50 +00005596#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5597 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5598 (__v2df)(__m128d)(B), \
5599 (__v2df)_mm_setzero_pd(), \
5600 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005601
5602
5603static __inline__ __m128d __DEFAULT_FN_ATTRS
5604_mm_getexp_sd (__m128d __A, __m128d __B)
5605{
5606 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5607 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5608}
5609
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005610static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005611_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005612{
5613 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5614 (__v2df) __B,
5615 (__v2df) __W,
5616 (__mmask8) __U,
5617 _MM_FROUND_CUR_DIRECTION);
5618}
5619
Craig Topper8c18e112016-05-17 04:41:50 +00005620#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5621 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5622 (__v2df)(__m128d)(B), \
5623 (__v2df)(__m128d)(W), \
5624 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005625
5626static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005627_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005628{
5629 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5630 (__v2df) __B,
5631 (__v2df) _mm_setzero_pd (),
5632 (__mmask8) __U,
5633 _MM_FROUND_CUR_DIRECTION);
5634}
5635
Craig Topper8c18e112016-05-17 04:41:50 +00005636#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5637 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5638 (__v2df)(__m128d)(B), \
5639 (__v2df)_mm_setzero_pd(), \
5640 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005641
Craig Topper8c18e112016-05-17 04:41:50 +00005642#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5643 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5644 (__v4sf)(__m128)(B), \
5645 (__v4sf)_mm_setzero_ps(), \
5646 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005647
5648static __inline__ __m128 __DEFAULT_FN_ATTRS
5649_mm_getexp_ss (__m128 __A, __m128 __B)
5650{
5651 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5652 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5653}
5654
Craig Topper58187d32016-05-17 04:41:29 +00005655static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005656_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005657{
Craig Topper58187d32016-05-17 04:41:29 +00005658 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005659 (__v4sf) __B,
5660 (__v4sf) __W,
5661 (__mmask8) __U,
5662 _MM_FROUND_CUR_DIRECTION);
5663}
5664
Craig Topper8c18e112016-05-17 04:41:50 +00005665#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5666 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5667 (__v4sf)(__m128)(B), \
5668 (__v4sf)(__m128)(W), \
5669 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005670
Craig Topper58187d32016-05-17 04:41:29 +00005671static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005672_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005673{
Craig Topper58187d32016-05-17 04:41:29 +00005674 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005675 (__v4sf) __B,
5676 (__v4sf) _mm_setzero_pd (),
5677 (__mmask8) __U,
5678 _MM_FROUND_CUR_DIRECTION);
5679}
5680
Craig Topper8c18e112016-05-17 04:41:50 +00005681#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5682 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5683 (__v4sf)(__m128)(B), \
5684 (__v4sf)_mm_setzero_ps(), \
5685 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005686
Craig Topper8c18e112016-05-17 04:41:50 +00005687#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5688 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5689 (__v2df)(__m128d)(B), \
5690 (int)(((D)<<2) | (C)), \
5691 (__v2df)_mm_setzero_pd(), \
5692 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005693
Craig Topper8c18e112016-05-17 04:41:50 +00005694#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5695 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5696 (__v2df)(__m128d)(B), \
5697 (int)(((D)<<2) | (C)), \
5698 (__v2df)_mm_setzero_pd(), \
5699 (__mmask8)-1, \
5700 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005701
Craig Topper8c18e112016-05-17 04:41:50 +00005702#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5703 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5704 (__v2df)(__m128d)(B), \
5705 (int)(((D)<<2) | (C)), \
5706 (__v2df)(__m128d)(W), \
5707 (__mmask8)(U), \
5708 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005709
Craig Topper8c18e112016-05-17 04:41:50 +00005710#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5711 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5712 (__v2df)(__m128d)(B), \
5713 (int)(((D)<<2) | (C)), \
5714 (__v2df)(__m128d)(W), \
5715 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005716
Craig Topper8c18e112016-05-17 04:41:50 +00005717#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5718 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5719 (__v2df)(__m128d)(B), \
5720 (int)(((D)<<2) | (C)), \
5721 (__v2df)_mm_setzero_pd(), \
5722 (__mmask8)(U), \
5723 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005724
Craig Topper8c18e112016-05-17 04:41:50 +00005725#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5726 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5727 (__v2df)(__m128d)(B), \
5728 (int)(((D)<<2) | (C)), \
5729 (__v2df)_mm_setzero_pd(), \
5730 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005731
Craig Topper8c18e112016-05-17 04:41:50 +00005732#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5733 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5734 (__v4sf)(__m128)(B), \
5735 (int)(((D)<<2) | (C)), \
5736 (__v4sf)_mm_setzero_ps(), \
5737 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005738
Craig Topper8c18e112016-05-17 04:41:50 +00005739#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5740 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5741 (__v4sf)(__m128)(B), \
5742 (int)(((D)<<2) | (C)), \
5743 (__v4sf)_mm_setzero_ps(), \
5744 (__mmask8)-1, \
5745 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005746
Craig Topper8c18e112016-05-17 04:41:50 +00005747#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5748 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5749 (__v4sf)(__m128)(B), \
5750 (int)(((D)<<2) | (C)), \
5751 (__v4sf)(__m128)(W), \
5752 (__mmask8)(U), \
5753 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005754
Craig Topper8c18e112016-05-17 04:41:50 +00005755#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5756 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5757 (__v4sf)(__m128)(B), \
5758 (int)(((D)<<2) | (C)), \
5759 (__v4sf)(__m128)(W), \
5760 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005761
Craig Topper8c18e112016-05-17 04:41:50 +00005762#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5763 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5764 (__v4sf)(__m128)(B), \
5765 (int)(((D)<<2) | (C)), \
5766 (__v4sf)_mm_setzero_pd(), \
5767 (__mmask8)(U), \
5768 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005769
Craig Topper8c18e112016-05-17 04:41:50 +00005770#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5771 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5772 (__v4sf)(__m128)(B), \
5773 (int)(((D)<<2) | (C)), \
5774 (__v4sf)_mm_setzero_ps(), \
5775 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005776
5777static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5778_mm512_kmov (__mmask16 __A)
5779{
5780 return __A;
5781}
5782
Craig Topper8c18e112016-05-17 04:41:50 +00005783#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5784 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5785 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005786
Craig Topper8c18e112016-05-17 04:41:50 +00005787#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5788 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5789 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005790
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005791static __inline__ __m512d __DEFAULT_FN_ATTRS
5792_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5793{
5794 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5795 (__v8df) __B,
5796 (__v8df) __W,
5797 (__mmask8) __U);
5798}
Craig Topper8c18e112016-05-17 04:41:50 +00005799#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5800 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005801static __inline__ __m512i __DEFAULT_FN_ATTRS
5802_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5803 __mmask16 __U, __m512i __B)
5804{
5805 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5806 (__v16si) __I
5807 /* idx */ ,
5808 (__v16si) __B,
5809 (__mmask16) __U);
5810}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005811static __inline__ __m512i __DEFAULT_FN_ATTRS
5812_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5813{
5814 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5815 (__v16si) __B,
5816 (__v16si)
5817 _mm512_setzero_si512 (),
5818 (__mmask16) -1);
5819}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005820
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005821static __inline__ __m512i __DEFAULT_FN_ATTRS
5822_mm512_sll_epi32 (__m512i __A, __m128i __B)
5823{
5824 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5825 (__v4si) __B,
5826 (__v16si)
5827 _mm512_setzero_si512 (),
5828 (__mmask16) -1);
5829}
5830
5831static __inline__ __m512i __DEFAULT_FN_ATTRS
5832_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5833{
5834 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5835 (__v4si) __B,
5836 (__v16si) __W,
5837 (__mmask16) __U);
5838}
5839
5840static __inline__ __m512i __DEFAULT_FN_ATTRS
5841_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5842{
5843 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5844 (__v4si) __B,
5845 (__v16si)
5846 _mm512_setzero_si512 (),
5847 (__mmask16) __U);
5848}
5849
5850static __inline__ __m512i __DEFAULT_FN_ATTRS
5851_mm512_sll_epi64 (__m512i __A, __m128i __B)
5852{
5853 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5854 (__v2di) __B,
5855 (__v8di)
5856 _mm512_setzero_si512 (),
5857 (__mmask8) -1);
5858}
5859
5860static __inline__ __m512i __DEFAULT_FN_ATTRS
5861_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5862{
5863 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5864 (__v2di) __B,
5865 (__v8di) __W,
5866 (__mmask8) __U);
5867}
5868
5869static __inline__ __m512i __DEFAULT_FN_ATTRS
5870_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5871{
5872 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5873 (__v2di) __B,
5874 (__v8di)
5875 _mm512_setzero_si512 (),
5876 (__mmask8) __U);
5877}
5878
5879static __inline__ __m512i __DEFAULT_FN_ATTRS
5880_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5881{
5882 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5883 (__v16si) __Y,
5884 (__v16si)
5885 _mm512_setzero_si512 (),
5886 (__mmask16) -1);
5887}
5888
5889static __inline__ __m512i __DEFAULT_FN_ATTRS
5890_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5891{
5892 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5893 (__v16si) __Y,
5894 (__v16si) __W,
5895 (__mmask16) __U);
5896}
5897
5898static __inline__ __m512i __DEFAULT_FN_ATTRS
5899_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5900{
5901 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5902 (__v16si) __Y,
5903 (__v16si)
5904 _mm512_setzero_si512 (),
5905 (__mmask16) __U);
5906}
5907
5908static __inline__ __m512i __DEFAULT_FN_ATTRS
5909_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5910{
5911 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5912 (__v8di) __Y,
5913 (__v8di)
5914 _mm512_undefined_pd (),
5915 (__mmask8) -1);
5916}
5917
5918static __inline__ __m512i __DEFAULT_FN_ATTRS
5919_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5920{
5921 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5922 (__v8di) __Y,
5923 (__v8di) __W,
5924 (__mmask8) __U);
5925}
5926
5927static __inline__ __m512i __DEFAULT_FN_ATTRS
5928_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5929{
5930 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5931 (__v8di) __Y,
5932 (__v8di)
5933 _mm512_setzero_si512 (),
5934 (__mmask8) __U);
5935}
5936
5937static __inline__ __m512i __DEFAULT_FN_ATTRS
5938_mm512_sra_epi32 (__m512i __A, __m128i __B)
5939{
5940 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5941 (__v4si) __B,
5942 (__v16si)
5943 _mm512_setzero_si512 (),
5944 (__mmask16) -1);
5945}
5946
5947static __inline__ __m512i __DEFAULT_FN_ATTRS
5948_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5949{
5950 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5951 (__v4si) __B,
5952 (__v16si) __W,
5953 (__mmask16) __U);
5954}
5955
5956static __inline__ __m512i __DEFAULT_FN_ATTRS
5957_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5958{
5959 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5960 (__v4si) __B,
5961 (__v16si)
5962 _mm512_setzero_si512 (),
5963 (__mmask16) __U);
5964}
5965
5966static __inline__ __m512i __DEFAULT_FN_ATTRS
5967_mm512_sra_epi64 (__m512i __A, __m128i __B)
5968{
5969 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5970 (__v2di) __B,
5971 (__v8di)
5972 _mm512_setzero_si512 (),
5973 (__mmask8) -1);
5974}
5975
5976static __inline__ __m512i __DEFAULT_FN_ATTRS
5977_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5978{
5979 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5980 (__v2di) __B,
5981 (__v8di) __W,
5982 (__mmask8) __U);
5983}
5984
5985static __inline__ __m512i __DEFAULT_FN_ATTRS
5986_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5987{
5988 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5989 (__v2di) __B,
5990 (__v8di)
5991 _mm512_setzero_si512 (),
5992 (__mmask8) __U);
5993}
5994
5995static __inline__ __m512i __DEFAULT_FN_ATTRS
5996_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5997{
5998 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5999 (__v16si) __Y,
6000 (__v16si)
6001 _mm512_setzero_si512 (),
6002 (__mmask16) -1);
6003}
6004
6005static __inline__ __m512i __DEFAULT_FN_ATTRS
6006_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6007{
6008 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6009 (__v16si) __Y,
6010 (__v16si) __W,
6011 (__mmask16) __U);
6012}
6013
6014static __inline__ __m512i __DEFAULT_FN_ATTRS
6015_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6016{
6017 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6018 (__v16si) __Y,
6019 (__v16si)
6020 _mm512_setzero_si512 (),
6021 (__mmask16) __U);
6022}
6023
6024static __inline__ __m512i __DEFAULT_FN_ATTRS
6025_mm512_srav_epi64 (__m512i __X, __m512i __Y)
6026{
6027 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6028 (__v8di) __Y,
6029 (__v8di)
6030 _mm512_setzero_si512 (),
6031 (__mmask8) -1);
6032}
6033
6034static __inline__ __m512i __DEFAULT_FN_ATTRS
6035_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6036{
6037 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6038 (__v8di) __Y,
6039 (__v8di) __W,
6040 (__mmask8) __U);
6041}
6042
6043static __inline__ __m512i __DEFAULT_FN_ATTRS
6044_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6045{
6046 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6047 (__v8di) __Y,
6048 (__v8di)
6049 _mm512_setzero_si512 (),
6050 (__mmask8) __U);
6051}
6052
6053static __inline__ __m512i __DEFAULT_FN_ATTRS
6054_mm512_srl_epi32 (__m512i __A, __m128i __B)
6055{
6056 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6057 (__v4si) __B,
6058 (__v16si)
6059 _mm512_setzero_si512 (),
6060 (__mmask16) -1);
6061}
6062
6063static __inline__ __m512i __DEFAULT_FN_ATTRS
6064_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
6065{
6066 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6067 (__v4si) __B,
6068 (__v16si) __W,
6069 (__mmask16) __U);
6070}
6071
6072static __inline__ __m512i __DEFAULT_FN_ATTRS
6073_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
6074{
6075 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6076 (__v4si) __B,
6077 (__v16si)
6078 _mm512_setzero_si512 (),
6079 (__mmask16) __U);
6080}
6081
6082static __inline__ __m512i __DEFAULT_FN_ATTRS
6083_mm512_srl_epi64 (__m512i __A, __m128i __B)
6084{
6085 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6086 (__v2di) __B,
6087 (__v8di)
6088 _mm512_setzero_si512 (),
6089 (__mmask8) -1);
6090}
6091
6092static __inline__ __m512i __DEFAULT_FN_ATTRS
6093_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
6094{
6095 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6096 (__v2di) __B,
6097 (__v8di) __W,
6098 (__mmask8) __U);
6099}
6100
6101static __inline__ __m512i __DEFAULT_FN_ATTRS
6102_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
6103{
6104 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6105 (__v2di) __B,
6106 (__v8di)
6107 _mm512_setzero_si512 (),
6108 (__mmask8) __U);
6109}
6110
6111static __inline__ __m512i __DEFAULT_FN_ATTRS
6112_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
6113{
6114 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6115 (__v16si) __Y,
6116 (__v16si)
6117 _mm512_setzero_si512 (),
6118 (__mmask16) -1);
6119}
6120
6121static __inline__ __m512i __DEFAULT_FN_ATTRS
6122_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6123{
6124 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6125 (__v16si) __Y,
6126 (__v16si) __W,
6127 (__mmask16) __U);
6128}
6129
6130static __inline__ __m512i __DEFAULT_FN_ATTRS
6131_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6132{
6133 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6134 (__v16si) __Y,
6135 (__v16si)
6136 _mm512_setzero_si512 (),
6137 (__mmask16) __U);
6138}
6139
6140static __inline__ __m512i __DEFAULT_FN_ATTRS
6141_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
6142{
6143 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6144 (__v8di) __Y,
6145 (__v8di)
6146 _mm512_setzero_si512 (),
6147 (__mmask8) -1);
6148}
6149
6150static __inline__ __m512i __DEFAULT_FN_ATTRS
6151_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6152{
6153 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6154 (__v8di) __Y,
6155 (__v8di) __W,
6156 (__mmask8) __U);
6157}
6158
6159static __inline__ __m512i __DEFAULT_FN_ATTRS
6160_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6161{
6162 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6163 (__v8di) __Y,
6164 (__v8di)
6165 _mm512_setzero_si512 (),
6166 (__mmask8) __U);
6167}
6168
Craig Topper8c18e112016-05-17 04:41:50 +00006169#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6170 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
6171 (__v16si)(__m512i)(B), \
6172 (__v16si)(__m512i)(C), (int)(imm), \
6173 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006174
Craig Topper8c18e112016-05-17 04:41:50 +00006175#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6176 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
6177 (__v16si)(__m512i)(B), \
6178 (__v16si)(__m512i)(C), (int)(imm), \
6179 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006180
Craig Topper8c18e112016-05-17 04:41:50 +00006181#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6182 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
6183 (__v16si)(__m512i)(B), \
6184 (__v16si)(__m512i)(C), \
6185 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006186
Craig Topper8c18e112016-05-17 04:41:50 +00006187#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6188 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6189 (__v8di)(__m512i)(B), \
6190 (__v8di)(__m512i)(C), (int)(imm), \
6191 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006192
Craig Topper8c18e112016-05-17 04:41:50 +00006193#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6194 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6195 (__v8di)(__m512i)(B), \
6196 (__v8di)(__m512i)(C), (int)(imm), \
6197 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006198
Craig Topper8c18e112016-05-17 04:41:50 +00006199#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6200 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
6201 (__v8di)(__m512i)(B), \
6202 (__v8di)(__m512i)(C), (int)(imm), \
6203 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006204
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006205static __inline__ __m512d __DEFAULT_FN_ATTRS
6206_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
6207{
6208 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
6209 (__v8df) __B,
6210 (__v8df)
6211 _mm512_setzero_pd (),
6212 (__mmask8) __U);
6213}
6214
6215static __inline__ __m512 __DEFAULT_FN_ATTRS
6216_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6217{
6218 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
6219 (__v16sf) __B,
6220 (__v16sf) __W,
6221 (__mmask16) __U);
6222}
6223
6224static __inline__ __m512 __DEFAULT_FN_ATTRS
6225_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
6226{
6227 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
6228 (__v16sf) __B,
6229 (__v16sf)
6230 _mm512_setzero_ps (),
6231 (__mmask16) __U);
6232}
6233
6234static __inline__ __m512d __DEFAULT_FN_ATTRS
6235_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6236{
6237 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6238 (__v8df) __B,
6239 (__v8df) __W,
6240 (__mmask8) __U);
6241}
6242
6243static __inline__ __m512d __DEFAULT_FN_ATTRS
6244_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
6245{
6246 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6247 (__v8df) __B,
6248 (__v8df)
6249 _mm512_setzero_pd (),
6250 (__mmask8) __U);
6251}
6252
6253static __inline__ __m512 __DEFAULT_FN_ATTRS
6254_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6255{
6256 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6257 (__v16sf) __B,
6258 (__v16sf) __W,
6259 (__mmask16) __U);
6260}
6261
6262static __inline__ __m512 __DEFAULT_FN_ATTRS
6263_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
6264{
6265 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6266 (__v16sf) __B,
6267 (__v16sf)
6268 _mm512_setzero_ps (),
6269 (__mmask16) __U);
6270}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00006271
Craig Topper8c18e112016-05-17 04:41:50 +00006272#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
6273 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006274
Craig Topper8c18e112016-05-17 04:41:50 +00006275#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
6276 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006277
Craig Topper8c18e112016-05-17 04:41:50 +00006278#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
6279 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006280
Craig Topper8c18e112016-05-17 04:41:50 +00006281#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
6282 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006283
6284static __inline__ unsigned __DEFAULT_FN_ATTRS
6285_mm_cvtsd_u32 (__m128d __A)
6286{
6287 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
6288 _MM_FROUND_CUR_DIRECTION);
6289}
6290
Craig Topper8c18e112016-05-17 04:41:50 +00006291#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
6292 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
6293 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006294
6295static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6296_mm_cvtsd_u64 (__m128d __A)
6297{
6298 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
6299 __A,
6300 _MM_FROUND_CUR_DIRECTION);
6301}
6302
Craig Topper8c18e112016-05-17 04:41:50 +00006303#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
6304 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006305
Craig Topper8c18e112016-05-17 04:41:50 +00006306#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
6307 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006308
Craig Topper8c18e112016-05-17 04:41:50 +00006309#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
6310 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006311
Craig Topper8c18e112016-05-17 04:41:50 +00006312#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
6313 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006314
Craig Topper8c18e112016-05-17 04:41:50 +00006315#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
6316 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006317
6318static __inline__ unsigned __DEFAULT_FN_ATTRS
6319_mm_cvtss_u32 (__m128 __A)
6320{
6321 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
6322 _MM_FROUND_CUR_DIRECTION);
6323}
6324
Craig Topper8c18e112016-05-17 04:41:50 +00006325#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
6326 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
6327 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006328
6329static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6330_mm_cvtss_u64 (__m128 __A)
6331{
6332 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
6333 __A,
6334 _MM_FROUND_CUR_DIRECTION);
6335}
6336
Craig Topper8c18e112016-05-17 04:41:50 +00006337#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
6338 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006339
Craig Topper8c18e112016-05-17 04:41:50 +00006340#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6341 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006342
6343static __inline__ int __DEFAULT_FN_ATTRS
6344_mm_cvttsd_i32 (__m128d __A)
6345{
6346 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6347 _MM_FROUND_CUR_DIRECTION);
6348}
6349
Craig Topper8c18e112016-05-17 04:41:50 +00006350#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6351 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006352
Craig Topper8c18e112016-05-17 04:41:50 +00006353#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6354 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006355
6356static __inline__ long long __DEFAULT_FN_ATTRS
6357_mm_cvttsd_i64 (__m128d __A)
6358{
6359 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6360 _MM_FROUND_CUR_DIRECTION);
6361}
6362
Craig Topper8c18e112016-05-17 04:41:50 +00006363#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6364 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006365
6366static __inline__ unsigned __DEFAULT_FN_ATTRS
6367_mm_cvttsd_u32 (__m128d __A)
6368{
6369 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6370 _MM_FROUND_CUR_DIRECTION);
6371}
6372
Craig Topper8c18e112016-05-17 04:41:50 +00006373#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6374 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6375 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006376
6377static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6378_mm_cvttsd_u64 (__m128d __A)
6379{
6380 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6381 __A,
6382 _MM_FROUND_CUR_DIRECTION);
6383}
6384
Craig Topper8c18e112016-05-17 04:41:50 +00006385#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6386 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006387
Craig Topper8c18e112016-05-17 04:41:50 +00006388#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6389 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006390
6391static __inline__ int __DEFAULT_FN_ATTRS
6392_mm_cvttss_i32 (__m128 __A)
6393{
6394 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6395 _MM_FROUND_CUR_DIRECTION);
6396}
6397
Craig Topper8c18e112016-05-17 04:41:50 +00006398#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6399 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006400
Craig Topper8c18e112016-05-17 04:41:50 +00006401#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6402 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006403
6404static __inline__ long long __DEFAULT_FN_ATTRS
6405_mm_cvttss_i64 (__m128 __A)
6406{
6407 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6408 _MM_FROUND_CUR_DIRECTION);
6409}
6410
Craig Topper8c18e112016-05-17 04:41:50 +00006411#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6412 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006413
6414static __inline__ unsigned __DEFAULT_FN_ATTRS
6415_mm_cvttss_u32 (__m128 __A)
6416{
6417 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6418 _MM_FROUND_CUR_DIRECTION);
6419}
6420
Craig Topper8c18e112016-05-17 04:41:50 +00006421#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6422 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6423 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006424
6425static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6426_mm_cvttss_u64 (__m128 __A)
6427{
6428 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6429 __A,
6430 _MM_FROUND_CUR_DIRECTION);
6431}
6432
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006433static __inline__ __m512d __DEFAULT_FN_ATTRS
6434_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6435 __m512d __B)
6436{
6437 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6438 (__v8di) __I
6439 /* idx */ ,
6440 (__v8df) __B,
6441 (__mmask8) __U);
6442}
6443
6444static __inline__ __m512 __DEFAULT_FN_ATTRS
6445_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6446 __m512 __B)
6447{
6448 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6449 (__v16si) __I
6450 /* idx */ ,
6451 (__v16sf) __B,
6452 (__mmask16) __U);
6453}
6454
6455static __inline__ __m512i __DEFAULT_FN_ATTRS
6456_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6457 __mmask8 __U, __m512i __B)
6458{
6459 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6460 (__v8di) __I
6461 /* idx */ ,
6462 (__v8di) __B,
6463 (__mmask8) __U);
6464}
6465
Craig Topper8c18e112016-05-17 04:41:50 +00006466#define _mm512_permute_pd(X, C) __extension__ ({ \
6467 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6468 (__v8df)_mm512_undefined_pd(), \
6469 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006470
Craig Topper8c18e112016-05-17 04:41:50 +00006471#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6472 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6473 (__v8df)(__m512d)(W), \
6474 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006475
Craig Topper8c18e112016-05-17 04:41:50 +00006476#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6477 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6478 (__v8df)_mm512_setzero_pd(), \
6479 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006480
Craig Topper8c18e112016-05-17 04:41:50 +00006481#define _mm512_permute_ps(X, C) __extension__ ({ \
6482 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6483 (__v16sf)_mm512_undefined_ps(), \
6484 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006485
Craig Topper8c18e112016-05-17 04:41:50 +00006486#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6487 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6488 (__v16sf)(__m512)(W), \
6489 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006490
Craig Topper8c18e112016-05-17 04:41:50 +00006491#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6492 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6493 (__v16sf)_mm512_setzero_ps(), \
6494 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006495
6496static __inline__ __m512d __DEFAULT_FN_ATTRS
6497_mm512_permutevar_pd (__m512d __A, __m512i __C)
6498{
6499 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6500 (__v8di) __C,
6501 (__v8df)
6502 _mm512_undefined_pd (),
6503 (__mmask8) -1);
6504}
6505
6506static __inline__ __m512d __DEFAULT_FN_ATTRS
6507_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6508{
6509 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6510 (__v8di) __C,
6511 (__v8df) __W,
6512 (__mmask8) __U);
6513}
6514
6515static __inline__ __m512d __DEFAULT_FN_ATTRS
6516_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6517{
6518 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6519 (__v8di) __C,
6520 (__v8df)
6521 _mm512_setzero_pd (),
6522 (__mmask8) __U);
6523}
6524
6525static __inline__ __m512 __DEFAULT_FN_ATTRS
6526_mm512_permutevar_ps (__m512 __A, __m512i __C)
6527{
6528 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6529 (__v16si) __C,
6530 (__v16sf)
6531 _mm512_undefined_ps (),
6532 (__mmask16) -1);
6533}
6534
6535static __inline__ __m512 __DEFAULT_FN_ATTRS
6536_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6537{
6538 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6539 (__v16si) __C,
6540 (__v16sf) __W,
6541 (__mmask16) __U);
6542}
6543
6544static __inline__ __m512 __DEFAULT_FN_ATTRS
6545_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6546{
6547 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6548 (__v16si) __C,
6549 (__v16sf)
6550 _mm512_setzero_ps (),
6551 (__mmask16) __U);
6552}
6553
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006554static __inline __m512d __DEFAULT_FN_ATTRS
6555_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006556{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006557 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6558 /* idx */ ,
6559 (__v8df) __A,
6560 (__v8df) __B,
6561 (__mmask8) -1);
6562}
6563
6564static __inline__ __m512d __DEFAULT_FN_ATTRS
6565_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6566{
6567 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6568 /* idx */ ,
6569 (__v8df) __A,
6570 (__v8df) __B,
6571 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006572}
6573
6574static __inline__ __m512d __DEFAULT_FN_ATTRS
6575_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6576 __m512d __B)
6577{
6578 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006579 /* idx */ ,
6580 (__v8df) __A,
6581 (__v8df) __B,
6582 (__mmask8) __U);
6583}
6584
6585static __inline __m512 __DEFAULT_FN_ATTRS
6586_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6587{
6588 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6589 /* idx */ ,
6590 (__v16sf) __A,
6591 (__v16sf) __B,
6592 (__mmask16) -1);
6593}
6594
6595static __inline__ __m512 __DEFAULT_FN_ATTRS
6596_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6597{
6598 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6599 /* idx */ ,
6600 (__v16sf) __A,
6601 (__v16sf) __B,
6602 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006603}
6604
6605static __inline__ __m512 __DEFAULT_FN_ATTRS
6606_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6607 __m512 __B)
6608{
6609 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006610 /* idx */ ,
6611 (__v16sf) __A,
6612 (__v16sf) __B,
6613 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006614}
6615
Michael Zuckerman07525092016-04-11 10:22:07 +00006616static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6617_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6618{
6619 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6620 (__v16si) __B,
6621 (__mmask16) -1);
6622}
6623
6624static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6625_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6626{
6627 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6628 (__v16si) __B, __U);
6629}
6630
6631static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6632_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6633{
6634 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6635 (__v8di) __B,
6636 (__mmask8) -1);
6637}
6638
6639static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6640_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6641{
6642 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6643 (__v8di) __B, __U);
6644}
6645
Craig Topper8c18e112016-05-17 04:41:50 +00006646#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6647 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6648 (__v8si)_mm256_undefined_si256(), \
6649 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006650
Craig Topper8c18e112016-05-17 04:41:50 +00006651#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6652 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6653 (__v8si)(__m256i)(W), \
6654 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006655
Craig Topper8c18e112016-05-17 04:41:50 +00006656#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6657 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6658 (__v8si)_mm256_setzero_si256(), \
6659 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006660
6661static __inline__ __m256i __DEFAULT_FN_ATTRS
6662_mm512_cvttpd_epu32 (__m512d __A)
6663{
6664 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6665 (__v8si)
6666 _mm256_undefined_si256 (),
6667 (__mmask8) -1,
6668 _MM_FROUND_CUR_DIRECTION);
6669}
6670
6671static __inline__ __m256i __DEFAULT_FN_ATTRS
6672_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6673{
6674 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6675 (__v8si) __W,
6676 (__mmask8) __U,
6677 _MM_FROUND_CUR_DIRECTION);
6678}
6679
6680static __inline__ __m256i __DEFAULT_FN_ATTRS
6681_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6682{
6683 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6684 (__v8si)
6685 _mm256_setzero_si256 (),
6686 (__mmask8) __U,
6687 _MM_FROUND_CUR_DIRECTION);
6688}
Michael Zuckerman07525092016-04-11 10:22:07 +00006689
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006690static __inline__ __m512i __DEFAULT_FN_ATTRS
6691_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6692 __m512i __B)
6693{
6694 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6695 (__v16si) __B,
6696 (__v16si) __W,
6697 (__mmask16) __U);
6698}
6699
6700static __inline__ __m512i __DEFAULT_FN_ATTRS
6701_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6702{
6703 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6704 (__v16si) __B,
6705 (__v16si)
6706 _mm512_setzero_si512 (),
6707 (__mmask16) __U);
6708}
6709
6710static __inline__ __m512i __DEFAULT_FN_ATTRS
6711_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6712{
6713 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6714 (__v8di) __B,
6715 (__v8di)
6716 _mm512_setzero_si512 (),
6717 (__mmask8) -1);
6718}
6719
6720static __inline__ __m512i __DEFAULT_FN_ATTRS
6721_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6722{
6723 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6724 (__v8di) __B,
6725 (__v8di) __W,
6726 (__mmask8) __U);
6727}
6728
6729static __inline__ __m512i __DEFAULT_FN_ATTRS
6730_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6731{
6732 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6733 (__v8di) __B,
6734 (__v8di)
6735 _mm512_setzero_si512 (),
6736 (__mmask8) __U);
6737}
6738
6739static __inline__ __m512i __DEFAULT_FN_ATTRS
6740_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6741{
6742 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6743 (__v16si) __B,
6744 (__v16si)
6745 _mm512_setzero_si512 (),
6746 (__mmask16) -1);
6747}
6748
6749static __inline__ __m512i __DEFAULT_FN_ATTRS
6750_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6751 __m512i __B)
6752{
6753 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6754 (__v16si) __B,
6755 (__v16si) __W,
6756 (__mmask16) __U);
6757}
6758
6759static __inline__ __m512i __DEFAULT_FN_ATTRS
6760_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6761{
6762 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6763 (__v16si) __B,
6764 (__v16si)
6765 _mm512_setzero_si512 (),
6766 (__mmask16) __U);
6767}
6768
6769static __inline__ __m512i __DEFAULT_FN_ATTRS
6770_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6771{
6772 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6773 (__v8di) __B,
6774 (__v8di)
6775 _mm512_setzero_si512 (),
6776 (__mmask8) -1);
6777}
6778
6779static __inline__ __m512i __DEFAULT_FN_ATTRS
6780_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6781{
6782 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6783 (__v8di) __B,
6784 (__v8di) __W,
6785 (__mmask8) __U);
6786}
6787
6788static __inline__ __m512i __DEFAULT_FN_ATTRS
6789_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6790{
6791 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6792 (__v8di) __B,
6793 (__v8di)
6794 _mm512_setzero_si512 (),
6795 (__mmask8) __U);
6796}
6797
Craig Topper8c18e112016-05-17 04:41:50 +00006798#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6799 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6800 (__v2df)(__m128d)(B), \
6801 (__v2df)_mm_setzero_pd(), \
6802 (__mmask8)-1, (int)(imm), \
6803 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006804
Craig Topper8c18e112016-05-17 04:41:50 +00006805#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6806 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6807 (__v2df)(__m128d)(B), \
6808 (__v2df)_mm_setzero_pd(), \
6809 (__mmask8)-1, (int)(imm), \
6810 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006811
Craig Topper8c18e112016-05-17 04:41:50 +00006812#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6813 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6814 (__v2df)(__m128d)(B), \
6815 (__v2df)(__m128d)(W), \
6816 (__mmask8)(U), (int)(imm), \
6817 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006818
Craig Topper8c18e112016-05-17 04:41:50 +00006819#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6820 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6821 (__v2df)(__m128d)(B), \
6822 (__v2df)(__m128d)(W), \
6823 (__mmask8)(U), (int)(I), \
6824 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006825
Craig Topper8c18e112016-05-17 04:41:50 +00006826#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6827 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6828 (__v2df)(__m128d)(B), \
6829 (__v2df)_mm_setzero_pd(), \
6830 (__mmask8)(U), (int)(I), \
6831 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006832
Craig Topper8c18e112016-05-17 04:41:50 +00006833#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6834 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6835 (__v2df)(__m128d)(B), \
6836 (__v2df)_mm_setzero_pd(), \
6837 (__mmask8)(U), (int)(I), \
6838 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006839
Craig Topper8c18e112016-05-17 04:41:50 +00006840#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6841 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6842 (__v4sf)(__m128)(B), \
6843 (__v4sf)_mm_setzero_ps(), \
6844 (__mmask8)-1, (int)(imm), \
6845 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006846
Craig Topper8c18e112016-05-17 04:41:50 +00006847#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6848 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6849 (__v4sf)(__m128)(B), \
6850 (__v4sf)_mm_setzero_ps(), \
6851 (__mmask8)-1, (int)(imm), \
6852 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006853
Craig Topper8c18e112016-05-17 04:41:50 +00006854#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6855 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6856 (__v4sf)(__m128)(B), \
6857 (__v4sf)(__m128)(W), \
6858 (__mmask8)(U), (int)(I), \
6859 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006860
Craig Topper8c18e112016-05-17 04:41:50 +00006861#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6862 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6863 (__v4sf)(__m128)(B), \
6864 (__v4sf)(__m128)(W), \
6865 (__mmask8)(U), (int)(I), \
6866 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006867
Craig Topper8c18e112016-05-17 04:41:50 +00006868#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6869 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6870 (__v4sf)(__m128)(B), \
6871 (__v4sf)_mm_setzero_ps(), \
6872 (__mmask8)(U), (int)(I), \
6873 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006874
Craig Topper8c18e112016-05-17 04:41:50 +00006875#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6876 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6877 (__v4sf)(__m128)(B), \
6878 (__v4sf)_mm_setzero_ps(), \
6879 (__mmask8)(U), (int)(I), \
6880 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006881
Craig Topper8c18e112016-05-17 04:41:50 +00006882#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6883 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6884 (__v8df)(__m512d)(B), \
6885 (__v8df)_mm512_undefined_pd(), \
6886 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006887
Craig Topper8c18e112016-05-17 04:41:50 +00006888#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6889 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6890 (__v8df)(__m512d)(B), \
6891 (__v8df)(__m512d)(W), \
6892 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006893
Craig Topper8c18e112016-05-17 04:41:50 +00006894#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6895 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6896 (__v8df)(__m512d)(B), \
6897 (__v8df)_mm512_setzero_pd(), \
6898 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006899
6900static __inline__ __m512d __DEFAULT_FN_ATTRS
6901_mm512_scalef_pd (__m512d __A, __m512d __B)
6902{
6903 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6904 (__v8df) __B,
6905 (__v8df)
6906 _mm512_undefined_pd (),
6907 (__mmask8) -1,
6908 _MM_FROUND_CUR_DIRECTION);
6909}
6910
6911static __inline__ __m512d __DEFAULT_FN_ATTRS
6912_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6913{
6914 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6915 (__v8df) __B,
6916 (__v8df) __W,
6917 (__mmask8) __U,
6918 _MM_FROUND_CUR_DIRECTION);
6919}
6920
6921static __inline__ __m512d __DEFAULT_FN_ATTRS
6922_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6923{
6924 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6925 (__v8df) __B,
6926 (__v8df)
6927 _mm512_setzero_pd (),
6928 (__mmask8) __U,
6929 _MM_FROUND_CUR_DIRECTION);
6930}
6931
Craig Topper8c18e112016-05-17 04:41:50 +00006932#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6933 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6934 (__v16sf)(__m512)(B), \
6935 (__v16sf)_mm512_undefined_ps(), \
6936 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006937
Craig Topper8c18e112016-05-17 04:41:50 +00006938#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6939 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6940 (__v16sf)(__m512)(B), \
6941 (__v16sf)(__m512)(W), \
6942 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006943
Craig Topper8c18e112016-05-17 04:41:50 +00006944#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6945 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6946 (__v16sf)(__m512)(B), \
6947 (__v16sf)_mm512_setzero_ps(), \
6948 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006949
6950static __inline__ __m512 __DEFAULT_FN_ATTRS
6951_mm512_scalef_ps (__m512 __A, __m512 __B)
6952{
6953 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6954 (__v16sf) __B,
6955 (__v16sf)
6956 _mm512_undefined_ps (),
6957 (__mmask16) -1,
6958 _MM_FROUND_CUR_DIRECTION);
6959}
6960
6961static __inline__ __m512 __DEFAULT_FN_ATTRS
6962_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6963{
6964 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6965 (__v16sf) __B,
6966 (__v16sf) __W,
6967 (__mmask16) __U,
6968 _MM_FROUND_CUR_DIRECTION);
6969}
6970
6971static __inline__ __m512 __DEFAULT_FN_ATTRS
6972_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6973{
6974 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6975 (__v16sf) __B,
6976 (__v16sf)
6977 _mm512_setzero_ps (),
6978 (__mmask16) __U,
6979 _MM_FROUND_CUR_DIRECTION);
6980}
6981
Craig Topper8c18e112016-05-17 04:41:50 +00006982#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6983 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6984 (__v2df)(__m128d)(B), \
6985 (__v2df)_mm_setzero_pd(), \
6986 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006987
6988static __inline__ __m128d __DEFAULT_FN_ATTRS
6989_mm_scalef_sd (__m128d __A, __m128d __B)
6990{
6991 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6992 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6993 (__mmask8) -1,
6994 _MM_FROUND_CUR_DIRECTION);
6995}
6996
6997static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006998_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006999{
7000 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
7001 (__v2df) __B,
7002 (__v2df) __W,
7003 (__mmask8) __U,
7004 _MM_FROUND_CUR_DIRECTION);
7005}
7006
Craig Topper8c18e112016-05-17 04:41:50 +00007007#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
7008 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
7009 (__v2df)(__m128d)(B), \
7010 (__v2df)(__m128d)(W), \
7011 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007012
7013static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007014_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007015{
7016 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
7017 (__v2df) __B,
7018 (__v2df) _mm_setzero_pd (),
7019 (__mmask8) __U,
7020 _MM_FROUND_CUR_DIRECTION);
7021}
7022
Craig Topper8c18e112016-05-17 04:41:50 +00007023#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
7024 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
7025 (__v2df)(__m128d)(B), \
7026 (__v2df)_mm_setzero_pd(), \
7027 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007028
Craig Topper8c18e112016-05-17 04:41:50 +00007029#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
7030 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7031 (__v4sf)(__m128)(B), \
7032 (__v4sf)_mm_setzero_ps(), \
7033 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007034
7035static __inline__ __m128 __DEFAULT_FN_ATTRS
7036_mm_scalef_ss (__m128 __A, __m128 __B)
7037{
7038 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
7039 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
7040 (__mmask8) -1,
7041 _MM_FROUND_CUR_DIRECTION);
7042}
7043
7044static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007045_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007046{
7047 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
7048 (__v4sf) __B,
7049 (__v4sf) __W,
7050 (__mmask8) __U,
7051 _MM_FROUND_CUR_DIRECTION);
7052}
7053
Craig Topper8c18e112016-05-17 04:41:50 +00007054#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
7055 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7056 (__v4sf)(__m128)(B), \
7057 (__v4sf)(__m128)(W), \
7058 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007059
7060static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007061_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007062{
7063 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
7064 (__v4sf) __B,
7065 (__v4sf) _mm_setzero_ps (),
7066 (__mmask8) __U,
7067 _MM_FROUND_CUR_DIRECTION);
7068}
7069
Craig Topper8c18e112016-05-17 04:41:50 +00007070#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
7071 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7072 (__v4sf)(__m128)(B), \
7073 (__v4sf)_mm_setzero_ps(), \
7074 (__mmask8)(U), \
7075 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007076
Craig Topper79d05c92016-05-15 20:10:06 +00007077#define _mm512_srai_epi32(A, B) __extension__ ({ \
7078 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7079 (__v16si)_mm512_setzero_si512(), \
7080 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007081
Craig Topper8c18e112016-05-17 04:41:50 +00007082#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
7083 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7084 (__v16si)(__m512i)(W), \
7085 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007086
Craig Topper8c18e112016-05-17 04:41:50 +00007087#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
7088 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7089 (__v16si)_mm512_setzero_si512(), \
7090 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007091
Craig Topper8c18e112016-05-17 04:41:50 +00007092#define _mm512_srai_epi64(A, B) __extension__ ({ \
7093 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7094 (__v8di)_mm512_setzero_si512(), \
7095 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007096
Craig Topper8c18e112016-05-17 04:41:50 +00007097#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
7098 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7099 (__v8di)(__m512i)(W), \
7100 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007101
Craig Topper8c18e112016-05-17 04:41:50 +00007102#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
7103 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7104 (__v8di)_mm512_setzero_si512(), \
7105 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007106
Craig Topper8c18e112016-05-17 04:41:50 +00007107#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
7108 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7109 (__v16sf)(__m512)(B), (int)(imm), \
7110 (__v16sf)_mm512_undefined_ps(), \
7111 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007112
Craig Topper8c18e112016-05-17 04:41:50 +00007113#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
7114 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7115 (__v16sf)(__m512)(B), (int)(imm), \
7116 (__v16sf)(__m512)(W), \
7117 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007118
Craig Topper8c18e112016-05-17 04:41:50 +00007119#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
7120 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7121 (__v16sf)(__m512)(B), (int)(imm), \
7122 (__v16sf)_mm512_setzero_ps(), \
7123 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007124
Craig Topper8c18e112016-05-17 04:41:50 +00007125#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
7126 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7127 (__v8df)(__m512d)(B), (int)(imm), \
7128 (__v8df)_mm512_undefined_pd(), \
7129 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007130
Craig Topper8c18e112016-05-17 04:41:50 +00007131#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
7132 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7133 (__v8df)(__m512d)(B), (int)(imm), \
7134 (__v8df)(__m512d)(W), \
7135 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007136
Craig Topper8c18e112016-05-17 04:41:50 +00007137#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
7138 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7139 (__v8df)(__m512d)(B), (int)(imm), \
7140 (__v8df)_mm512_setzero_pd(), \
7141 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007142
Craig Topper8c18e112016-05-17 04:41:50 +00007143#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
7144 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7145 (__v16si)(__m512i)(B), (int)(imm), \
7146 (__v16si)_mm512_setzero_si512(), \
7147 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007148
Craig Topper8c18e112016-05-17 04:41:50 +00007149#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
7150 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7151 (__v16si)(__m512i)(B), (int)(imm), \
7152 (__v16si)(__m512i)(W), \
7153 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007154
Craig Topper8c18e112016-05-17 04:41:50 +00007155#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
7156 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7157 (__v16si)(__m512i)(B), (int)(imm), \
7158 (__v16si)_mm512_setzero_si512(), \
7159 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007160
Craig Topper8c18e112016-05-17 04:41:50 +00007161#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
7162 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7163 (__v8di)(__m512i)(B), (int)(imm), \
7164 (__v8di)_mm512_setzero_si512(), \
7165 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007166
Craig Topper8c18e112016-05-17 04:41:50 +00007167#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
7168 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7169 (__v8di)(__m512i)(B), (int)(imm), \
7170 (__v8di)(__m512i)(W), \
7171 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007172
Craig Topper8c18e112016-05-17 04:41:50 +00007173#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
7174 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7175 (__v8di)(__m512i)(B), (int)(imm), \
7176 (__v8di)_mm512_setzero_si512(), \
7177 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007178
Craig Topper8c18e112016-05-17 04:41:50 +00007179#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
7180 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7181 (__v8df)(__m512d)(V), (int)(imm), \
7182 (__v8df)_mm512_undefined_pd(), \
7183 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007184
Craig Topper8c18e112016-05-17 04:41:50 +00007185#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
7186 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7187 (__v8df)(__m512d)(V), (int)(imm), \
7188 (__v8df)(__m512d)(W), \
7189 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007190
Craig Topper8c18e112016-05-17 04:41:50 +00007191#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
7192 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7193 (__v8df)(__m512d)(V), (int)(imm), \
7194 (__v8df)_mm512_setzero_pd(), \
7195 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007196
Craig Topper8c18e112016-05-17 04:41:50 +00007197#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
7198 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7199 (__v16sf)(__m512)(V), (int)(imm), \
7200 (__v16sf)_mm512_undefined_ps(), \
7201 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007202
Craig Topper8c18e112016-05-17 04:41:50 +00007203#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
7204 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7205 (__v16sf)(__m512)(V), (int)(imm), \
7206 (__v16sf)(__m512)(W), \
7207 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007208
Craig Topper8c18e112016-05-17 04:41:50 +00007209#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
7210 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7211 (__v16sf)(__m512)(V), (int)(imm), \
7212 (__v16sf)_mm512_setzero_ps(), \
7213 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007214
Craig Topper8c18e112016-05-17 04:41:50 +00007215#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
7216 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7217 (__v2df)(__m128d)(A), \
7218 (__v2df)_mm_setzero_pd(), \
7219 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007220
7221static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007222_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007223{
7224 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7225 (__v2df) __A,
7226 (__v2df) __W,
7227 (__mmask8) __U,
7228 _MM_FROUND_CUR_DIRECTION);
7229}
7230
Craig Topper8c18e112016-05-17 04:41:50 +00007231#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
7232 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7233 (__v2df)(__m128d)(A), \
7234 (__v2df)(__m128d)(W), \
7235 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007236
7237static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007238_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007239{
7240 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7241 (__v2df) __A,
7242 (__v2df) _mm_setzero_pd (),
7243 (__mmask8) __U,
7244 _MM_FROUND_CUR_DIRECTION);
7245}
7246
Craig Topper8c18e112016-05-17 04:41:50 +00007247#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
7248 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7249 (__v2df)(__m128d)(A), \
7250 (__v2df)_mm_setzero_pd(), \
7251 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007252
Craig Topper8c18e112016-05-17 04:41:50 +00007253#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
7254 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7255 (__v4sf)(__m128)(A), \
7256 (__v4sf)_mm_setzero_ps(), \
7257 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007258
7259static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007260_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007261{
7262 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
7263 (__v4sf) __A,
7264 (__v4sf) __W,
7265 (__mmask8) __U,
7266 _MM_FROUND_CUR_DIRECTION);
7267}
7268
Craig Topper8c18e112016-05-17 04:41:50 +00007269#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
7270 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7271 (__v4sf)(__m128)(A), \
7272 (__v4sf)(__m128)(W), (__mmask8)(U), \
7273 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007274
7275static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007276_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007277{
7278 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
7279 (__v4sf) __B,
7280 (__v4sf) _mm_setzero_ps (),
7281 (__mmask8) __U,
7282 _MM_FROUND_CUR_DIRECTION);
7283}
7284
Craig Topper8c18e112016-05-17 04:41:50 +00007285#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
7286 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7287 (__v4sf)(__m128)(A), \
7288 (__v4sf)_mm_setzero_ps(), \
7289 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007290
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007291static __inline__ __m512 __DEFAULT_FN_ATTRS
7292_mm512_broadcast_f32x4 (__m128 __A)
7293{
7294 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7295 (__v16sf)
7296 _mm512_undefined_ps (),
7297 (__mmask16) -1);
7298}
7299
7300static __inline__ __m512 __DEFAULT_FN_ATTRS
7301_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
7302{
7303 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7304 (__v16sf) __O,
7305 __M);
7306}
7307
7308static __inline__ __m512 __DEFAULT_FN_ATTRS
7309_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
7310{
7311 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7312 (__v16sf)
7313 _mm512_setzero_ps (),
7314 __M);
7315}
7316
7317static __inline__ __m512d __DEFAULT_FN_ATTRS
7318_mm512_broadcast_f64x4 (__m256d __A)
7319{
7320 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7321 (__v8df)
7322 _mm512_undefined_pd (),
7323 (__mmask8) -1);
7324}
7325
7326static __inline__ __m512d __DEFAULT_FN_ATTRS
7327_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
7328{
7329 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7330 (__v8df) __O,
7331 __M);
7332}
7333
7334static __inline__ __m512d __DEFAULT_FN_ATTRS
7335_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
7336{
7337 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7338 (__v8df)
7339 _mm512_setzero_pd (),
7340 __M);
7341}
7342
7343static __inline__ __m512i __DEFAULT_FN_ATTRS
7344_mm512_broadcast_i32x4 (__m128i __A)
7345{
7346 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7347 (__v16si)
7348 _mm512_undefined_epi32 (),
7349 (__mmask16) -1);
7350}
7351
7352static __inline__ __m512i __DEFAULT_FN_ATTRS
7353_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7354{
7355 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7356 (__v16si) __O,
7357 __M);
7358}
7359
7360static __inline__ __m512i __DEFAULT_FN_ATTRS
7361_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7362{
7363 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7364 (__v16si)
7365 _mm512_setzero_si512 (),
7366 __M);
7367}
7368
7369static __inline__ __m512i __DEFAULT_FN_ATTRS
7370_mm512_broadcast_i64x4 (__m256i __A)
7371{
7372 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7373 (__v8di)
7374 _mm512_undefined_epi32 (),
7375 (__mmask8) -1);
7376}
7377
7378static __inline__ __m512i __DEFAULT_FN_ATTRS
7379_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7380{
7381 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7382 (__v8di) __O,
7383 __M);
7384}
7385
7386static __inline__ __m512i __DEFAULT_FN_ATTRS
7387_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7388{
7389 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7390 (__v8di)
7391 _mm512_setzero_si512 (),
7392 __M);
7393}
7394
7395static __inline__ __m512d __DEFAULT_FN_ATTRS
7396_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7397{
7398 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7399 (__v8df) __O, __M);
7400}
7401
7402static __inline__ __m512d __DEFAULT_FN_ATTRS
7403_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7404{
7405 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7406 (__v8df)
7407 _mm512_setzero_pd (),
7408 __M);
7409}
7410
7411static __inline__ __m512 __DEFAULT_FN_ATTRS
7412_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7413{
7414 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7415 (__v16sf) __O, __M);
7416}
7417
7418static __inline__ __m512 __DEFAULT_FN_ATTRS
7419_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7420{
7421 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7422 (__v16sf)
7423 _mm512_setzero_ps (),
7424 __M);
7425}
7426
Michael Zuckermane1680612016-04-13 15:02:04 +00007427static __inline__ __m128i __DEFAULT_FN_ATTRS
7428_mm512_cvtsepi32_epi8 (__m512i __A)
7429{
7430 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7431 (__v16qi) _mm_undefined_si128 (),
7432 (__mmask16) -1);
7433}
7434
7435static __inline__ __m128i __DEFAULT_FN_ATTRS
7436_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7437{
7438 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7439 (__v16qi) __O, __M);
7440}
7441
7442static __inline__ __m128i __DEFAULT_FN_ATTRS
7443_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7444{
7445 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7446 (__v16qi) _mm_setzero_si128 (),
7447 __M);
7448}
7449
7450static __inline__ void __DEFAULT_FN_ATTRS
7451_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7452{
7453 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7454}
7455
7456static __inline__ __m256i __DEFAULT_FN_ATTRS
7457_mm512_cvtsepi32_epi16 (__m512i __A)
7458{
7459 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7460 (__v16hi) _mm256_undefined_si256 (),
7461 (__mmask16) -1);
7462}
7463
7464static __inline__ __m256i __DEFAULT_FN_ATTRS
7465_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7466{
7467 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7468 (__v16hi) __O, __M);
7469}
7470
7471static __inline__ __m256i __DEFAULT_FN_ATTRS
7472_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7473{
7474 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7475 (__v16hi) _mm256_setzero_si256 (),
7476 __M);
7477}
7478
7479static __inline__ void __DEFAULT_FN_ATTRS
7480_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7481{
7482 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7483}
7484
7485static __inline__ __m128i __DEFAULT_FN_ATTRS
7486_mm512_cvtsepi64_epi8 (__m512i __A)
7487{
7488 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7489 (__v16qi) _mm_undefined_si128 (),
7490 (__mmask8) -1);
7491}
7492
7493static __inline__ __m128i __DEFAULT_FN_ATTRS
7494_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7495{
7496 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7497 (__v16qi) __O, __M);
7498}
7499
7500static __inline__ __m128i __DEFAULT_FN_ATTRS
7501_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7502{
7503 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7504 (__v16qi) _mm_setzero_si128 (),
7505 __M);
7506}
7507
7508static __inline__ void __DEFAULT_FN_ATTRS
7509_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7510{
7511 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7512}
7513
7514static __inline__ __m256i __DEFAULT_FN_ATTRS
7515_mm512_cvtsepi64_epi32 (__m512i __A)
7516{
7517 __v8si __O;
7518 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7519 (__v8si) _mm256_undefined_si256 (),
7520 (__mmask8) -1);
7521}
7522
7523static __inline__ __m256i __DEFAULT_FN_ATTRS
7524_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7525{
7526 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7527 (__v8si) __O, __M);
7528}
7529
7530static __inline__ __m256i __DEFAULT_FN_ATTRS
7531_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7532{
7533 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7534 (__v8si) _mm256_setzero_si256 (),
7535 __M);
7536}
7537
7538static __inline__ void __DEFAULT_FN_ATTRS
7539_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7540{
7541 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7542}
7543
7544static __inline__ __m128i __DEFAULT_FN_ATTRS
7545_mm512_cvtsepi64_epi16 (__m512i __A)
7546{
7547 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7548 (__v8hi) _mm_undefined_si128 (),
7549 (__mmask8) -1);
7550}
7551
7552static __inline__ __m128i __DEFAULT_FN_ATTRS
7553_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7554{
7555 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7556 (__v8hi) __O, __M);
7557}
7558
7559static __inline__ __m128i __DEFAULT_FN_ATTRS
7560_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7561{
7562 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7563 (__v8hi) _mm_setzero_si128 (),
7564 __M);
7565}
7566
7567static __inline__ void __DEFAULT_FN_ATTRS
7568_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7569{
7570 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7571}
7572
Michael Zuckermand8715312016-04-14 06:48:09 +00007573static __inline__ __m128i __DEFAULT_FN_ATTRS
7574_mm512_cvtusepi32_epi8 (__m512i __A)
7575{
7576 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7577 (__v16qi) _mm_undefined_si128 (),
7578 (__mmask16) -1);
7579}
7580
7581static __inline__ __m128i __DEFAULT_FN_ATTRS
7582_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7583{
7584 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7585 (__v16qi) __O,
7586 __M);
7587}
7588
7589static __inline__ __m128i __DEFAULT_FN_ATTRS
7590_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7591{
7592 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7593 (__v16qi) _mm_setzero_si128 (),
7594 __M);
7595}
7596
7597static __inline__ void __DEFAULT_FN_ATTRS
7598_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7599{
7600 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7601}
7602
7603static __inline__ __m256i __DEFAULT_FN_ATTRS
7604_mm512_cvtusepi32_epi16 (__m512i __A)
7605{
7606 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7607 (__v16hi) _mm256_undefined_si256 (),
7608 (__mmask16) -1);
7609}
7610
7611static __inline__ __m256i __DEFAULT_FN_ATTRS
7612_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7613{
7614 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7615 (__v16hi) __O,
7616 __M);
7617}
7618
7619static __inline__ __m256i __DEFAULT_FN_ATTRS
7620_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7621{
7622 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7623 (__v16hi) _mm256_setzero_si256 (),
7624 __M);
7625}
7626
7627static __inline__ void __DEFAULT_FN_ATTRS
7628_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7629{
7630 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7631}
7632
7633static __inline__ __m128i __DEFAULT_FN_ATTRS
7634_mm512_cvtusepi64_epi8 (__m512i __A)
7635{
7636 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7637 (__v16qi) _mm_undefined_si128 (),
7638 (__mmask8) -1);
7639}
7640
7641static __inline__ __m128i __DEFAULT_FN_ATTRS
7642_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7643{
7644 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7645 (__v16qi) __O,
7646 __M);
7647}
7648
7649static __inline__ __m128i __DEFAULT_FN_ATTRS
7650_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7651{
7652 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7653 (__v16qi) _mm_setzero_si128 (),
7654 __M);
7655}
7656
7657static __inline__ void __DEFAULT_FN_ATTRS
7658_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7659{
7660 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7661}
7662
7663static __inline__ __m256i __DEFAULT_FN_ATTRS
7664_mm512_cvtusepi64_epi32 (__m512i __A)
7665{
7666 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7667 (__v8si) _mm256_undefined_si256 (),
7668 (__mmask8) -1);
7669}
7670
7671static __inline__ __m256i __DEFAULT_FN_ATTRS
7672_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7673{
7674 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7675 (__v8si) __O, __M);
7676}
7677
7678static __inline__ __m256i __DEFAULT_FN_ATTRS
7679_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7680{
7681 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7682 (__v8si) _mm256_setzero_si256 (),
7683 __M);
7684}
7685
7686static __inline__ void __DEFAULT_FN_ATTRS
7687_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7688{
7689 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7690}
7691
7692static __inline__ __m128i __DEFAULT_FN_ATTRS
7693_mm512_cvtusepi64_epi16 (__m512i __A)
7694{
7695 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7696 (__v8hi) _mm_undefined_si128 (),
7697 (__mmask8) -1);
7698}
7699
7700static __inline__ __m128i __DEFAULT_FN_ATTRS
7701_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7702{
7703 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7704 (__v8hi) __O, __M);
7705}
7706
7707static __inline__ __m128i __DEFAULT_FN_ATTRS
7708_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7709{
7710 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7711 (__v8hi) _mm_setzero_si128 (),
7712 __M);
7713}
7714
7715static __inline__ void __DEFAULT_FN_ATTRS
7716_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7717{
7718 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7719}
7720
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007721static __inline__ __m128i __DEFAULT_FN_ATTRS
7722_mm512_cvtepi32_epi8 (__m512i __A)
7723{
7724 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7725 (__v16qi) _mm_undefined_si128 (),
7726 (__mmask16) -1);
7727}
7728
7729static __inline__ __m128i __DEFAULT_FN_ATTRS
7730_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7731{
7732 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7733 (__v16qi) __O, __M);
7734}
7735
7736static __inline__ __m128i __DEFAULT_FN_ATTRS
7737_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7738{
7739 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7740 (__v16qi) _mm_setzero_si128 (),
7741 __M);
7742}
7743
7744static __inline__ void __DEFAULT_FN_ATTRS
7745_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7746{
7747 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7748}
7749
7750static __inline__ __m256i __DEFAULT_FN_ATTRS
7751_mm512_cvtepi32_epi16 (__m512i __A)
7752{
7753 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7754 (__v16hi) _mm256_undefined_si256 (),
7755 (__mmask16) -1);
7756}
7757
7758static __inline__ __m256i __DEFAULT_FN_ATTRS
7759_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7760{
7761 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7762 (__v16hi) __O, __M);
7763}
7764
7765static __inline__ __m256i __DEFAULT_FN_ATTRS
7766_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7767{
7768 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7769 (__v16hi) _mm256_setzero_si256 (),
7770 __M);
7771}
7772
7773static __inline__ void __DEFAULT_FN_ATTRS
7774_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7775{
7776 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7777}
7778
7779static __inline__ __m128i __DEFAULT_FN_ATTRS
7780_mm512_cvtepi64_epi8 (__m512i __A)
7781{
7782 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7783 (__v16qi) _mm_undefined_si128 (),
7784 (__mmask8) -1);
7785}
7786
7787static __inline__ __m128i __DEFAULT_FN_ATTRS
7788_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7789{
7790 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7791 (__v16qi) __O, __M);
7792}
7793
7794static __inline__ __m128i __DEFAULT_FN_ATTRS
7795_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7796{
7797 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7798 (__v16qi) _mm_setzero_si128 (),
7799 __M);
7800}
7801
7802static __inline__ void __DEFAULT_FN_ATTRS
7803_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7804{
7805 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7806}
7807
7808static __inline__ __m256i __DEFAULT_FN_ATTRS
7809_mm512_cvtepi64_epi32 (__m512i __A)
7810{
7811 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7812 (__v8si) _mm256_undefined_si256 (),
7813 (__mmask8) -1);
7814}
7815
7816static __inline__ __m256i __DEFAULT_FN_ATTRS
7817_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7818{
7819 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7820 (__v8si) __O, __M);
7821}
7822
7823static __inline__ __m256i __DEFAULT_FN_ATTRS
7824_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7825{
7826 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7827 (__v8si) _mm256_setzero_si256 (),
7828 __M);
7829}
7830
7831static __inline__ void __DEFAULT_FN_ATTRS
7832_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7833{
7834 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7835}
7836
7837static __inline__ __m128i __DEFAULT_FN_ATTRS
7838_mm512_cvtepi64_epi16 (__m512i __A)
7839{
7840 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7841 (__v8hi) _mm_undefined_si128 (),
7842 (__mmask8) -1);
7843}
7844
7845static __inline__ __m128i __DEFAULT_FN_ATTRS
7846_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7847{
7848 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7849 (__v8hi) __O, __M);
7850}
7851
7852static __inline__ __m128i __DEFAULT_FN_ATTRS
7853_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7854{
7855 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7856 (__v8hi) _mm_setzero_si128 (),
7857 __M);
7858}
7859
7860static __inline__ void __DEFAULT_FN_ATTRS
7861_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7862{
7863 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7864}
7865
Craig Topper8c18e112016-05-17 04:41:50 +00007866#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7867 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7868 (__v4si)_mm_undefined_si128(), \
7869 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007870
Craig Topper8c18e112016-05-17 04:41:50 +00007871#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7872 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7873 (__v4si)(__m128i)(W), \
7874 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007875
Craig Topper8c18e112016-05-17 04:41:50 +00007876#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7877 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7878 (__v4si)_mm_setzero_si128(), \
7879 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007880
Craig Topper8c18e112016-05-17 04:41:50 +00007881#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7882 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7883 (__v4di)_mm256_undefined_si256(), \
7884 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007885
Craig Topper8c18e112016-05-17 04:41:50 +00007886#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7887 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7888 (__v4di)(__m256i)(W), \
7889 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007890
Craig Topper8c18e112016-05-17 04:41:50 +00007891#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7892 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7893 (__v4di)_mm256_setzero_si256(), \
7894 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007895
Craig Topper8c18e112016-05-17 04:41:50 +00007896#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7897 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7898 (__v4df)(__m256d)(B), (int)(imm), \
7899 (__v8df)_mm512_undefined_pd(), \
7900 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007901
Craig Topper8c18e112016-05-17 04:41:50 +00007902#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7903 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7904 (__v4df)(__m256d)(B), (int)(imm), \
7905 (__v8df)(__m512d)(W), \
7906 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007907
Craig Topper8c18e112016-05-17 04:41:50 +00007908#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7909 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7910 (__v4df)(__m256d)(B), (int)(imm), \
7911 (__v8df)_mm512_setzero_pd(), \
7912 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007913
Craig Topper8c18e112016-05-17 04:41:50 +00007914#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7915 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7916 (__v4di)(__m256i)(B), (int)(imm), \
7917 (__v8di)_mm512_setzero_si512(), \
7918 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007919
Craig Topper8c18e112016-05-17 04:41:50 +00007920#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7921 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7922 (__v4di)(__m256i)(B), (int)(imm), \
7923 (__v8di)(__m512i)(W), \
7924 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007925
Craig Topper8c18e112016-05-17 04:41:50 +00007926#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7927 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7928 (__v4di)(__m256i)(B), (int)(imm), \
7929 (__v8di)_mm512_setzero_si512(), \
7930 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007931
Craig Topper8c18e112016-05-17 04:41:50 +00007932#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7933 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7934 (__v4sf)(__m128)(B), (int)(imm), \
7935 (__v16sf)_mm512_undefined_ps(), \
7936 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007937
Craig Topper8c18e112016-05-17 04:41:50 +00007938#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7939 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7940 (__v4sf)(__m128)(B), (int)(imm), \
7941 (__v16sf)(__m512)(W), \
7942 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007943
Craig Topper8c18e112016-05-17 04:41:50 +00007944#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7945 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7946 (__v4sf)(__m128)(B), (int)(imm), \
7947 (__v16sf)_mm512_setzero_ps(), \
7948 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007949
Craig Topper8c18e112016-05-17 04:41:50 +00007950#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7951 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7952 (__v4si)(__m128i)(B), (int)(imm), \
7953 (__v16si)_mm512_setzero_si512(), \
7954 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007955
Craig Topper8c18e112016-05-17 04:41:50 +00007956#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7957 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7958 (__v4si)(__m128i)(B), (int)(imm), \
7959 (__v16si)(__m512i)(W), \
7960 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007961
Craig Topper8c18e112016-05-17 04:41:50 +00007962#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7963 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7964 (__v4si)(__m128i)(B), (int)(imm), \
7965 (__v16si)_mm512_setzero_si512(), \
7966 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007967
Craig Topper8c18e112016-05-17 04:41:50 +00007968#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7969 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7970 (int)(((C)<<2) | (B)), \
7971 (__v8df)_mm512_undefined_pd(), \
7972 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007973
Craig Topper8c18e112016-05-17 04:41:50 +00007974#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7975 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7976 (int)(((C)<<2) | (B)), \
7977 (__v8df)(__m512d)(W), \
7978 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007979
Craig Topper8c18e112016-05-17 04:41:50 +00007980#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7981 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7982 (int)(((C)<<2) | (B)), \
7983 (__v8df)_mm512_setzero_pd(), \
7984 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007985
Craig Topper8c18e112016-05-17 04:41:50 +00007986#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7987 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7988 (int)(((C)<<2) | (B)), \
7989 (__v8df)_mm512_setzero_pd(), \
7990 (__mmask8)-1, \
7991 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007992
Craig Topper8c18e112016-05-17 04:41:50 +00007993#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7994 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7995 (int)(((C)<<2) | (B)), \
7996 (__v8df)(__m512d)(W), \
7997 (__mmask8)(U), \
7998 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007999
Craig Topper8c18e112016-05-17 04:41:50 +00008000#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
8001 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
8002 (int)(((C)<<2) | (B)), \
8003 (__v8df)_mm512_setzero_pd(), \
8004 (__mmask8)(U), \
8005 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008006
Craig Topper8c18e112016-05-17 04:41:50 +00008007#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
8008 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8009 (int)(((C)<<2) | (B)), \
8010 (__v16sf)_mm512_undefined_ps(), \
8011 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008012
Craig Topper8c18e112016-05-17 04:41:50 +00008013#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
8014 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8015 (int)(((C)<<2) | (B)), \
8016 (__v16sf)(__m512)(W), \
8017 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008018
Craig Topper8c18e112016-05-17 04:41:50 +00008019#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
8020 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8021 (int)(((C)<<2) | (B)), \
8022 (__v16sf)_mm512_setzero_ps(), \
8023 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008024
Craig Topper8c18e112016-05-17 04:41:50 +00008025#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
8026 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8027 (int)(((C)<<2)|(B)), \
8028 (__v16sf)_mm512_undefined_ps(), \
8029 (__mmask16)-1, \
8030 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008031
Craig Topper8c18e112016-05-17 04:41:50 +00008032#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8033 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8034 (int)(((C)<<2)|(B)), \
8035 (__v16sf)(__m512)(W), \
8036 (__mmask16)(U), \
8037 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008038
Craig Topper8c18e112016-05-17 04:41:50 +00008039#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8040 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8041 (int)(((C)<<2)|(B)), \
8042 (__v16sf)_mm512_setzero_ps(), \
8043 (__mmask16)(U), \
8044 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008045
Craig Topper8c18e112016-05-17 04:41:50 +00008046#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
8047 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8048 (__v8df)_mm512_undefined_pd(), \
8049 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008050
Craig Topper8c18e112016-05-17 04:41:50 +00008051#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
8052 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8053 (__v8df)(__m512d)(W), \
8054 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008055
Craig Topper8c18e112016-05-17 04:41:50 +00008056#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
8057 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8058 (__v8df)_mm512_setzero_pd(), \
8059 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008060
8061static __inline__ __m512d __DEFAULT_FN_ATTRS
8062_mm512_getexp_pd (__m512d __A)
8063{
8064 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8065 (__v8df) _mm512_undefined_pd (),
8066 (__mmask8) -1,
8067 _MM_FROUND_CUR_DIRECTION);
8068}
8069
8070static __inline__ __m512d __DEFAULT_FN_ATTRS
8071_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
8072{
8073 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8074 (__v8df) __W,
8075 (__mmask8) __U,
8076 _MM_FROUND_CUR_DIRECTION);
8077}
8078
8079static __inline__ __m512d __DEFAULT_FN_ATTRS
8080_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
8081{
8082 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8083 (__v8df) _mm512_setzero_pd (),
8084 (__mmask8) __U,
8085 _MM_FROUND_CUR_DIRECTION);
8086}
8087
Craig Topper8c18e112016-05-17 04:41:50 +00008088#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
8089 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8090 (__v16sf)_mm512_undefined_ps(), \
8091 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008092
Craig Topper8c18e112016-05-17 04:41:50 +00008093#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
8094 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8095 (__v16sf)(__m512)(W), \
8096 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008097
Craig Topper8c18e112016-05-17 04:41:50 +00008098#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
8099 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8100 (__v16sf)_mm512_setzero_ps(), \
8101 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008102
8103static __inline__ __m512 __DEFAULT_FN_ATTRS
8104_mm512_getexp_ps (__m512 __A)
8105{
8106 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8107 (__v16sf) _mm512_undefined_ps (),
8108 (__mmask16) -1,
8109 _MM_FROUND_CUR_DIRECTION);
8110}
8111
8112static __inline__ __m512 __DEFAULT_FN_ATTRS
8113_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
8114{
8115 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8116 (__v16sf) __W,
8117 (__mmask16) __U,
8118 _MM_FROUND_CUR_DIRECTION);
8119}
8120
8121static __inline__ __m512 __DEFAULT_FN_ATTRS
8122_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
8123{
8124 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8125 (__v16sf) _mm512_setzero_ps (),
8126 (__mmask16) __U,
8127 _MM_FROUND_CUR_DIRECTION);
8128}
8129
Craig Topper8c18e112016-05-17 04:41:50 +00008130#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
8131 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
8132 (float const *)(addr), \
8133 (__v8di)(__m512i)(index), (__mmask8)-1, \
8134 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008135
8136#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
8137 __addr, __scale) __extension__({\
8138__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
8139 __addr,(__v8di) __index, __mask, __scale);\
8140})
8141
Craig Topper8c18e112016-05-17 04:41:50 +00008142#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
8143 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
8144 (int const *)(addr), \
8145 (__v8di)(__m512i)(index), \
8146 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008147
Craig Topper8c18e112016-05-17 04:41:50 +00008148#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8149 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
8150 (int const *)(addr), \
8151 (__v8di)(__m512i)(index), \
8152 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008153
Craig Topper8c18e112016-05-17 04:41:50 +00008154#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
8155 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
8156 (double const *)(addr), \
8157 (__v8di)(__m512i)(index), (__mmask8)-1, \
8158 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008159
Craig Topper8c18e112016-05-17 04:41:50 +00008160#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8161 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
8162 (double const *)(addr), \
8163 (__v8di)(__m512i)(index), \
8164 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008165
Craig Topper8c18e112016-05-17 04:41:50 +00008166#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
8167 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
8168 (long long const *)(addr), \
8169 (__v8di)(__m512i)(index), (__mmask8)-1, \
8170 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008171
Craig Topper8c18e112016-05-17 04:41:50 +00008172#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8173 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
8174 (long long const *)(addr), \
8175 (__v8di)(__m512i)(index), \
8176 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008177
Craig Topper8c18e112016-05-17 04:41:50 +00008178#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
8179 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
8180 (float const *)(addr), \
8181 (__v16sf)(__m512)(index), \
8182 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008183
Craig Topper8c18e112016-05-17 04:41:50 +00008184#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8185 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
8186 (float const *)(addr), \
8187 (__v16sf)(__m512)(index), \
8188 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008189
Craig Topper8c18e112016-05-17 04:41:50 +00008190#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
8191 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
8192 (int const *)(addr), \
8193 (__v16si)(__m512i)(index), \
8194 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008195
Craig Topper8c18e112016-05-17 04:41:50 +00008196#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8197 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
8198 (int const *)(addr), \
8199 (__v16si)(__m512i)(index), \
8200 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008201
Craig Topper8c18e112016-05-17 04:41:50 +00008202#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
8203 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
8204 (double const *)(addr), \
8205 (__v8si)(__m256i)(index), (__mmask8)-1, \
8206 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008207
Craig Topper8c18e112016-05-17 04:41:50 +00008208#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8209 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
8210 (double const *)(addr), \
8211 (__v8si)(__m256i)(index), \
8212 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008213
Craig Topper8c18e112016-05-17 04:41:50 +00008214#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
8215 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
8216 (long long const *)(addr), \
8217 (__v8si)(__m256i)(index), (__mmask8)-1, \
8218 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008219
Craig Topper8c18e112016-05-17 04:41:50 +00008220#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8221 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
8222 (long long const *)(addr), \
8223 (__v8si)(__m256i)(index), \
8224 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008225
Craig Topper8c18e112016-05-17 04:41:50 +00008226#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
8227 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
8228 (__v8di)(__m512i)(index), \
8229 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008230
Craig Topper8c18e112016-05-17 04:41:50 +00008231#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8232 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
8233 (__v8di)(__m512i)(index), \
8234 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008235
Craig Topper8c18e112016-05-17 04:41:50 +00008236#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
8237 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
8238 (__v8di)(__m512i)(index), \
8239 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008240
Craig Topper8c18e112016-05-17 04:41:50 +00008241#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8242 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
8243 (__v8di)(__m512i)(index), \
8244 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008245
Craig Topper8c18e112016-05-17 04:41:50 +00008246#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
8247 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
8248 (__v8di)(__m512i)(index), \
8249 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008250
Craig Topper8c18e112016-05-17 04:41:50 +00008251#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8252 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
8253 (__v8di)(__m512i)(index), \
8254 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008255
Craig Topper8c18e112016-05-17 04:41:50 +00008256#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
8257 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
8258 (__v8di)(__m512i)(index), \
8259 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008260
Craig Topper8c18e112016-05-17 04:41:50 +00008261#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8262 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
8263 (__v8di)(__m512i)(index), \
8264 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008265
Craig Topper8c18e112016-05-17 04:41:50 +00008266#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
8267 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
8268 (__v16si)(__m512i)(index), \
8269 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008270
Craig Topper8c18e112016-05-17 04:41:50 +00008271#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8272 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
8273 (__v16si)(__m512i)(index), \
8274 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008275
Craig Topper8c18e112016-05-17 04:41:50 +00008276#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
8277 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
8278 (__v16si)(__m512i)(index), \
8279 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008280
Craig Topper8c18e112016-05-17 04:41:50 +00008281#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8282 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
8283 (__v16si)(__m512i)(index), \
8284 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008285
Craig Topper8c18e112016-05-17 04:41:50 +00008286#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
8287 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
8288 (__v8si)(__m256i)(index), \
8289 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008290
Craig Topper8c18e112016-05-17 04:41:50 +00008291#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8292 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
8293 (__v8si)(__m256i)(index), \
8294 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008295
Craig Topper8c18e112016-05-17 04:41:50 +00008296#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
8297 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
8298 (__v8si)(__m256i)(index), \
8299 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008300
Craig Topper8c18e112016-05-17 04:41:50 +00008301#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8302 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
8303 (__v8si)(__m256i)(index), \
8304 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008305
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008306static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008307_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008308{
8309 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
8310 (__v4sf) __B,
8311 (__v4sf) __W,
8312 (__mmask8) __U,
8313 _MM_FROUND_CUR_DIRECTION);
8314}
8315
Craig Topper8c18e112016-05-17 04:41:50 +00008316#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
8317 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8318 (__v4sf)(__m128)(B), \
8319 (__v4sf)(__m128)(W), (__mmask8)(U), \
8320 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008321
8322static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008323_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008324{
8325 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8326 (__v4sf) __B,
8327 (__v4sf) __C,
8328 (__mmask8) __U,
8329 _MM_FROUND_CUR_DIRECTION);
8330}
8331
Craig Topper8c18e112016-05-17 04:41:50 +00008332#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
8333 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8334 (__v4sf)(__m128)(B), \
8335 (__v4sf)(__m128)(C), (__mmask8)(U), \
8336 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008337
8338static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008339_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008340{
8341 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8342 (__v4sf) __X,
8343 (__v4sf) __Y,
8344 (__mmask8) __U,
8345 _MM_FROUND_CUR_DIRECTION);
8346}
8347
Craig Topper8c18e112016-05-17 04:41:50 +00008348#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8349 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8350 (__v4sf)(__m128)(X), \
8351 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8352 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008353
8354static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008355_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008356{
8357 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008358 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008359 (__v4sf) __W,
8360 (__mmask8) __U,
8361 _MM_FROUND_CUR_DIRECTION);
8362}
8363
Craig Topper8c18e112016-05-17 04:41:50 +00008364#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8365 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8366 -(__v4sf)(__m128)(B), \
8367 (__v4sf)(__m128)(W), (__mmask8)(U), \
8368 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008369
8370static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008371_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008372{
8373 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8374 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008375 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008376 (__mmask8) __U,
8377 _MM_FROUND_CUR_DIRECTION);
8378}
8379
Craig Topper8c18e112016-05-17 04:41:50 +00008380#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8381 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8382 (__v4sf)(__m128)(B), \
8383 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8384 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008385
8386static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008387_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008388{
8389 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8390 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008391 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008392 (__mmask8) __U,
8393 _MM_FROUND_CUR_DIRECTION);
8394}
8395
Craig Topper8c18e112016-05-17 04:41:50 +00008396#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8397 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8398 (__v4sf)(__m128)(X), \
8399 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8400 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008401
8402static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008403_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008404{
Craig Topper9864c592016-05-15 20:10:03 +00008405 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008406 (__v4sf) __B,
8407 (__v4sf) __W,
8408 (__mmask8) __U,
8409 _MM_FROUND_CUR_DIRECTION);
8410}
8411
Craig Topper8c18e112016-05-17 04:41:50 +00008412#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8413 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8414 (__v4sf)(__m128)(B), \
8415 (__v4sf)(__m128)(W), (__mmask8)(U), \
8416 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008417
8418static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008419_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008420{
Craig Topper9864c592016-05-15 20:10:03 +00008421 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008422 (__v4sf) __B,
8423 (__v4sf) __C,
8424 (__mmask8) __U,
8425 _MM_FROUND_CUR_DIRECTION);
8426}
8427
Craig Topper8c18e112016-05-17 04:41:50 +00008428#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8429 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8430 (__v4sf)(__m128)(B), \
8431 (__v4sf)(__m128)(C), (__mmask8)(U), \
8432 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008433
8434static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008435_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008436{
Craig Topper9864c592016-05-15 20:10:03 +00008437 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008438 (__v4sf) __X,
8439 (__v4sf) __Y,
8440 (__mmask8) __U,
8441 _MM_FROUND_CUR_DIRECTION);
8442}
8443
Craig Topper8c18e112016-05-17 04:41:50 +00008444#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8445 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8446 (__v4sf)(__m128)(X), \
8447 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8448 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008449
8450static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008451_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008452{
Craig Topper9864c592016-05-15 20:10:03 +00008453 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8454 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008455 (__v4sf) __W,
8456 (__mmask8) __U,
8457 _MM_FROUND_CUR_DIRECTION);
8458}
8459
Craig Topper8c18e112016-05-17 04:41:50 +00008460#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8461 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8462 -(__v4sf)(__m128)(B), \
8463 (__v4sf)(__m128)(W), (__mmask8)(U), \
8464 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008465
8466static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008467_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008468{
Craig Topper9864c592016-05-15 20:10:03 +00008469 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008470 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008471 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008472 (__mmask8) __U,
8473 _MM_FROUND_CUR_DIRECTION);
8474}
8475
Craig Topper8c18e112016-05-17 04:41:50 +00008476#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8477 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8478 (__v4sf)(__m128)(B), \
8479 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8480 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008481
8482static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008483_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008484{
Craig Topper9864c592016-05-15 20:10:03 +00008485 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008486 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008487 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008488 (__mmask8) __U,
8489 _MM_FROUND_CUR_DIRECTION);
8490}
8491
Craig Topper8c18e112016-05-17 04:41:50 +00008492#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8493 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8494 (__v4sf)(__m128)(X), \
8495 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8496 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008497
Craig Topper58187d32016-05-17 04:41:29 +00008498static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008499_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008500{
Craig Topper58187d32016-05-17 04:41:29 +00008501 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008502 (__v2df) __B,
8503 (__v2df) __W,
8504 (__mmask8) __U,
8505 _MM_FROUND_CUR_DIRECTION);
8506}
8507
Craig Topper8c18e112016-05-17 04:41:50 +00008508#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8509 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8510 (__v2df)(__m128d)(B), \
8511 (__v2df)(__m128d)(W), (__mmask8)(U), \
8512 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008513
Craig Topper58187d32016-05-17 04:41:29 +00008514static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008515_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008516{
Craig Topper58187d32016-05-17 04:41:29 +00008517 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008518 (__v2df) __B,
8519 (__v2df) __C,
8520 (__mmask8) __U,
8521 _MM_FROUND_CUR_DIRECTION);
8522}
8523
Craig Topper8c18e112016-05-17 04:41:50 +00008524#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8525 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8526 (__v2df)(__m128d)(B), \
8527 (__v2df)(__m128d)(C), (__mmask8)(U), \
8528 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008529
Craig Topper58187d32016-05-17 04:41:29 +00008530static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008531_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008532{
Craig Topper58187d32016-05-17 04:41:29 +00008533 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008534 (__v2df) __X,
8535 (__v2df) __Y,
8536 (__mmask8) __U,
8537 _MM_FROUND_CUR_DIRECTION);
8538}
8539
Craig Topper8c18e112016-05-17 04:41:50 +00008540#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8541 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8542 (__v2df)(__m128d)(X), \
8543 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8544 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008545
Craig Topper58187d32016-05-17 04:41:29 +00008546static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008547_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008548{
Craig Topper58187d32016-05-17 04:41:29 +00008549 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008550 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008551 (__v2df) __W,
8552 (__mmask8) __U,
8553 _MM_FROUND_CUR_DIRECTION);
8554}
8555
Craig Topper8c18e112016-05-17 04:41:50 +00008556#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8557 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8558 -(__v2df)(__m128d)(B), \
8559 (__v2df)(__m128d)(W), (__mmask8)(U), \
8560 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008561
Craig Topper58187d32016-05-17 04:41:29 +00008562static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008563_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008564{
Craig Topper58187d32016-05-17 04:41:29 +00008565 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008566 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008567 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008568 (__mmask8) __U,
8569 _MM_FROUND_CUR_DIRECTION);
8570}
8571
Craig Topper8c18e112016-05-17 04:41:50 +00008572#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8573 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8574 (__v2df)(__m128d)(B), \
8575 -(__v2df)(__m128d)(C), \
8576 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008577
Craig Topper58187d32016-05-17 04:41:29 +00008578static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008579_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008580{
Craig Topper58187d32016-05-17 04:41:29 +00008581 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008582 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008583 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008584 (__mmask8) __U,
8585 _MM_FROUND_CUR_DIRECTION);
8586}
8587
Craig Topper8c18e112016-05-17 04:41:50 +00008588#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8589 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8590 (__v2df)(__m128d)(X), \
8591 -(__v2df)(__m128d)(Y), \
8592 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008593
Craig Topper58187d32016-05-17 04:41:29 +00008594static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008595_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008596{
Craig Topper58187d32016-05-17 04:41:29 +00008597 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008598 (__v2df) __B,
8599 (__v2df) __W,
8600 (__mmask8) __U,
8601 _MM_FROUND_CUR_DIRECTION);
8602}
8603
Craig Topper8c18e112016-05-17 04:41:50 +00008604#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8605 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8606 (__v2df)(__m128d)(B), \
8607 (__v2df)(__m128d)(W), (__mmask8)(U), \
8608 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008609
Craig Topper58187d32016-05-17 04:41:29 +00008610static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008611_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008612{
Craig Topper58187d32016-05-17 04:41:29 +00008613 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008614 (__v2df) __B,
8615 (__v2df) __C,
8616 (__mmask8) __U,
8617 _MM_FROUND_CUR_DIRECTION);
8618}
8619
Craig Topper8c18e112016-05-17 04:41:50 +00008620#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8621 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8622 (__v2df)(__m128d)(B), \
8623 (__v2df)(__m128d)(C), (__mmask8)(U), \
8624 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008625
Craig Topper58187d32016-05-17 04:41:29 +00008626static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008627_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008628{
Craig Topper58187d32016-05-17 04:41:29 +00008629 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008630 (__v2df) __X,
8631 (__v2df) __Y,
8632 (__mmask8) __U,
8633 _MM_FROUND_CUR_DIRECTION);
8634}
8635
Craig Topper8c18e112016-05-17 04:41:50 +00008636#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8637 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8638 (__v2df)(__m128d)(X), \
8639 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8640 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008641
Craig Topper58187d32016-05-17 04:41:29 +00008642static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008643_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008644{
Craig Topper58187d32016-05-17 04:41:29 +00008645 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008646 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008647 (__v2df) __W,
8648 (__mmask8) __U,
8649 _MM_FROUND_CUR_DIRECTION);
8650}
8651
Craig Topper8c18e112016-05-17 04:41:50 +00008652#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8653 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8654 -(__v2df)(__m128d)(B), \
8655 (__v2df)(__m128d)(W), (__mmask8)(U), \
8656 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008657
Craig Topper58187d32016-05-17 04:41:29 +00008658static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008659_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008660{
Craig Topper58187d32016-05-17 04:41:29 +00008661 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008662 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008663 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008664 (__mmask8) __U,
8665 _MM_FROUND_CUR_DIRECTION);
8666}
8667
Craig Topper8c18e112016-05-17 04:41:50 +00008668#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8669 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8670 (__v2df)(__m128d)(B), \
8671 -(__v2df)(__m128d)(C), \
8672 (__mmask8)(U), \
8673 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008674
Craig Topper58187d32016-05-17 04:41:29 +00008675static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008676_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008677{
Craig Topper58187d32016-05-17 04:41:29 +00008678 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008679 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008680 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008681 (__mmask8) __U,
8682 _MM_FROUND_CUR_DIRECTION);
8683}
8684
Craig Topper8c18e112016-05-17 04:41:50 +00008685#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8686 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8687 (__v2df)(__m128d)(X), \
8688 -(__v2df)(__m128d)(Y), \
8689 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008690
Craig Topper8c18e112016-05-17 04:41:50 +00008691#define _mm512_permutex_pd(X, M) __extension__ ({ \
8692 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8693 (__v8df)_mm512_undefined_pd(), \
8694 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008695
Craig Topper8c18e112016-05-17 04:41:50 +00008696#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8697 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8698 (__v8df)(__m512d)(W), \
8699 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008700
Craig Topper8c18e112016-05-17 04:41:50 +00008701#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8702 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8703 (__v8df)_mm512_setzero_pd(), \
8704 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008705
Craig Topper8c18e112016-05-17 04:41:50 +00008706#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8707 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8708 (__v8di)_mm512_undefined_epi32(), \
8709 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008710
Craig Topper8c18e112016-05-17 04:41:50 +00008711#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8712 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8713 (__v8di)(__m512i)(W), \
8714 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008715
Craig Topper8c18e112016-05-17 04:41:50 +00008716#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8717 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8718 (__v8di)_mm512_setzero_si512(), \
8719 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008720
8721static __inline__ __m512d __DEFAULT_FN_ATTRS
8722_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8723{
8724 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8725 (__v8di) __X,
8726 (__v8df) _mm512_undefined_pd (),
8727 (__mmask8) -1);
8728}
8729
8730static __inline__ __m512d __DEFAULT_FN_ATTRS
8731_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8732{
8733 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8734 (__v8di) __X,
8735 (__v8df) __W,
8736 (__mmask8) __U);
8737}
8738
8739static __inline__ __m512d __DEFAULT_FN_ATTRS
8740_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8741{
8742 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8743 (__v8di) __X,
8744 (__v8df) _mm512_setzero_pd (),
8745 (__mmask8) __U);
8746}
8747
8748static __inline__ __m512i __DEFAULT_FN_ATTRS
8749_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8750{
8751 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8752 (__v8di) __X,
8753 (__v8di) _mm512_setzero_si512 (),
8754 __M);
8755}
8756
8757static __inline__ __m512i __DEFAULT_FN_ATTRS
8758_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8759{
8760 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8761 (__v8di) __X,
8762 (__v8di) _mm512_undefined_epi32 (),
8763 (__mmask8) -1);
8764}
8765
8766static __inline__ __m512i __DEFAULT_FN_ATTRS
8767_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8768 __m512i __Y)
8769{
8770 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8771 (__v8di) __X,
8772 (__v8di) __W,
8773 __M);
8774}
8775
8776static __inline__ __m512 __DEFAULT_FN_ATTRS
8777_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8778{
8779 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8780 (__v16si) __X,
8781 (__v16sf) _mm512_undefined_ps (),
8782 (__mmask16) -1);
8783}
8784
8785static __inline__ __m512 __DEFAULT_FN_ATTRS
8786_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8787{
8788 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8789 (__v16si) __X,
8790 (__v16sf) __W,
8791 (__mmask16) __U);
8792}
8793
8794static __inline__ __m512 __DEFAULT_FN_ATTRS
8795_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8796{
8797 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8798 (__v16si) __X,
8799 (__v16sf) _mm512_setzero_ps (),
8800 (__mmask16) __U);
8801}
8802
8803static __inline__ __m512i __DEFAULT_FN_ATTRS
8804_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8805{
8806 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8807 (__v16si) __X,
8808 (__v16si) _mm512_setzero_si512 (),
8809 __M);
8810}
8811
8812static __inline__ __m512i __DEFAULT_FN_ATTRS
8813_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8814{
8815 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8816 (__v16si) __X,
8817 (__v16si) _mm512_undefined_epi32 (),
8818 (__mmask16) -1);
8819}
8820
8821static __inline__ __m512i __DEFAULT_FN_ATTRS
8822_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8823 __m512i __Y)
8824{
8825 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8826 (__v16si) __X,
8827 (__v16si) __W,
8828 __M);
8829}
8830
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008831static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8832_mm512_kand (__mmask16 __A, __mmask16 __B)
8833{
8834 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8835}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008836
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008837static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8838_mm512_kandn (__mmask16 __A, __mmask16 __B)
8839{
8840 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8841}
8842
8843static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8844_mm512_kor (__mmask16 __A, __mmask16 __B)
8845{
8846 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8847}
8848
8849static __inline__ int __DEFAULT_FN_ATTRS
8850_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8851{
Craig Topper91f23d92016-05-16 01:09:16 +00008852 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008853}
8854
8855static __inline__ int __DEFAULT_FN_ATTRS
8856_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8857{
Craig Topper91f23d92016-05-16 01:09:16 +00008858 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008859}
8860
8861static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8862_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8863{
8864 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8865}
8866
8867static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8868_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8869{
8870 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8871}
8872
8873static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8874_mm512_kxor (__mmask16 __A, __mmask16 __B)
8875{
8876 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8877}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008878
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008879static __inline__ void __DEFAULT_FN_ATTRS
8880_mm512_stream_si512 (__m512i * __P, __m512i __A)
8881{
8882 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8883}
8884
8885static __inline__ __m512i __DEFAULT_FN_ATTRS
8886_mm512_stream_load_si512 (void *__P)
8887{
8888 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8889}
8890
8891static __inline__ void __DEFAULT_FN_ATTRS
8892_mm512_stream_pd (double *__P, __m512d __A)
8893{
8894 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8895}
8896
8897static __inline__ void __DEFAULT_FN_ATTRS
8898_mm512_stream_ps (float *__P, __m512 __A)
8899{
8900 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8901}
8902
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008903static __inline__ __m512d __DEFAULT_FN_ATTRS
8904_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8905{
8906 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8907 (__v8df) __W,
8908 (__mmask8) __U);
8909}
8910
8911static __inline__ __m512d __DEFAULT_FN_ATTRS
8912_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8913{
8914 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8915 (__v8df)
8916 _mm512_setzero_pd (),
8917 (__mmask8) __U);
8918}
8919
8920static __inline__ __m512i __DEFAULT_FN_ATTRS
8921_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8922{
8923 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8924 (__v8di) __W,
8925 (__mmask8) __U);
8926}
8927
8928static __inline__ __m512i __DEFAULT_FN_ATTRS
8929_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8930{
8931 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8932 (__v8di)
8933 _mm512_setzero_si512 (),
8934 (__mmask8) __U);
8935}
8936
8937static __inline__ __m512 __DEFAULT_FN_ATTRS
8938_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8939{
8940 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8941 (__v16sf) __W,
8942 (__mmask16) __U);
8943}
8944
8945static __inline__ __m512 __DEFAULT_FN_ATTRS
8946_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8947{
8948 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8949 (__v16sf)
8950 _mm512_setzero_ps (),
8951 (__mmask16) __U);
8952}
8953
8954static __inline__ __m512i __DEFAULT_FN_ATTRS
8955_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8956{
8957 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8958 (__v16si) __W,
8959 (__mmask16) __U);
8960}
8961
8962static __inline__ __m512i __DEFAULT_FN_ATTRS
8963_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8964{
8965 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8966 (__v16si)
8967 _mm512_setzero_si512 (),
8968 (__mmask16) __U);
8969}
8970
Craig Topper8c18e112016-05-17 04:41:50 +00008971#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8972 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8973 (__v4sf)(__m128)(Y), (int)(P), \
8974 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008975
Craig Topper8c18e112016-05-17 04:41:50 +00008976#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8977 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8978 (__v4sf)(__m128)(Y), (int)(P), \
8979 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008980
Craig Topper8c18e112016-05-17 04:41:50 +00008981#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8982 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8983 (__v4sf)(__m128)(Y), (int)(P), \
8984 (__mmask8)-1, \
8985 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008986
Craig Topper8c18e112016-05-17 04:41:50 +00008987#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8988 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8989 (__v4sf)(__m128)(Y), (int)(P), \
8990 (__mmask8)(M), \
8991 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008992
Craig Topper8c18e112016-05-17 04:41:50 +00008993#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8994 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8995 (__v2df)(__m128d)(Y), (int)(P), \
8996 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008997
Craig Topper8c18e112016-05-17 04:41:50 +00008998#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8999 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9000 (__v2df)(__m128d)(Y), (int)(P), \
9001 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009002
Craig Topper8c18e112016-05-17 04:41:50 +00009003#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
9004 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9005 (__v2df)(__m128d)(Y), (int)(P), \
9006 (__mmask8)-1, \
9007 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009008
Craig Topper8c18e112016-05-17 04:41:50 +00009009#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
9010 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9011 (__v2df)(__m128d)(Y), (int)(P), \
9012 (__mmask8)(M), \
9013 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009014
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009015static __inline__ __m512 __DEFAULT_FN_ATTRS
9016_mm512_movehdup_ps (__m512 __A)
9017{
9018 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
9019 (__v16sf)
9020 _mm512_undefined_ps (),
9021 (__mmask16) -1);
9022}
9023
9024static __inline__ __m512 __DEFAULT_FN_ATTRS
9025_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
9026{
9027 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
9028 (__v16sf) __W,
9029 (__mmask16) __U);
9030}
9031
9032static __inline__ __m512 __DEFAULT_FN_ATTRS
9033_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
9034{
9035 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
9036 (__v16sf)
9037 _mm512_setzero_ps (),
9038 (__mmask16) __U);
9039}
9040
9041static __inline__ __m512 __DEFAULT_FN_ATTRS
9042_mm512_moveldup_ps (__m512 __A)
9043{
9044 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
9045 (__v16sf)
9046 _mm512_undefined_ps (),
9047 (__mmask16) -1);
9048}
9049
9050static __inline__ __m512 __DEFAULT_FN_ATTRS
9051_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
9052{
9053 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
9054 (__v16sf) __W,
9055 (__mmask16) __U);
9056}
9057
9058static __inline__ __m512 __DEFAULT_FN_ATTRS
9059_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
9060{
9061 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
9062 (__v16sf)
9063 _mm512_setzero_ps (),
9064 (__mmask16) __U);
9065}
9066
Craig Topper8c18e112016-05-17 04:41:50 +00009067#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
9068 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
9069 (__v16si)_mm512_undefined_epi32(), \
9070 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009071
Craig Topper8c18e112016-05-17 04:41:50 +00009072#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
9073 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
9074 (__v16si)(__m512i)(W), \
9075 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009076
Craig Topper8c18e112016-05-17 04:41:50 +00009077#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
9078 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
9079 (__v16si)_mm512_setzero_si512(), \
9080 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009081
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00009082static __inline__ __m512d __DEFAULT_FN_ATTRS
9083_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
9084{
9085 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
9086 (__v8df) __W,
9087 (__mmask8) __U);
9088}
9089
9090static __inline__ __m512d __DEFAULT_FN_ATTRS
9091_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
9092{
9093 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
9094 (__v8df) _mm512_setzero_pd (),
9095 (__mmask8) __U);
9096}
9097
9098static __inline__ __m512i __DEFAULT_FN_ATTRS
9099_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
9100{
9101 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
9102 (__v8di) __W,
9103 (__mmask8) __U);
9104}
9105
9106static __inline__ __m512i __DEFAULT_FN_ATTRS
9107_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
9108{
9109 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
9110 (__v8di) _mm512_setzero_pd (),
9111 (__mmask8) __U);
9112}
9113
9114static __inline__ __m512d __DEFAULT_FN_ATTRS
9115_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
9116{
9117 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
9118 (__v8df) __W,
9119 (__mmask8) __U);
9120}
9121
9122static __inline__ __m512d __DEFAULT_FN_ATTRS
9123_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
9124{
9125 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
9126 (__v8df) _mm512_setzero_pd(),
9127 (__mmask8) __U);
9128}
9129
9130static __inline__ __m512i __DEFAULT_FN_ATTRS
9131_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
9132{
9133 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
9134 (__v8di) __W,
9135 (__mmask8) __U);
9136}
9137
9138static __inline__ __m512i __DEFAULT_FN_ATTRS
9139_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
9140{
9141 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
9142 (__v8di) _mm512_setzero_pd(),
9143 (__mmask8) __U);
9144}
9145
9146static __inline__ __m512 __DEFAULT_FN_ATTRS
9147_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
9148{
9149 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
9150 (__v16sf) __W,
9151 (__mmask16) __U);
9152}
9153
9154static __inline__ __m512 __DEFAULT_FN_ATTRS
9155_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
9156{
9157 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
9158 (__v16sf) _mm512_setzero_ps(),
9159 (__mmask16) __U);
9160}
9161
9162static __inline__ __m512i __DEFAULT_FN_ATTRS
9163_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
9164{
9165 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
9166 (__v16si) __W,
9167 (__mmask16) __U);
9168}
9169
9170static __inline__ __m512i __DEFAULT_FN_ATTRS
9171_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
9172{
9173 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
9174 (__v16si) _mm512_setzero_ps(),
9175 (__mmask16) __U);
9176}
9177
9178static __inline__ __m512 __DEFAULT_FN_ATTRS
9179_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
9180{
9181 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
9182 (__v16sf) __W,
9183 (__mmask16) __U);
9184}
9185
9186static __inline__ __m512 __DEFAULT_FN_ATTRS
9187_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
9188{
9189 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
9190 (__v16sf) _mm512_setzero_ps(),
9191 (__mmask16) __U);
9192}
9193
9194static __inline__ __m512i __DEFAULT_FN_ATTRS
9195_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
9196{
9197 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9198 (__v16si) __W,
9199 (__mmask16) __U);
9200}
9201
9202static __inline__ __m512i __DEFAULT_FN_ATTRS
9203_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
9204{
9205 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9206 (__v16si) _mm512_setzero_ps(),
9207 (__mmask16) __U);
9208}
9209
Craig Topper8c18e112016-05-17 04:41:50 +00009210#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
9211 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9212 (__v8df)_mm512_undefined_pd(), \
9213 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009214
Craig Topper8c18e112016-05-17 04:41:50 +00009215#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
9216 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9217 (__v8df)(__m512d)(W), \
9218 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009219
Craig Topper8c18e112016-05-17 04:41:50 +00009220#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
9221 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9222 (__v8df)_mm512_setzero_pd(), \
9223 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009224
9225static __inline__ __m512d __DEFAULT_FN_ATTRS
9226_mm512_cvtps_pd (__m256 __A)
9227{
9228 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9229 (__v8df)
9230 _mm512_undefined_pd (),
9231 (__mmask8) -1,
9232 _MM_FROUND_CUR_DIRECTION);
9233}
9234
9235static __inline__ __m512d __DEFAULT_FN_ATTRS
9236_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
9237{
9238 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9239 (__v8df) __W,
9240 (__mmask8) __U,
9241 _MM_FROUND_CUR_DIRECTION);
9242}
9243
9244static __inline__ __m512d __DEFAULT_FN_ATTRS
9245_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
9246{
9247 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9248 (__v8df)
9249 _mm512_setzero_pd (),
9250 (__mmask8) __U,
9251 _MM_FROUND_CUR_DIRECTION);
9252}
9253
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009254static __inline__ __m512d __DEFAULT_FN_ATTRS
9255_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
9256{
9257 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9258 (__v8df) __W,
9259 (__mmask8) __U);
9260}
9261
9262static __inline__ __m512d __DEFAULT_FN_ATTRS
9263_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
9264{
9265 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9266 (__v8df)
9267 _mm512_setzero_pd (),
9268 (__mmask8) __U);
9269}
9270
9271static __inline__ __m512 __DEFAULT_FN_ATTRS
9272_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
9273{
9274 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9275 (__v16sf) __W,
9276 (__mmask16) __U);
9277}
9278
9279static __inline__ __m512 __DEFAULT_FN_ATTRS
9280_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
9281{
9282 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9283 (__v16sf)
9284 _mm512_setzero_ps (),
9285 (__mmask16) __U);
9286}
9287
Michael Zuckerman708e7592016-05-03 10:42:46 +00009288static __inline__ void __DEFAULT_FN_ATTRS
9289_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
9290{
9291 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
9292 (__mmask8) __U);
9293}
9294
9295static __inline__ void __DEFAULT_FN_ATTRS
9296_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
9297{
9298 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
9299 (__mmask8) __U);
9300}
9301
9302static __inline__ void __DEFAULT_FN_ATTRS
9303_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
9304{
9305 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
9306 (__mmask16) __U);
9307}
9308
9309static __inline__ void __DEFAULT_FN_ATTRS
9310_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
9311{
9312 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
9313 (__mmask16) __U);
9314}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009315
Craig Topper8c18e112016-05-17 04:41:50 +00009316#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
9317 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9318 (__v2df)(__m128d)(B), \
9319 (__v4sf)_mm_undefined_ps(), \
9320 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009321
Craig Topper8c18e112016-05-17 04:41:50 +00009322#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
9323 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9324 (__v2df)(__m128d)(B), \
9325 (__v4sf)(__m128)(W), \
9326 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009327
Craig Topper8c18e112016-05-17 04:41:50 +00009328#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
9329 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9330 (__v2df)(__m128d)(B), \
9331 (__v4sf)_mm_setzero_ps(), \
9332 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009333
Craig Topper8c18e112016-05-17 04:41:50 +00009334#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
9335 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9336 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009337
Craig Topper8c18e112016-05-17 04:41:50 +00009338#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
9339 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9340 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009341
Craig Topper8c18e112016-05-17 04:41:50 +00009342#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9343 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009344
Craig Topper8c18e112016-05-17 04:41:50 +00009345#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9346 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009347
Craig Topper8c18e112016-05-17 04:41:50 +00009348#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9349 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9350 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009351
Craig Topper8c18e112016-05-17 04:41:50 +00009352#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9353 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9354 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009355
Craig Topper8c18e112016-05-17 04:41:50 +00009356#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9357 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9358 (__v4sf)(__m128)(B), \
9359 (__v2df)_mm_undefined_pd(), \
9360 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009361
Craig Topper8c18e112016-05-17 04:41:50 +00009362#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9363 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9364 (__v4sf)(__m128)(B), \
9365 (__v2df)(__m128d)(W), \
9366 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009367
Craig Topper8c18e112016-05-17 04:41:50 +00009368#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9369 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9370 (__v4sf)(__m128)(B), \
9371 (__v2df)_mm_setzero_pd(), \
9372 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009373
9374static __inline__ __m128d __DEFAULT_FN_ATTRS
9375_mm_cvtu32_sd (__m128d __A, unsigned __B)
9376{
9377 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9378}
9379
Craig Topper8c18e112016-05-17 04:41:50 +00009380#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9381 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9382 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009383
9384static __inline__ __m128d __DEFAULT_FN_ATTRS
9385_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9386{
9387 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9388 _MM_FROUND_CUR_DIRECTION);
9389}
9390
Craig Topper8c18e112016-05-17 04:41:50 +00009391#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9392 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9393 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009394
9395static __inline__ __m128 __DEFAULT_FN_ATTRS
9396_mm_cvtu32_ss (__m128 __A, unsigned __B)
9397{
9398 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9399 _MM_FROUND_CUR_DIRECTION);
9400}
9401
Craig Topper8c18e112016-05-17 04:41:50 +00009402#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9403 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9404 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009405
9406static __inline__ __m128 __DEFAULT_FN_ATTRS
9407_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9408{
9409 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9410 _MM_FROUND_CUR_DIRECTION);
9411}
9412
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009413static __inline__ __m512i __DEFAULT_FN_ATTRS
9414_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9415{
9416 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9417 __M);
9418}
9419
9420static __inline__ __m512i __DEFAULT_FN_ATTRS
9421_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9422{
9423 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9424 __M);
9425}
9426
Michael Zuckerman178113e2016-05-19 12:07:49 +00009427static __inline __m512i __DEFAULT_FN_ATTRS
9428_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9429 int __E, int __F, int __G, int __H,
9430 int __I, int __J, int __K, int __L,
9431 int __M, int __N, int __O, int __P)
9432{
9433 return __extension__ (__m512i)(__v16si)
9434 { __P, __O, __N, __M, __L, __K, __J, __I,
9435 __H, __G, __F, __E, __D, __C, __B, __A };
9436}
9437
9438#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9439 e8,e9,e10,e11,e12,e13,e14,e15) \
9440 _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 +00009441
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009442static __inline__ __m512i __DEFAULT_FN_ATTRS
9443_mm512_set_epi64 (long long __A, long long __B, long long __C,
9444 long long __D, long long __E, long long __F,
9445 long long __G, long long __H)
9446{
9447 return __extension__ (__m512i) (__v8di)
9448 { __H, __G, __F, __E, __D, __C, __B, __A };
9449}
9450
Michael Zuckerman178113e2016-05-19 12:07:49 +00009451#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9452 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9453
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009454static __inline__ __m512d __DEFAULT_FN_ATTRS
9455_mm512_set_pd (double __A, double __B, double __C, double __D,
9456 double __E, double __F, double __G, double __H)
9457{
9458 return __extension__ (__m512d)
9459 { __H, __G, __F, __E, __D, __C, __B, __A };
9460}
9461
Michael Zuckerman178113e2016-05-19 12:07:49 +00009462#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9463 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9464
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009465static __inline__ __m512 __DEFAULT_FN_ATTRS
9466_mm512_set_ps (float __A, float __B, float __C, float __D,
9467 float __E, float __F, float __G, float __H,
9468 float __I, float __J, float __K, float __L,
9469 float __M, float __N, float __O, float __P)
9470{
9471 return __extension__ (__m512)
9472 { __P, __O, __N, __M, __L, __K, __J, __I,
9473 __H, __G, __F, __E, __D, __C, __B, __A };
9474}
9475
Michael Zuckerman178113e2016-05-19 12:07:49 +00009476#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9477 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9478
Michael Kupersteine45af542015-06-30 13:36:19 +00009479#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009480
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009481#endif // __AVX512FINTRIN_H