blob: 368db3dbfd755dd9938714228cea65570d464907 [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +000030typedef char __v64qi __attribute__((__vector_size__(64)));
31typedef short __v32hi __attribute__((__vector_size__(64)));
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000032typedef double __v8df __attribute__((__vector_size__(64)));
33typedef float __v16sf __attribute__((__vector_size__(64)));
34typedef long long __v8di __attribute__((__vector_size__(64)));
35typedef int __v16si __attribute__((__vector_size__(64)));
36
37typedef float __m512 __attribute__((__vector_size__(64)));
38typedef double __m512d __attribute__((__vector_size__(64)));
39typedef long long __m512i __attribute__((__vector_size__(64)));
40
41typedef unsigned char __mmask8;
42typedef unsigned short __mmask16;
43
44/* Rounding mode macros. */
45#define _MM_FROUND_TO_NEAREST_INT 0x00
46#define _MM_FROUND_TO_NEG_INF 0x01
47#define _MM_FROUND_TO_POS_INF 0x02
48#define _MM_FROUND_TO_ZERO 0x03
49#define _MM_FROUND_CUR_DIRECTION 0x04
50
Michael Zuckermandef78752016-03-28 12:23:09 +000051typedef enum
52{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000053 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
54 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
55 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
56 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
57 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
58 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
59 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
60 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
61 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
62 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
63 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
64 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
65 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
66 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
67 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
68 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
69 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
70 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
71 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
72 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
73 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
74 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
75 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
76 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
77 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
78 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
79 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
80 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
81 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
82 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
83 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
84 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
85 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
86 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
87 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
88 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
89 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
90 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
91 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
92 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
93 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
94 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
95 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
96 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
97 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
98 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
99 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
100 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
101 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
102 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
103 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
104 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
105 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
106 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
107 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
108 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
109 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
110 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
111 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
112 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
113 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
114 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
115 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
116 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
117 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
118 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
119 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
120 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
121 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
122 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
123 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
124 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
125 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
126 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
127 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
128 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
129 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
130 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
131 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
132 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
133 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
134 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
135 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
136 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
137 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
138 _MM_PERM_DDDD = 0xFF
139} _MM_PERM_ENUM;
140
141typedef enum
142{
Michael Zuckermandef78752016-03-28 12:23:09 +0000143 _MM_MANT_NORM_1_2, /* interval [1, 2) */
144 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
145 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
146 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
147} _MM_MANTISSA_NORM_ENUM;
148
149typedef enum
150{
151 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
152 _MM_MANT_SIGN_zero, /* sign = 0 */
153 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
154} _MM_MANTISSA_SIGN_ENUM;
155
Eric Christopher4d1851682015-06-17 07:09:20 +0000156/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000157#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000158
Adam Nemet0d5bb552014-07-28 17:14:40 +0000159/* Create vectors with repeated elements */
160
Michael Kupersteine45af542015-06-30 13:36:19 +0000161static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000162_mm512_setzero_si512(void)
163{
164 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
165}
166
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000167static __inline__ __m512d __DEFAULT_FN_ATTRS
168_mm512_undefined_pd()
169{
170 return (__m512d)__builtin_ia32_undef512();
171}
172
173static __inline__ __m512 __DEFAULT_FN_ATTRS
174_mm512_undefined()
175{
176 return (__m512)__builtin_ia32_undef512();
177}
178
179static __inline__ __m512 __DEFAULT_FN_ATTRS
180_mm512_undefined_ps()
181{
182 return (__m512)__builtin_ia32_undef512();
183}
184
185static __inline__ __m512i __DEFAULT_FN_ATTRS
186_mm512_undefined_epi32()
187{
188 return (__m512i)__builtin_ia32_undef512();
189}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000190static __inline__ __m512i __DEFAULT_FN_ATTRS
191_mm512_broadcastd_epi32 (__m128i __A)
192{
193 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
194 (__v16si)
195 _mm512_undefined_epi32 (),
196 (__mmask16) -1);
197}
198
199static __inline__ __m512i __DEFAULT_FN_ATTRS
200_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
201{
202 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
203 (__v16si) __O, __M);
204}
205
206static __inline__ __m512i __DEFAULT_FN_ATTRS
207_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
208{
209 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
210 (__v16si)
211 _mm512_setzero_si512 (),
212 __M);
213}
214
215static __inline__ __m512i __DEFAULT_FN_ATTRS
216_mm512_broadcastq_epi64 (__m128i __A)
217{
218 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
219 (__v8di)
220 _mm512_undefined_pd (),
221 (__mmask8) -1);
222}
223
224static __inline__ __m512i __DEFAULT_FN_ATTRS
225_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
226{
227 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
228 (__v8di) __O, __M);
229}
230
231static __inline__ __m512i __DEFAULT_FN_ATTRS
232_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
233{
234 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
235 (__v8di)
236 _mm512_setzero_si512 (),
237 __M);
238}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000239
Michael Kupersteine45af542015-06-30 13:36:19 +0000240static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000241_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
242{
243 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
244 (__v16si)
245 _mm512_setzero_si512 (),
246 __M);
247}
248
Michael Kupersteine45af542015-06-30 13:36:19 +0000249static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000250_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
251{
252#ifdef __x86_64__
253 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
254 (__v8di)
255 _mm512_setzero_si512 (),
256 __M);
257#else
258 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
259 (__v8di)
260 _mm512_setzero_si512 (),
261 __M);
262#endif
263}
264
Michael Kupersteine45af542015-06-30 13:36:19 +0000265static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000266_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000267{
268 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
269 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
270}
Michael Kupersteine45af542015-06-30 13:36:19 +0000271static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000272_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000273{
274 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
275}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000276
Michael Kupersteine45af542015-06-30 13:36:19 +0000277static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000278_mm512_set1_ps(float __w)
279{
280 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
281 __w, __w, __w, __w, __w, __w, __w, __w };
282}
283
Michael Kupersteine45af542015-06-30 13:36:19 +0000284static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000285_mm512_set1_pd(double __w)
286{
287 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
288}
289
Michael Kupersteine45af542015-06-30 13:36:19 +0000290static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +0000291_mm512_set1_epi8(char __w)
292{
293 return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w,
294 __w, __w, __w, __w, __w, __w, __w, __w,
295 __w, __w, __w, __w, __w, __w, __w, __w,
296 __w, __w, __w, __w, __w, __w, __w, __w,
297 __w, __w, __w, __w, __w, __w, __w, __w,
298 __w, __w, __w, __w, __w, __w, __w, __w,
299 __w, __w, __w, __w, __w, __w, __w, __w,
300 __w, __w, __w, __w, __w, __w, __w, __w };
301}
302
303static __inline __m512i __DEFAULT_FN_ATTRS
304_mm512_set1_epi16(short __w)
305{
306 return (__m512i)(__v32hi){ __w, __w, __w, __w, __w, __w, __w, __w,
307 __w, __w, __w, __w, __w, __w, __w, __w,
308 __w, __w, __w, __w, __w, __w, __w, __w,
309 __w, __w, __w, __w, __w, __w, __w, __w };
310}
311
312static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000313_mm512_set1_epi32(int __s)
314{
315 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
316 __s, __s, __s, __s, __s, __s, __s, __s };
317}
318
Michael Kupersteine45af542015-06-30 13:36:19 +0000319static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000320_mm512_set1_epi64(long long __d)
321{
322 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
323}
324
Michael Kupersteine45af542015-06-30 13:36:19 +0000325static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000326_mm512_broadcastss_ps(__m128 __X)
327{
328 float __f = __X[0];
329 return (__v16sf){ __f, __f, __f, __f,
330 __f, __f, __f, __f,
331 __f, __f, __f, __f,
332 __f, __f, __f, __f };
333}
334
Michael Kupersteine45af542015-06-30 13:36:19 +0000335static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000336_mm512_broadcastsd_pd(__m128d __X)
337{
338 double __d = __X[0];
339 return (__v8df){ __d, __d, __d, __d,
340 __d, __d, __d, __d };
341}
342
Adam Nemetc871ff92014-07-30 16:51:24 +0000343/* Cast between vector types */
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000346_mm512_castpd256_pd512(__m256d __a)
347{
348 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
349}
350
Michael Kupersteine45af542015-06-30 13:36:19 +0000351static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000352_mm512_castps256_ps512(__m256 __a)
353{
354 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
355 -1, -1, -1, -1, -1, -1, -1, -1);
356}
357
Michael Kupersteine45af542015-06-30 13:36:19 +0000358static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000359_mm512_castpd512_pd128(__m512d __a)
360{
361 return __builtin_shufflevector(__a, __a, 0, 1);
362}
363
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000364static __inline __m256d __DEFAULT_FN_ATTRS
365_mm512_castpd512_pd256 (__m512d __A)
366{
367 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
368}
369
Michael Kupersteine45af542015-06-30 13:36:19 +0000370static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000371_mm512_castps512_ps128(__m512 __a)
372{
373 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
374}
375
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000376static __inline __m256 __DEFAULT_FN_ATTRS
377_mm512_castps512_ps256 (__m512 __A)
378{
379 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
380}
381
382static __inline __m512 __DEFAULT_FN_ATTRS
383_mm512_castpd_ps (__m512d __A)
384{
385 return (__m512) (__A);
386}
387
388static __inline __m512i __DEFAULT_FN_ATTRS
389_mm512_castpd_si512 (__m512d __A)
390{
391 return (__m512i) (__A);
392}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000393
394static __inline__ __m512d __DEFAULT_FN_ATTRS
395_mm512_castpd128_pd512 (__m128d __A)
396{
397 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
398}
399
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000400static __inline __m512d __DEFAULT_FN_ATTRS
401_mm512_castps_pd (__m512 __A)
402{
403 return (__m512d) (__A);
404}
405
406static __inline __m512i __DEFAULT_FN_ATTRS
407_mm512_castps_si512 (__m512 __A)
408{
409 return (__m512i) (__A);
410}
411
Michael Zuckermanc6677032016-05-03 14:26:52 +0000412static __inline__ __m512 __DEFAULT_FN_ATTRS
413_mm512_castps128_ps512 (__m128 __A)
414{
415 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
416}
417
418static __inline__ __m512i __DEFAULT_FN_ATTRS
419_mm512_castsi128_si512 (__m128i __A)
420{
421 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
422}
423
424static __inline__ __m512i __DEFAULT_FN_ATTRS
425_mm512_castsi256_si512 (__m256i __A)
426{
427 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
428}
429
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000430static __inline __m512 __DEFAULT_FN_ATTRS
431_mm512_castsi512_ps (__m512i __A)
432{
433 return (__m512) (__A);
434}
435
436static __inline __m512d __DEFAULT_FN_ATTRS
437_mm512_castsi512_pd (__m512i __A)
438{
439 return (__m512d) (__A);
440}
441
442static __inline __m128i __DEFAULT_FN_ATTRS
443_mm512_castsi512_si128 (__m512i __A)
444{
445 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
446}
447
Michael Zuckerman22c47e62016-05-26 14:32:11 +0000448static __inline __m256i __DEFAULT_FN_ATTRS
449_mm512_castsi512_si256 (__m512i __A)
450{
451 return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
452}
453
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000454/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000456_mm512_and_epi32(__m512i __a, __m512i __b)
457{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000458 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000459}
460
Michael Kupersteine45af542015-06-30 13:36:19 +0000461static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000462_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
463{
464 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
465 (__v16si) __b,
466 (__v16si) __src,
467 (__mmask16) __k);
468}
Michael Kupersteine45af542015-06-30 13:36:19 +0000469static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000470_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
471{
472 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
473 (__v16si) __b,
474 (__v16si)
475 _mm512_setzero_si512 (),
476 (__mmask16) __k);
477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000480_mm512_and_epi64(__m512i __a, __m512i __b)
481{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000482 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483}
484
Michael Kupersteine45af542015-06-30 13:36:19 +0000485static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000486_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
487{
488 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
489 (__v8di) __b,
490 (__v8di) __src,
491 (__mmask8) __k);
492}
Michael Kupersteine45af542015-06-30 13:36:19 +0000493static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000494_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
495{
496 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
497 (__v8di) __b,
498 (__v8di)
499 _mm512_setzero_si512 (),
500 (__mmask8) __k);
501}
502
Michael Kupersteine45af542015-06-30 13:36:19 +0000503static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000504_mm512_andnot_si512 (__m512i __A, __m512i __B)
505{
506 return (__m512i)(~(__A) & __B);
507}
508
509static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000510_mm512_andnot_epi32 (__m512i __A, __m512i __B)
511{
512 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
513 (__v16si) __B,
514 (__v16si)
515 _mm512_setzero_si512 (),
516 (__mmask16) -1);
517}
518
Michael Kupersteine45af542015-06-30 13:36:19 +0000519static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000520_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
521{
522 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
523 (__v16si) __B,
524 (__v16si) __W,
525 (__mmask16) __U);
526}
527
Michael Kupersteine45af542015-06-30 13:36:19 +0000528static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000529_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
530{
531 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
532 (__v16si) __B,
533 (__v16si)
534 _mm512_setzero_si512 (),
535 (__mmask16) __U);
536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000539_mm512_andnot_epi64 (__m512i __A, __m512i __B)
540{
541 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
542 (__v8di) __B,
543 (__v8di)
544 _mm512_setzero_si512 (),
545 (__mmask8) -1);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000549_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
550{
551 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
552 (__v8di) __B,
553 (__v8di) __W, __U);
554}
555
Michael Kupersteine45af542015-06-30 13:36:19 +0000556static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000557_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
558{
559 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
560 (__v8di) __B,
561 (__v8di)
562 _mm512_setzero_pd (),
563 __U);
564}
Michael Kupersteine45af542015-06-30 13:36:19 +0000565static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000566_mm512_or_epi32(__m512i __a, __m512i __b)
567{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000568 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000569}
570
Michael Kupersteine45af542015-06-30 13:36:19 +0000571static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000572_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
573{
574 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
575 (__v16si) __b,
576 (__v16si) __src,
577 (__mmask16) __k);
578}
Michael Kupersteine45af542015-06-30 13:36:19 +0000579static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000580_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
581{
582 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
583 (__v16si) __b,
584 (__v16si)
585 _mm512_setzero_si512 (),
586 (__mmask16) __k);
587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000590_mm512_or_epi64(__m512i __a, __m512i __b)
591{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000592 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000593}
594
Michael Kupersteine45af542015-06-30 13:36:19 +0000595static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000596_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
597{
598 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
599 (__v8di) __b,
600 (__v8di) __src,
601 (__mmask8) __k);
602}
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000604_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
605{
606 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
607 (__v8di) __b,
608 (__v8di)
609 _mm512_setzero_si512 (),
610 (__mmask8) __k);
611}
612
Michael Kupersteine45af542015-06-30 13:36:19 +0000613static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614_mm512_xor_epi32(__m512i __a, __m512i __b)
615{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000616 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000617}
618
Michael Kupersteine45af542015-06-30 13:36:19 +0000619static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000620_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
621{
622 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
623 (__v16si) __b,
624 (__v16si) __src,
625 (__mmask16) __k);
626}
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000628_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
629{
630 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
631 (__v16si) __b,
632 (__v16si)
633 _mm512_setzero_si512 (),
634 (__mmask16) __k);
635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000638_mm512_xor_epi64(__m512i __a, __m512i __b)
639{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000640 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000641}
642
Michael Kupersteine45af542015-06-30 13:36:19 +0000643static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000644_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
645{
646 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
647 (__v8di) __b,
648 (__v8di) __src,
649 (__mmask8) __k);
650}
Michael Kupersteine45af542015-06-30 13:36:19 +0000651static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000652_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
653{
654 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
655 (__v8di) __b,
656 (__v8di)
657 _mm512_setzero_si512 (),
658 (__mmask8) __k);
659}
660
Michael Kupersteine45af542015-06-30 13:36:19 +0000661static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000662_mm512_and_si512(__m512i __a, __m512i __b)
663{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000664 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000665}
666
Michael Kupersteine45af542015-06-30 13:36:19 +0000667static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000668_mm512_or_si512(__m512i __a, __m512i __b)
669{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000670 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000671}
672
Michael Kupersteine45af542015-06-30 13:36:19 +0000673static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000674_mm512_xor_si512(__m512i __a, __m512i __b)
675{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000676 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000677}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000678/* Arithmetic */
679
Michael Kupersteine45af542015-06-30 13:36:19 +0000680static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000681_mm512_add_pd(__m512d __a, __m512d __b)
682{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000683 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000684}
685
Michael Kupersteine45af542015-06-30 13:36:19 +0000686static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000687_mm512_add_ps(__m512 __a, __m512 __b)
688{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000689 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000693_mm512_mul_pd(__m512d __a, __m512d __b)
694{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000695 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000699_mm512_mul_ps(__m512 __a, __m512 __b)
700{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000701 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000702}
703
Michael Kupersteine45af542015-06-30 13:36:19 +0000704static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000705_mm512_sub_pd(__m512d __a, __m512d __b)
706{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000707 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000708}
709
Michael Kupersteine45af542015-06-30 13:36:19 +0000710static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000711_mm512_sub_ps(__m512 __a, __m512 __b)
712{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000713 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000714}
715
Michael Kupersteine45af542015-06-30 13:36:19 +0000716static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000717_mm512_add_epi64 (__m512i __A, __m512i __B)
718{
719 return (__m512i) ((__v8di) __A + (__v8di) __B);
720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000723_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
724{
725 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
726 (__v8di) __B,
727 (__v8di) __W,
728 (__mmask8) __U);
729}
730
Michael Kupersteine45af542015-06-30 13:36:19 +0000731static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000732_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
733{
734 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
735 (__v8di) __B,
736 (__v8di)
737 _mm512_setzero_si512 (),
738 (__mmask8) __U);
739}
740
Michael Kupersteine45af542015-06-30 13:36:19 +0000741static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000742_mm512_sub_epi64 (__m512i __A, __m512i __B)
743{
744 return (__m512i) ((__v8di) __A - (__v8di) __B);
745}
746
Michael Kupersteine45af542015-06-30 13:36:19 +0000747static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000748_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
749{
750 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
751 (__v8di) __B,
752 (__v8di) __W,
753 (__mmask8) __U);
754}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000757_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
758{
759 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
760 (__v8di) __B,
761 (__v8di)
762 _mm512_setzero_si512 (),
763 (__mmask8) __U);
764}
765
Michael Kupersteine45af542015-06-30 13:36:19 +0000766static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000767_mm512_add_epi32 (__m512i __A, __m512i __B)
768{
769 return (__m512i) ((__v16si) __A + (__v16si) __B);
770}
771
Michael Kupersteine45af542015-06-30 13:36:19 +0000772static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000773_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
774{
775 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
776 (__v16si) __B,
777 (__v16si) __W,
778 (__mmask16) __U);
779}
780
Michael Kupersteine45af542015-06-30 13:36:19 +0000781static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000782_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
783{
784 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
785 (__v16si) __B,
786 (__v16si)
787 _mm512_setzero_si512 (),
788 (__mmask16) __U);
789}
790
Michael Kupersteine45af542015-06-30 13:36:19 +0000791static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000792_mm512_sub_epi32 (__m512i __A, __m512i __B)
793{
794 return (__m512i) ((__v16si) __A - (__v16si) __B);
795}
796
Michael Kupersteine45af542015-06-30 13:36:19 +0000797static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000798_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
799{
800 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
801 (__v16si) __B,
802 (__v16si) __W,
803 (__mmask16) __U);
804}
805
Michael Kupersteine45af542015-06-30 13:36:19 +0000806static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000807_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
808{
809 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
810 (__v16si) __B,
811 (__v16si)
812 _mm512_setzero_si512 (),
813 (__mmask16) __U);
814}
815
Michael Kupersteine45af542015-06-30 13:36:19 +0000816static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000817_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000818{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000819 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
820 (__v8df) __B,
821 (__v8df)
822 _mm512_setzero_pd (),
823 (__mmask8) -1,
824 _MM_FROUND_CUR_DIRECTION);
825}
826
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000827static __inline__ __m512d __DEFAULT_FN_ATTRS
828_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
829{
830 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
831 (__v8df) __B,
832 (__v8df) __W,
833 (__mmask8) __U,
834 _MM_FROUND_CUR_DIRECTION);
835}
836
837static __inline__ __m512d __DEFAULT_FN_ATTRS
838_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
839{
840 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
841 (__v8df) __B,
842 (__v8df)
843 _mm512_setzero_pd (),
844 (__mmask8) __U,
845 _MM_FROUND_CUR_DIRECTION);
846}
847
Michael Kupersteine45af542015-06-30 13:36:19 +0000848static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000849_mm512_max_ps(__m512 __A, __m512 __B)
850{
851 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
852 (__v16sf) __B,
853 (__v16sf)
854 _mm512_setzero_ps (),
855 (__mmask16) -1,
856 _MM_FROUND_CUR_DIRECTION);
857}
858
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000859static __inline__ __m512 __DEFAULT_FN_ATTRS
860_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
861{
862 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
863 (__v16sf) __B,
864 (__v16sf) __W,
865 (__mmask16) __U,
866 _MM_FROUND_CUR_DIRECTION);
867}
868
869static __inline__ __m512 __DEFAULT_FN_ATTRS
870_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
871{
872 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
873 (__v16sf) __B,
874 (__v16sf)
875 _mm512_setzero_ps (),
876 (__mmask16) __U,
877 _MM_FROUND_CUR_DIRECTION);
878}
879
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000880static __inline__ __m128 __DEFAULT_FN_ATTRS
881_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000882 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000883 (__v4sf) __B,
884 (__v4sf) __W,
885 (__mmask8) __U,
886 _MM_FROUND_CUR_DIRECTION);
887}
888
889static __inline__ __m128 __DEFAULT_FN_ATTRS
890_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000891 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000892 (__v4sf) __B,
893 (__v4sf) _mm_setzero_ps (),
894 (__mmask8) __U,
895 _MM_FROUND_CUR_DIRECTION);
896}
897
Craig Topper8c18e112016-05-17 04:41:50 +0000898#define _mm_max_round_ss(A, B, R) __extension__ ({ \
899 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
900 (__v4sf)(__m128)(B), \
901 (__v4sf)_mm_setzero_ps(), \
902 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000903
Craig Topper8c18e112016-05-17 04:41:50 +0000904#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
905 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
906 (__v4sf)(__m128)(B), \
907 (__v4sf)(__m128)(W), (__mmask8)(U), \
908 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000909
Craig Topper8c18e112016-05-17 04:41:50 +0000910#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
911 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
912 (__v4sf)(__m128)(B), \
913 (__v4sf)_mm_setzero_ps(), \
914 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000915
916static __inline__ __m128d __DEFAULT_FN_ATTRS
917_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000918 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000919 (__v2df) __B,
920 (__v2df) __W,
921 (__mmask8) __U,
922 _MM_FROUND_CUR_DIRECTION);
923}
924
925static __inline__ __m128d __DEFAULT_FN_ATTRS
926_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000927 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000928 (__v2df) __B,
929 (__v2df) _mm_setzero_pd (),
930 (__mmask8) __U,
931 _MM_FROUND_CUR_DIRECTION);
932}
933
Craig Topper8c18e112016-05-17 04:41:50 +0000934#define _mm_max_round_sd(A, B, R) __extension__ ({ \
935 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
936 (__v2df)(__m128d)(B), \
937 (__v2df)_mm_setzero_pd(), \
938 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000939
Craig Topper8c18e112016-05-17 04:41:50 +0000940#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
941 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
942 (__v2df)(__m128d)(B), \
943 (__v2df)(__m128d)(W), \
944 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000945
Craig Topper8c18e112016-05-17 04:41:50 +0000946#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
947 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
948 (__v2df)(__m128d)(B), \
949 (__v2df)_mm_setzero_pd(), \
950 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000951
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +0000952static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000953__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000954_mm512_max_epi32(__m512i __A, __m512i __B)
955{
956 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
957 (__v16si) __B,
958 (__v16si)
959 _mm512_setzero_si512 (),
960 (__mmask16) -1);
961}
962
Michael Zuckermande860e52016-05-10 11:34:19 +0000963static __inline__ __m512i __DEFAULT_FN_ATTRS
964_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
965{
966 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
967 (__v16si) __B,
968 (__v16si) __W, __M);
969}
970
971static __inline__ __m512i __DEFAULT_FN_ATTRS
972_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
973{
974 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
975 (__v16si) __B,
976 (__v16si)
977 _mm512_setzero_si512 (),
978 __M);
979}
980
Michael Kupersteine45af542015-06-30 13:36:19 +0000981static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000982_mm512_max_epu32(__m512i __A, __m512i __B)
983{
984 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
985 (__v16si) __B,
986 (__v16si)
987 _mm512_setzero_si512 (),
988 (__mmask16) -1);
989}
990
Michael Zuckermande860e52016-05-10 11:34:19 +0000991static __inline__ __m512i __DEFAULT_FN_ATTRS
992_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
993{
994 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
995 (__v16si) __B,
996 (__v16si) __W, __M);
997}
998
999static __inline__ __m512i __DEFAULT_FN_ATTRS
1000_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1001{
1002 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1003 (__v16si) __B,
1004 (__v16si)
1005 _mm512_setzero_si512 (),
1006 __M);
1007}
1008
Michael Kupersteine45af542015-06-30 13:36:19 +00001009static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001010_mm512_max_epi64(__m512i __A, __m512i __B)
1011{
1012 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1013 (__v8di) __B,
1014 (__v8di)
1015 _mm512_setzero_si512 (),
1016 (__mmask8) -1);
1017}
1018
Michael Zuckermande860e52016-05-10 11:34:19 +00001019static __inline__ __m512i __DEFAULT_FN_ATTRS
1020_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1021{
1022 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1023 (__v8di) __B,
1024 (__v8di) __W, __M);
1025}
1026
1027static __inline__ __m512i __DEFAULT_FN_ATTRS
1028_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1029{
1030 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1031 (__v8di) __B,
1032 (__v8di)
1033 _mm512_setzero_si512 (),
1034 __M);
1035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001038_mm512_max_epu64(__m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1041 (__v8di) __B,
1042 (__v8di)
1043 _mm512_setzero_si512 (),
1044 (__mmask8) -1);
1045}
1046
Michael Zuckermande860e52016-05-10 11:34:19 +00001047static __inline__ __m512i __DEFAULT_FN_ATTRS
1048_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1049{
1050 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1051 (__v8di) __B,
1052 (__v8di) __W, __M);
1053}
1054
1055static __inline__ __m512i __DEFAULT_FN_ATTRS
1056_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1057{
1058 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1059 (__v8di) __B,
1060 (__v8di)
1061 _mm512_setzero_si512 (),
1062 __M);
1063}
1064
Michael Kupersteine45af542015-06-30 13:36:19 +00001065static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001066_mm512_min_pd(__m512d __A, __m512d __B)
1067{
1068 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1069 (__v8df) __B,
1070 (__v8df)
1071 _mm512_setzero_pd (),
1072 (__mmask8) -1,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001076static __inline__ __m512d __DEFAULT_FN_ATTRS
1077_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1078{
1079 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1080 (__v8df) __B,
1081 (__v8df) __W,
1082 (__mmask8) __U,
1083 _MM_FROUND_CUR_DIRECTION);
1084}
1085
1086static __inline__ __m512d __DEFAULT_FN_ATTRS
1087_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1088{
1089 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1090 (__v8df) __B,
1091 (__v8df)
1092 _mm512_setzero_pd (),
1093 (__mmask8) __U,
1094 _MM_FROUND_CUR_DIRECTION);
1095}
1096
Michael Kupersteine45af542015-06-30 13:36:19 +00001097static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001098_mm512_min_ps(__m512 __A, __m512 __B)
1099{
1100 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1101 (__v16sf) __B,
1102 (__v16sf)
1103 _mm512_setzero_ps (),
1104 (__mmask16) -1,
1105 _MM_FROUND_CUR_DIRECTION);
1106}
1107
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001108static __inline__ __m512 __DEFAULT_FN_ATTRS
1109_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1110{
1111 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1112 (__v16sf) __B,
1113 (__v16sf) __W,
1114 (__mmask16) __U,
1115 _MM_FROUND_CUR_DIRECTION);
1116}
1117
1118static __inline__ __m512 __DEFAULT_FN_ATTRS
1119_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1120{
1121 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1122 (__v16sf) __B,
1123 (__v16sf)
1124 _mm512_setzero_ps (),
1125 (__mmask16) __U,
1126 _MM_FROUND_CUR_DIRECTION);
1127}
1128
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001129static __inline__ __m128 __DEFAULT_FN_ATTRS
1130_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001131 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001132 (__v4sf) __B,
1133 (__v4sf) __W,
1134 (__mmask8) __U,
1135 _MM_FROUND_CUR_DIRECTION);
1136}
1137
1138static __inline__ __m128 __DEFAULT_FN_ATTRS
1139_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001140 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001141 (__v4sf) __B,
1142 (__v4sf) _mm_setzero_ps (),
1143 (__mmask8) __U,
1144 _MM_FROUND_CUR_DIRECTION);
1145}
1146
Craig Topper8c18e112016-05-17 04:41:50 +00001147#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1148 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1149 (__v4sf)(__m128)(B), \
1150 (__v4sf)_mm_setzero_ps(), \
1151 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001152
Craig Topper8c18e112016-05-17 04:41:50 +00001153#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1154 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1155 (__v4sf)(__m128)(B), \
1156 (__v4sf)(__m128)(W), (__mmask8)(U), \
1157 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158
Craig Topper8c18e112016-05-17 04:41:50 +00001159#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1160 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1161 (__v4sf)(__m128)(B), \
1162 (__v4sf)_mm_setzero_ps(), \
1163 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001164
1165static __inline__ __m128d __DEFAULT_FN_ATTRS
1166_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001167 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001168 (__v2df) __B,
1169 (__v2df) __W,
1170 (__mmask8) __U,
1171 _MM_FROUND_CUR_DIRECTION);
1172}
1173
1174static __inline__ __m128d __DEFAULT_FN_ATTRS
1175_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001176 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001177 (__v2df) __B,
1178 (__v2df) _mm_setzero_pd (),
1179 (__mmask8) __U,
1180 _MM_FROUND_CUR_DIRECTION);
1181}
1182
Craig Topper8c18e112016-05-17 04:41:50 +00001183#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1184 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1185 (__v2df)(__m128d)(B), \
1186 (__v2df)_mm_setzero_pd(), \
1187 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001188
Craig Topper8c18e112016-05-17 04:41:50 +00001189#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1190 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1191 (__v2df)(__m128d)(B), \
1192 (__v2df)(__m128d)(W), \
1193 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001194
Craig Topper8c18e112016-05-17 04:41:50 +00001195#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1196 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1197 (__v2df)(__m128d)(B), \
1198 (__v2df)_mm_setzero_pd(), \
1199 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001200
Adam Nemet0d5bb552014-07-28 17:14:40 +00001201static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001202__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001203_mm512_min_epi32(__m512i __A, __m512i __B)
1204{
1205 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1206 (__v16si) __B,
1207 (__v16si)
1208 _mm512_setzero_si512 (),
1209 (__mmask16) -1);
1210}
1211
Michael Zuckermande860e52016-05-10 11:34:19 +00001212static __inline__ __m512i __DEFAULT_FN_ATTRS
1213_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1214{
1215 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1216 (__v16si) __B,
1217 (__v16si) __W, __M);
1218}
1219
1220static __inline__ __m512i __DEFAULT_FN_ATTRS
1221_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1222{
1223 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1224 (__v16si) __B,
1225 (__v16si)
1226 _mm512_setzero_si512 (),
1227 __M);
1228}
1229
Michael Kupersteine45af542015-06-30 13:36:19 +00001230static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001231_mm512_min_epu32(__m512i __A, __m512i __B)
1232{
1233 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1234 (__v16si) __B,
1235 (__v16si)
1236 _mm512_setzero_si512 (),
1237 (__mmask16) -1);
1238}
1239
Michael Zuckermande860e52016-05-10 11:34:19 +00001240static __inline__ __m512i __DEFAULT_FN_ATTRS
1241_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1242{
1243 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1244 (__v16si) __B,
1245 (__v16si) __W, __M);
1246}
1247
1248static __inline__ __m512i __DEFAULT_FN_ATTRS
1249_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1250{
1251 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1252 (__v16si) __B,
1253 (__v16si)
1254 _mm512_setzero_si512 (),
1255 __M);
1256}
1257
Michael Kupersteine45af542015-06-30 13:36:19 +00001258static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001259_mm512_min_epi64(__m512i __A, __m512i __B)
1260{
1261 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1262 (__v8di) __B,
1263 (__v8di)
1264 _mm512_setzero_si512 (),
1265 (__mmask8) -1);
1266}
1267
Michael Zuckermande860e52016-05-10 11:34:19 +00001268static __inline__ __m512i __DEFAULT_FN_ATTRS
1269_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1270{
1271 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1272 (__v8di) __B,
1273 (__v8di) __W, __M);
1274}
1275
1276static __inline__ __m512i __DEFAULT_FN_ATTRS
1277_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1278{
1279 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1280 (__v8di) __B,
1281 (__v8di)
1282 _mm512_setzero_si512 (),
1283 __M);
1284}
1285
Michael Kupersteine45af542015-06-30 13:36:19 +00001286static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001287_mm512_min_epu64(__m512i __A, __m512i __B)
1288{
1289 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1290 (__v8di) __B,
1291 (__v8di)
1292 _mm512_setzero_si512 (),
1293 (__mmask8) -1);
1294}
1295
Michael Zuckermande860e52016-05-10 11:34:19 +00001296static __inline__ __m512i __DEFAULT_FN_ATTRS
1297_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1298{
1299 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1300 (__v8di) __B,
1301 (__v8di) __W, __M);
1302}
1303
1304static __inline__ __m512i __DEFAULT_FN_ATTRS
1305_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1306{
1307 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1308 (__v8di) __B,
1309 (__v8di)
1310 _mm512_setzero_si512 (),
1311 __M);
1312}
1313
Michael Kupersteine45af542015-06-30 13:36:19 +00001314static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001315_mm512_mul_epi32(__m512i __X, __m512i __Y)
1316{
1317 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1318 (__v16si) __Y,
1319 (__v8di)
1320 _mm512_setzero_si512 (),
1321 (__mmask8) -1);
1322}
1323
Michael Kupersteine45af542015-06-30 13:36:19 +00001324static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001325_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1326{
1327 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1328 (__v16si) __Y,
1329 (__v8di) __W, __M);
1330}
1331
Michael Kupersteine45af542015-06-30 13:36:19 +00001332static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001333_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1334{
1335 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1336 (__v16si) __Y,
1337 (__v8di)
1338 _mm512_setzero_si512 (),
1339 __M);
1340}
1341
Michael Kupersteine45af542015-06-30 13:36:19 +00001342static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001343_mm512_mul_epu32(__m512i __X, __m512i __Y)
1344{
1345 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1346 (__v16si) __Y,
1347 (__v8di)
1348 _mm512_setzero_si512 (),
1349 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001350}
1351
Michael Kupersteine45af542015-06-30 13:36:19 +00001352static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001353_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1354{
1355 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1356 (__v16si) __Y,
1357 (__v8di) __W, __M);
1358}
1359
Michael Kupersteine45af542015-06-30 13:36:19 +00001360static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001361_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1362{
1363 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1364 (__v16si) __Y,
1365 (__v8di)
1366 _mm512_setzero_si512 (),
1367 __M);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001371_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1372{
1373 return (__m512i) ((__v16si) __A * (__v16si) __B);
1374}
1375
Michael Kupersteine45af542015-06-30 13:36:19 +00001376static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001377_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1378{
1379 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1380 (__v16si) __B,
1381 (__v16si)
1382 _mm512_setzero_si512 (),
1383 __M);
1384}
1385
Michael Kupersteine45af542015-06-30 13:36:19 +00001386static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001387_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1388{
1389 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1390 (__v16si) __B,
1391 (__v16si) __W, __M);
1392}
1393
Michael Kupersteine45af542015-06-30 13:36:19 +00001394static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001395_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001396{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001397 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001398 (__v8df) _mm512_setzero_pd (),
1399 (__mmask8) -1,
1400 _MM_FROUND_CUR_DIRECTION);
1401}
1402
Michael Zuckermancb856772016-05-16 11:42:01 +00001403static __inline__ __m512d __DEFAULT_FN_ATTRS
1404_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1405{
1406 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1407 (__v8df) __W,
1408 (__mmask8) __U,
1409 _MM_FROUND_CUR_DIRECTION);
1410}
1411
1412static __inline__ __m512d __DEFAULT_FN_ATTRS
1413_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1414{
1415 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1416 (__v8df)
1417 _mm512_setzero_pd (),
1418 (__mmask8) __U,
1419 _MM_FROUND_CUR_DIRECTION);
1420}
1421
Michael Kupersteine45af542015-06-30 13:36:19 +00001422static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001423_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001424{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001425 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001426 (__v16sf) _mm512_setzero_ps (),
1427 (__mmask16) -1,
1428 _MM_FROUND_CUR_DIRECTION);
1429}
1430
Michael Zuckermancb856772016-05-16 11:42:01 +00001431static __inline__ __m512 __DEFAULT_FN_ATTRS
1432_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1433{
1434 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1435 (__v16sf) __W,
1436 (__mmask16) __U,
1437 _MM_FROUND_CUR_DIRECTION);
1438}
1439
1440static __inline__ __m512 __DEFAULT_FN_ATTRS
1441_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1442{
1443 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1444 (__v16sf) _mm512_setzero_ps (),
1445 (__mmask16) __U,
1446 _MM_FROUND_CUR_DIRECTION);
1447}
1448
Michael Kupersteine45af542015-06-30 13:36:19 +00001449static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001450_mm512_rsqrt14_pd(__m512d __A)
1451{
1452 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1453 (__v8df)
1454 _mm512_setzero_pd (),
1455 (__mmask8) -1);}
1456
Michael Zuckermancb856772016-05-16 11:42:01 +00001457static __inline__ __m512d __DEFAULT_FN_ATTRS
1458_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1459{
1460 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1461 (__v8df) __W,
1462 (__mmask8) __U);
1463}
1464
1465static __inline__ __m512d __DEFAULT_FN_ATTRS
1466_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1467{
1468 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1469 (__v8df)
1470 _mm512_setzero_pd (),
1471 (__mmask8) __U);
1472}
1473
Michael Kupersteine45af542015-06-30 13:36:19 +00001474static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001475_mm512_rsqrt14_ps(__m512 __A)
1476{
1477 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1478 (__v16sf)
1479 _mm512_setzero_ps (),
1480 (__mmask16) -1);
1481}
1482
Michael Zuckermancb856772016-05-16 11:42:01 +00001483static __inline__ __m512 __DEFAULT_FN_ATTRS
1484_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1485{
1486 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1487 (__v16sf) __W,
1488 (__mmask16) __U);
1489}
1490
1491static __inline__ __m512 __DEFAULT_FN_ATTRS
1492_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1493{
1494 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1495 (__v16sf)
1496 _mm512_setzero_ps (),
1497 (__mmask16) __U);
1498}
1499
Michael Kupersteine45af542015-06-30 13:36:19 +00001500static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001501_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1502{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001503 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001504 (__v4sf) __B,
1505 (__v4sf)
1506 _mm_setzero_ps (),
1507 (__mmask8) -1);
1508}
1509
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001510static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001511_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001512{
1513 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1514 (__v4sf) __B,
1515 (__v4sf) __W,
1516 (__mmask8) __U);
1517}
1518
1519static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001520_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001521{
1522 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1523 (__v4sf) __B,
1524 (__v4sf) _mm_setzero_ps (),
1525 (__mmask8) __U);
1526}
1527
Michael Kupersteine45af542015-06-30 13:36:19 +00001528static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001529_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1530{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001531 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001532 (__v2df) __B,
1533 (__v2df)
1534 _mm_setzero_pd (),
1535 (__mmask8) -1);
1536}
1537
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001538static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001539_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001540{
1541 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1542 (__v2df) __B,
1543 (__v2df) __W,
1544 (__mmask8) __U);
1545}
1546
1547static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001548_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001549{
1550 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1551 (__v2df) __B,
1552 (__v2df) _mm_setzero_pd (),
1553 (__mmask8) __U);
1554}
1555
Michael Kupersteine45af542015-06-30 13:36:19 +00001556static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001557_mm512_rcp14_pd(__m512d __A)
1558{
1559 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1560 (__v8df)
1561 _mm512_setzero_pd (),
1562 (__mmask8) -1);
1563}
1564
Michael Zuckermancb856772016-05-16 11:42:01 +00001565static __inline__ __m512d __DEFAULT_FN_ATTRS
1566_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1567{
1568 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1569 (__v8df) __W,
1570 (__mmask8) __U);
1571}
1572
1573static __inline__ __m512d __DEFAULT_FN_ATTRS
1574_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1575{
1576 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1577 (__v8df)
1578 _mm512_setzero_pd (),
1579 (__mmask8) __U);
1580}
1581
Michael Kupersteine45af542015-06-30 13:36:19 +00001582static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001583_mm512_rcp14_ps(__m512 __A)
1584{
1585 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1586 (__v16sf)
1587 _mm512_setzero_ps (),
1588 (__mmask16) -1);
1589}
Michael Zuckermancb856772016-05-16 11:42:01 +00001590
1591static __inline__ __m512 __DEFAULT_FN_ATTRS
1592_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1593{
1594 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1595 (__v16sf) __W,
1596 (__mmask16) __U);
1597}
1598
1599static __inline__ __m512 __DEFAULT_FN_ATTRS
1600_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1601{
1602 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1603 (__v16sf)
1604 _mm512_setzero_ps (),
1605 (__mmask16) __U);
1606}
1607
Michael Kupersteine45af542015-06-30 13:36:19 +00001608static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001609_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001610{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001611 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001612 (__v4sf) __B,
1613 (__v4sf)
1614 _mm_setzero_ps (),
1615 (__mmask8) -1);
1616}
1617
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001618static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001619_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001620{
1621 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1622 (__v4sf) __B,
1623 (__v4sf) __W,
1624 (__mmask8) __U);
1625}
1626
1627static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001628_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001629{
1630 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1631 (__v4sf) __B,
1632 (__v4sf) _mm_setzero_ps (),
1633 (__mmask8) __U);
1634}
1635
Michael Kupersteine45af542015-06-30 13:36:19 +00001636static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001637_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001638{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001639 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001640 (__v2df) __B,
1641 (__v2df)
1642 _mm_setzero_pd (),
1643 (__mmask8) -1);
1644}
1645
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001646static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001647_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001648{
1649 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1650 (__v2df) __B,
1651 (__v2df) __W,
1652 (__mmask8) __U);
1653}
1654
1655static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001656_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001657{
1658 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1659 (__v2df) __B,
1660 (__v2df) _mm_setzero_pd (),
1661 (__mmask8) __U);
1662}
1663
Michael Kupersteine45af542015-06-30 13:36:19 +00001664static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001665_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001666{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001667 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1668 _MM_FROUND_FLOOR,
1669 (__v16sf) __A, -1,
1670 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001671}
1672
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001673static __inline__ __m512 __DEFAULT_FN_ATTRS
1674_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1675{
1676 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1677 _MM_FROUND_FLOOR,
1678 (__v16sf) __W, __U,
1679 _MM_FROUND_CUR_DIRECTION);
1680}
1681
1682
Michael Kupersteine45af542015-06-30 13:36:19 +00001683static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001684_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001685{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001686 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1687 _MM_FROUND_FLOOR,
1688 (__v8df) __A, -1,
1689 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001690}
1691
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001692static __inline__ __m512d __DEFAULT_FN_ATTRS
1693_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1694{
1695 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1696 _MM_FROUND_FLOOR,
1697 (__v8df) __W, __U,
1698 _MM_FROUND_CUR_DIRECTION);
1699}
1700
1701
1702static __inline__ __m512 __DEFAULT_FN_ATTRS
1703_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1704{
1705 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1706 _MM_FROUND_CEIL,
1707 (__v16sf) __W, __U,
1708 _MM_FROUND_CUR_DIRECTION);
1709}
1710
Michael Kupersteine45af542015-06-30 13:36:19 +00001711static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001712_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001713{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001714 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1715 _MM_FROUND_CEIL,
1716 (__v16sf) __A, -1,
1717 _MM_FROUND_CUR_DIRECTION);
1718}
1719
Michael Kupersteine45af542015-06-30 13:36:19 +00001720static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001721_mm512_ceil_pd(__m512d __A)
1722{
1723 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1724 _MM_FROUND_CEIL,
1725 (__v8df) __A, -1,
1726 _MM_FROUND_CUR_DIRECTION);
1727}
1728
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001729static __inline__ __m512d __DEFAULT_FN_ATTRS
1730_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1731{
1732 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1733 _MM_FROUND_CEIL,
1734 (__v8df) __W, __U,
1735 _MM_FROUND_CUR_DIRECTION);
1736}
1737
Michael Kupersteine45af542015-06-30 13:36:19 +00001738static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001739_mm512_abs_epi64(__m512i __A)
1740{
1741 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1742 (__v8di)
1743 _mm512_setzero_si512 (),
1744 (__mmask8) -1);
1745}
1746
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001747static __inline__ __m512i __DEFAULT_FN_ATTRS
1748_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1749{
1750 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1751 (__v8di) __W,
1752 (__mmask8) __U);
1753}
1754
1755static __inline__ __m512i __DEFAULT_FN_ATTRS
1756_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1757{
1758 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1759 (__v8di)
1760 _mm512_setzero_si512 (),
1761 (__mmask8) __U);
1762}
1763
Michael Kupersteine45af542015-06-30 13:36:19 +00001764static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001765_mm512_abs_epi32(__m512i __A)
1766{
1767 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1768 (__v16si)
1769 _mm512_setzero_si512 (),
1770 (__mmask16) -1);
1771}
1772
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001773static __inline__ __m512i __DEFAULT_FN_ATTRS
1774_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1775{
1776 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1777 (__v16si) __W,
1778 (__mmask16) __U);
1779}
1780
1781static __inline__ __m512i __DEFAULT_FN_ATTRS
1782_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1783{
1784 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1785 (__v16si)
1786 _mm512_setzero_si512 (),
1787 (__mmask16) __U);
1788}
1789
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001790static __inline__ __m128 __DEFAULT_FN_ATTRS
1791_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001792 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001793 (__v4sf) __B,
1794 (__v4sf) __W,
1795 (__mmask8) __U,
1796 _MM_FROUND_CUR_DIRECTION);
1797}
1798
1799static __inline__ __m128 __DEFAULT_FN_ATTRS
1800_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001801 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001802 (__v4sf) __B,
1803 (__v4sf) _mm_setzero_ps (),
1804 (__mmask8) __U,
1805 _MM_FROUND_CUR_DIRECTION);
1806}
1807
Craig Topper8c18e112016-05-17 04:41:50 +00001808#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1809 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1810 (__v4sf)(__m128)(B), \
1811 (__v4sf)_mm_setzero_ps(), \
1812 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001813
Craig Topper8c18e112016-05-17 04:41:50 +00001814#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1815 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1816 (__v4sf)(__m128)(B), \
1817 (__v4sf)(__m128)(W), (__mmask8)(U), \
1818 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001819
Craig Topper8c18e112016-05-17 04:41:50 +00001820#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1821 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1822 (__v4sf)(__m128)(B), \
1823 (__v4sf)_mm_setzero_ps(), \
1824 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001825
1826static __inline__ __m128d __DEFAULT_FN_ATTRS
1827_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001828 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001829 (__v2df) __B,
1830 (__v2df) __W,
1831 (__mmask8) __U,
1832 _MM_FROUND_CUR_DIRECTION);
1833}
1834
1835static __inline__ __m128d __DEFAULT_FN_ATTRS
1836_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001837 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001838 (__v2df) __B,
1839 (__v2df) _mm_setzero_pd (),
1840 (__mmask8) __U,
1841 _MM_FROUND_CUR_DIRECTION);
1842}
Craig Topper8c18e112016-05-17 04:41:50 +00001843#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1844 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1845 (__v2df)(__m128d)(B), \
1846 (__v2df)_mm_setzero_pd(), \
1847 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001848
Craig Topper8c18e112016-05-17 04:41:50 +00001849#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1850 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1851 (__v2df)(__m128d)(B), \
1852 (__v2df)(__m128d)(W), \
1853 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001854
Craig Topper8c18e112016-05-17 04:41:50 +00001855#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1856 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1857 (__v2df)(__m128d)(B), \
1858 (__v2df)_mm_setzero_pd(), \
1859 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001860
Asaf Badouhffeb6242015-07-21 15:27:28 +00001861static __inline__ __m512d __DEFAULT_FN_ATTRS
1862_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1863 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1864 (__v8df) __B,
1865 (__v8df) __W,
1866 (__mmask8) __U,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
1870static __inline__ __m512d __DEFAULT_FN_ATTRS
1871_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1872 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1873 (__v8df) __B,
1874 (__v8df) _mm512_setzero_pd (),
1875 (__mmask8) __U,
1876 _MM_FROUND_CUR_DIRECTION);
1877}
1878
1879static __inline__ __m512 __DEFAULT_FN_ATTRS
1880_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1881 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1882 (__v16sf) __B,
1883 (__v16sf) __W,
1884 (__mmask16) __U,
1885 _MM_FROUND_CUR_DIRECTION);
1886}
1887
1888static __inline__ __m512 __DEFAULT_FN_ATTRS
1889_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1890 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1891 (__v16sf) __B,
1892 (__v16sf) _mm512_setzero_ps (),
1893 (__mmask16) __U,
1894 _MM_FROUND_CUR_DIRECTION);
1895}
1896
Craig Topper8c18e112016-05-17 04:41:50 +00001897#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1898 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1899 (__v8df)(__m512d)(B), \
1900 (__v8df)_mm512_setzero_pd(), \
1901 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001902
Craig Topper8c18e112016-05-17 04:41:50 +00001903#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1904 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1905 (__v8df)(__m512d)(B), \
1906 (__v8df)(__m512d)(W), (__mmask8)(U), \
1907 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001908
Craig Topper8c18e112016-05-17 04:41:50 +00001909#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1910 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1911 (__v8df)(__m512d)(B), \
1912 (__v8df)_mm512_setzero_pd(), \
1913 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001914
Craig Topper8c18e112016-05-17 04:41:50 +00001915#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1916 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1917 (__v16sf)(__m512)(B), \
1918 (__v16sf)_mm512_setzero_ps(), \
1919 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001920
Craig Topper8c18e112016-05-17 04:41:50 +00001921#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1922 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1923 (__v16sf)(__m512)(B), \
1924 (__v16sf)(__m512)(W), (__mmask16)(U), \
1925 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001926
Craig Topper8c18e112016-05-17 04:41:50 +00001927#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1928 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1929 (__v16sf)(__m512)(B), \
1930 (__v16sf)_mm512_setzero_ps(), \
1931 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001932
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001933static __inline__ __m128 __DEFAULT_FN_ATTRS
1934_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001935 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001936 (__v4sf) __B,
1937 (__v4sf) __W,
1938 (__mmask8) __U,
1939 _MM_FROUND_CUR_DIRECTION);
1940}
1941
1942static __inline__ __m128 __DEFAULT_FN_ATTRS
1943_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001944 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001945 (__v4sf) __B,
1946 (__v4sf) _mm_setzero_ps (),
1947 (__mmask8) __U,
1948 _MM_FROUND_CUR_DIRECTION);
1949}
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)_mm_setzero_ps(), \
1954 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
Craig Topper8c18e112016-05-17 04:41:50 +00001956#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1957 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1958 (__v4sf)(__m128)(B), \
1959 (__v4sf)(__m128)(W), (__mmask8)(U), \
1960 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001961
Craig Topper8c18e112016-05-17 04:41:50 +00001962#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1963 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1964 (__v4sf)(__m128)(B), \
1965 (__v4sf)_mm_setzero_ps(), \
1966 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001967
1968static __inline__ __m128d __DEFAULT_FN_ATTRS
1969_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001970 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001971 (__v2df) __B,
1972 (__v2df) __W,
1973 (__mmask8) __U,
1974 _MM_FROUND_CUR_DIRECTION);
1975}
1976
1977static __inline__ __m128d __DEFAULT_FN_ATTRS
1978_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001979 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001980 (__v2df) __B,
1981 (__v2df) _mm_setzero_pd (),
1982 (__mmask8) __U,
1983 _MM_FROUND_CUR_DIRECTION);
1984}
1985
Craig Topper8c18e112016-05-17 04:41:50 +00001986#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1987 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1988 (__v2df)(__m128d)(B), \
1989 (__v2df)_mm_setzero_pd(), \
1990 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001991
Craig Topper8c18e112016-05-17 04:41:50 +00001992#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1993 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1994 (__v2df)(__m128d)(B), \
1995 (__v2df)(__m128d)(W), \
1996 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001997
Craig Topper8c18e112016-05-17 04:41:50 +00001998#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1999 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2000 (__v2df)(__m128d)(B), \
2001 (__v2df)_mm_setzero_pd(), \
2002 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002003
Asaf Badouhffeb6242015-07-21 15:27:28 +00002004static __inline__ __m512d __DEFAULT_FN_ATTRS
2005_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2006 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2007 (__v8df) __B,
2008 (__v8df) __W,
2009 (__mmask8) __U,
2010 _MM_FROUND_CUR_DIRECTION);
2011}
2012
2013static __inline__ __m512d __DEFAULT_FN_ATTRS
2014_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2015 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2016 (__v8df) __B,
2017 (__v8df)
2018 _mm512_setzero_pd (),
2019 (__mmask8) __U,
2020 _MM_FROUND_CUR_DIRECTION);
2021}
2022
2023static __inline__ __m512 __DEFAULT_FN_ATTRS
2024_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2025 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2026 (__v16sf) __B,
2027 (__v16sf) __W,
2028 (__mmask16) __U,
2029 _MM_FROUND_CUR_DIRECTION);
2030}
2031
2032static __inline__ __m512 __DEFAULT_FN_ATTRS
2033_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2034 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2035 (__v16sf) __B,
2036 (__v16sf)
2037 _mm512_setzero_ps (),
2038 (__mmask16) __U,
2039 _MM_FROUND_CUR_DIRECTION);
2040}
2041
Craig Topper8c18e112016-05-17 04:41:50 +00002042#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2043 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2044 (__v8df)(__m512d)(B), \
2045 (__v8df)_mm512_setzero_pd(), \
2046 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002047
Craig Topper8c18e112016-05-17 04:41:50 +00002048#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2049 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2050 (__v8df)(__m512d)(B), \
2051 (__v8df)(__m512d)(W), (__mmask8)(U), \
2052 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002053
Craig Topper8c18e112016-05-17 04:41:50 +00002054#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2055 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2056 (__v8df)(__m512d)(B), \
2057 (__v8df)_mm512_setzero_pd(), \
2058 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002059
Craig Topper8c18e112016-05-17 04:41:50 +00002060#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2061 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2062 (__v16sf)(__m512)(B), \
2063 (__v16sf)_mm512_setzero_ps(), \
2064 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002065
Craig Topper8c18e112016-05-17 04:41:50 +00002066#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2067 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2068 (__v16sf)(__m512)(B), \
2069 (__v16sf)(__m512)(W), (__mmask16)(U), \
2070 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002071
Craig Topper8c18e112016-05-17 04:41:50 +00002072#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2073 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2074 (__v16sf)(__m512)(B), \
2075 (__v16sf)_mm512_setzero_ps(), \
2076 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002077
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002078static __inline__ __m128 __DEFAULT_FN_ATTRS
2079_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002080 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002081 (__v4sf) __B,
2082 (__v4sf) __W,
2083 (__mmask8) __U,
2084 _MM_FROUND_CUR_DIRECTION);
2085}
2086
2087static __inline__ __m128 __DEFAULT_FN_ATTRS
2088_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002089 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002090 (__v4sf) __B,
2091 (__v4sf) _mm_setzero_ps (),
2092 (__mmask8) __U,
2093 _MM_FROUND_CUR_DIRECTION);
2094}
Craig Topper8c18e112016-05-17 04:41:50 +00002095#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2096 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2097 (__v4sf)(__m128)(B), \
2098 (__v4sf)_mm_setzero_ps(), \
2099 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002100
Craig Topper8c18e112016-05-17 04:41:50 +00002101#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2102 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2103 (__v4sf)(__m128)(B), \
2104 (__v4sf)(__m128)(W), (__mmask8)(U), \
2105 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002106
Craig Topper8c18e112016-05-17 04:41:50 +00002107#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2108 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2109 (__v4sf)(__m128)(B), \
2110 (__v4sf)_mm_setzero_ps(), \
2111 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002112
2113static __inline__ __m128d __DEFAULT_FN_ATTRS
2114_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002115 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002116 (__v2df) __B,
2117 (__v2df) __W,
2118 (__mmask8) __U,
2119 _MM_FROUND_CUR_DIRECTION);
2120}
2121
2122static __inline__ __m128d __DEFAULT_FN_ATTRS
2123_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002124 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002125 (__v2df) __B,
2126 (__v2df) _mm_setzero_pd (),
2127 (__mmask8) __U,
2128 _MM_FROUND_CUR_DIRECTION);
2129}
2130
Craig Topper8c18e112016-05-17 04:41:50 +00002131#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2132 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2133 (__v2df)(__m128d)(B), \
2134 (__v2df)_mm_setzero_pd(), \
2135 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002136
Craig Topper8c18e112016-05-17 04:41:50 +00002137#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2138 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2139 (__v2df)(__m128d)(B), \
2140 (__v2df)(__m128d)(W), \
2141 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002142
Craig Topper8c18e112016-05-17 04:41:50 +00002143#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2144 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2145 (__v2df)(__m128d)(B), \
2146 (__v2df)_mm_setzero_pd(), \
2147 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002148
Asaf Badouhffeb6242015-07-21 15:27:28 +00002149static __inline__ __m512d __DEFAULT_FN_ATTRS
2150_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2151 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2152 (__v8df) __B,
2153 (__v8df) __W,
2154 (__mmask8) __U,
2155 _MM_FROUND_CUR_DIRECTION);
2156}
2157
2158static __inline__ __m512d __DEFAULT_FN_ATTRS
2159_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2160 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2161 (__v8df) __B,
2162 (__v8df)
2163 _mm512_setzero_pd (),
2164 (__mmask8) __U,
2165 _MM_FROUND_CUR_DIRECTION);
2166}
2167
2168static __inline__ __m512 __DEFAULT_FN_ATTRS
2169_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2170 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2171 (__v16sf) __B,
2172 (__v16sf) __W,
2173 (__mmask16) __U,
2174 _MM_FROUND_CUR_DIRECTION);
2175}
2176
2177static __inline__ __m512 __DEFAULT_FN_ATTRS
2178_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2179 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2180 (__v16sf) __B,
2181 (__v16sf)
2182 _mm512_setzero_ps (),
2183 (__mmask16) __U,
2184 _MM_FROUND_CUR_DIRECTION);
2185}
2186
Craig Topper8c18e112016-05-17 04:41:50 +00002187#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2188 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2189 (__v8df)(__m512d)(B), \
2190 (__v8df)_mm512_setzero_pd(), \
2191 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002192
Craig Topper8c18e112016-05-17 04:41:50 +00002193#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2194 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2195 (__v8df)(__m512d)(B), \
2196 (__v8df)(__m512d)(W), (__mmask8)(U), \
2197 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002198
Craig Topper8c18e112016-05-17 04:41:50 +00002199#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2200 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2201 (__v8df)(__m512d)(B), \
2202 (__v8df)_mm512_setzero_pd(), \
2203 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002204
Craig Topper8c18e112016-05-17 04:41:50 +00002205#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2206 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2207 (__v16sf)(__m512)(B), \
2208 (__v16sf)_mm512_setzero_ps(), \
2209 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002210
Craig Topper8c18e112016-05-17 04:41:50 +00002211#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2212 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2213 (__v16sf)(__m512)(B), \
2214 (__v16sf)(__m512)(W), (__mmask16)(U), \
2215 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002216
Craig Topper8c18e112016-05-17 04:41:50 +00002217#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2218 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2219 (__v16sf)(__m512)(B), \
2220 (__v16sf)_mm512_setzero_ps(), \
2221 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002222
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002223static __inline__ __m128 __DEFAULT_FN_ATTRS
2224_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002225 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002226 (__v4sf) __B,
2227 (__v4sf) __W,
2228 (__mmask8) __U,
2229 _MM_FROUND_CUR_DIRECTION);
2230}
2231
2232static __inline__ __m128 __DEFAULT_FN_ATTRS
2233_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002234 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002235 (__v4sf) __B,
2236 (__v4sf) _mm_setzero_ps (),
2237 (__mmask8) __U,
2238 _MM_FROUND_CUR_DIRECTION);
2239}
2240
Craig Topper8c18e112016-05-17 04:41:50 +00002241#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2242 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2243 (__v4sf)(__m128)(B), \
2244 (__v4sf)_mm_setzero_ps(), \
2245 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246
Craig Topper8c18e112016-05-17 04:41:50 +00002247#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2248 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2249 (__v4sf)(__m128)(B), \
2250 (__v4sf)(__m128)(W), (__mmask8)(U), \
2251 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002252
Craig Topper8c18e112016-05-17 04:41:50 +00002253#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2254 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2255 (__v4sf)(__m128)(B), \
2256 (__v4sf)_mm_setzero_ps(), \
2257 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002258
2259static __inline__ __m128d __DEFAULT_FN_ATTRS
2260_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002261 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002262 (__v2df) __B,
2263 (__v2df) __W,
2264 (__mmask8) __U,
2265 _MM_FROUND_CUR_DIRECTION);
2266}
2267
2268static __inline__ __m128d __DEFAULT_FN_ATTRS
2269_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002270 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002271 (__v2df) __B,
2272 (__v2df) _mm_setzero_pd (),
2273 (__mmask8) __U,
2274 _MM_FROUND_CUR_DIRECTION);
2275}
2276
Craig Topper8c18e112016-05-17 04:41:50 +00002277#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2278 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2279 (__v2df)(__m128d)(B), \
2280 (__v2df)_mm_setzero_pd(), \
2281 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002282
Craig Topper8c18e112016-05-17 04:41:50 +00002283#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2284 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2285 (__v2df)(__m128d)(B), \
2286 (__v2df)(__m128d)(W), \
2287 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002288
Craig Topper8c18e112016-05-17 04:41:50 +00002289#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2290 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2291 (__v2df)(__m128d)(B), \
2292 (__v2df)_mm_setzero_pd(), \
2293 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002294
Asaf Badouhffeb6242015-07-21 15:27:28 +00002295static __inline__ __m512d __DEFAULT_FN_ATTRS
2296_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2297 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2298 (__v8df) __B,
2299 (__v8df) __W,
2300 (__mmask8) __U,
2301 _MM_FROUND_CUR_DIRECTION);
2302}
2303
2304static __inline__ __m512d __DEFAULT_FN_ATTRS
2305_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2306 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2307 (__v8df) __B,
2308 (__v8df)
2309 _mm512_setzero_pd (),
2310 (__mmask8) __U,
2311 _MM_FROUND_CUR_DIRECTION);
2312}
2313
2314static __inline__ __m512 __DEFAULT_FN_ATTRS
2315_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2316 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2317 (__v16sf) __B,
2318 (__v16sf) __W,
2319 (__mmask16) __U,
2320 _MM_FROUND_CUR_DIRECTION);
2321}
2322
2323static __inline__ __m512 __DEFAULT_FN_ATTRS
2324_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2325 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2326 (__v16sf) __B,
2327 (__v16sf)
2328 _mm512_setzero_ps (),
2329 (__mmask16) __U,
2330 _MM_FROUND_CUR_DIRECTION);
2331}
2332
Craig Topper8c18e112016-05-17 04:41:50 +00002333#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2334 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2335 (__v8df)(__m512d)(B), \
2336 (__v8df)_mm512_setzero_pd(), \
2337 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002338
Craig Topper8c18e112016-05-17 04:41:50 +00002339#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2340 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2341 (__v8df)(__m512d)(B), \
2342 (__v8df)(__m512d)(W), (__mmask8)(U), \
2343 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002344
Craig Topper8c18e112016-05-17 04:41:50 +00002345#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2346 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2347 (__v8df)(__m512d)(B), \
2348 (__v8df)_mm512_setzero_pd(), \
2349 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002350
Craig Topper8c18e112016-05-17 04:41:50 +00002351#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2352 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2353 (__v16sf)(__m512)(B), \
2354 (__v16sf)_mm512_setzero_ps(), \
2355 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002356
Craig Topper8c18e112016-05-17 04:41:50 +00002357#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2358 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2359 (__v16sf)(__m512)(B), \
2360 (__v16sf)(__m512)(W), (__mmask16)(U), \
2361 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002362
Craig Topper8c18e112016-05-17 04:41:50 +00002363#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2364 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2365 (__v16sf)(__m512)(B), \
2366 (__v16sf)_mm512_setzero_ps(), \
2367 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002368
Craig Topper72c7d512015-02-01 07:35:35 +00002369#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002370 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2371 (__v16sf)(__m512)(A), (__mmask16)-1, \
2372 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002373
Craig Topper8c18e112016-05-17 04:41:50 +00002374#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2375 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2376 (__v16sf)(__m512)(A), (__mmask16)(B), \
2377 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002378
Craig Topper8c18e112016-05-17 04:41:50 +00002379#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2380 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2381 (__v16sf)_mm512_setzero_ps(), \
2382 (__mmask16)(A), \
2383 _MM_FROUND_CUR_DIRECTION); })
2384
Michael Zuckermanc301c192016-06-01 07:35:44 +00002385#define _mm512_mask_roundscale_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
2386 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __C), (int)__imm,\
2387 (__v16sf)( __A),\
2388 (__mmask16)( __B),(int) __R);\
2389})
2390
2391#define _mm512_maskz_roundscale_round_ps( __A, __B, __imm,__R) __extension__ ({ \
2392 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __B), (int)__imm,\
2393 (__v16sf)_mm512_setzero_ps (),\
2394 (__mmask16)( __A),(int) __R);\
2395})
2396
2397#define _mm512_roundscale_round_ps( __A, __imm, __R) __extension__ ({ \
2398 (__m512)__builtin_ia32_rndscaleps_mask ((__v16sf)( __A),(int) __imm,\
2399 (__v16sf) _mm512_undefined_ps (),\
2400 (__mmask16) -1,(int) __R);\
2401})
2402
Craig Topper72c7d512015-02-01 07:35:35 +00002403#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002404 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2405 (__v8df)(__m512d)(A), (__mmask8)-1, \
2406 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002407
Craig Topper8c18e112016-05-17 04:41:50 +00002408#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2409 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2410 (__v8df)(__m512d)(A), (__mmask8)(B), \
2411 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002412
Craig Topper8c18e112016-05-17 04:41:50 +00002413#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2414 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2415 (__v8df)_mm512_setzero_pd(), \
2416 (__mmask8)(A), \
2417 _MM_FROUND_CUR_DIRECTION); })
2418
Michael Zuckermanc301c192016-06-01 07:35:44 +00002419#define _mm512_mask_roundscale_round_pd( __A, __B, __C, __imm ,__R) __extension__ ({ \
2420 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __C),(int)__imm,\
2421 (__v8df)( __A),\
2422 (__mmask8)( __B),(int)__R);\
2423})
2424
2425#define _mm512_maskz_roundscale_round_pd( __A, __B, __imm, __R) __extension__ ({ \
2426 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __B),(int)__imm,\
2427 (__v8df)_mm512_setzero_pd (),\
2428 (__mmask8)( __A),(int) __R);\
2429})
2430
2431#define _mm512_roundscale_round_pd( __A, __imm , __R) __extension__ ({ \
2432 (__m512d)__builtin_ia32_rndscalepd_mask ((__v8df)( __A),(int) __imm,\
2433 (__v8df)_mm512_undefined_pd (),\
2434 (__mmask8) -1,(int) __R);\
2435})
2436
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002437#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002438 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2439 (__v8df)(__m512d)(B), \
2440 (__v8df)(__m512d)(C), (__mmask8)-1, \
2441 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002442
2443
2444#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002445 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2446 (__v8df)(__m512d)(B), \
2447 (__v8df)(__m512d)(C), \
2448 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002449
2450
2451#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002452 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2453 (__v8df)(__m512d)(B), \
2454 (__v8df)(__m512d)(C), \
2455 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002456
2457
2458#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002459 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2460 (__v8df)(__m512d)(B), \
2461 (__v8df)(__m512d)(C), \
2462 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002463
2464
2465#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002466 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2467 (__v8df)(__m512d)(B), \
2468 -(__v8df)(__m512d)(C), \
2469 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002470
2471
2472#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002473 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2474 (__v8df)(__m512d)(B), \
2475 -(__v8df)(__m512d)(C), \
2476 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002477
2478
2479#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002480 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2481 (__v8df)(__m512d)(B), \
2482 -(__v8df)(__m512d)(C), \
2483 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002484
2485
2486#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002487 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2488 (__v8df)(__m512d)(B), \
2489 (__v8df)(__m512d)(C), (__mmask8)-1, \
2490 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002491
2492
2493#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002494 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2495 (__v8df)(__m512d)(B), \
2496 (__v8df)(__m512d)(C), \
2497 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002498
2499
2500#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002501 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2502 (__v8df)(__m512d)(B), \
2503 (__v8df)(__m512d)(C), \
2504 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002505
2506
2507#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002508 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2509 (__v8df)(__m512d)(B), \
2510 -(__v8df)(__m512d)(C), \
2511 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002512
2513
2514#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002515 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2516 (__v8df)(__m512d)(B), \
2517 -(__v8df)(__m512d)(C), \
2518 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002519
2520
Michael Kupersteine45af542015-06-30 13:36:19 +00002521static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002522_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2523{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002524 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2525 (__v8df) __B,
2526 (__v8df) __C,
2527 (__mmask8) -1,
2528 _MM_FROUND_CUR_DIRECTION);
2529}
2530
Michael Kupersteine45af542015-06-30 13:36:19 +00002531static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002532_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2533{
2534 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2535 (__v8df) __B,
2536 (__v8df) __C,
2537 (__mmask8) __U,
2538 _MM_FROUND_CUR_DIRECTION);
2539}
2540
Michael Kupersteine45af542015-06-30 13:36:19 +00002541static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002542_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2543{
2544 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2545 (__v8df) __B,
2546 (__v8df) __C,
2547 (__mmask8) __U,
2548 _MM_FROUND_CUR_DIRECTION);
2549}
2550
Michael Kupersteine45af542015-06-30 13:36:19 +00002551static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002552_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2553{
2554 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2555 (__v8df) __B,
2556 (__v8df) __C,
2557 (__mmask8) __U,
2558 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002559}
2560
Michael Kupersteine45af542015-06-30 13:36:19 +00002561static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002562_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2563{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002564 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2565 (__v8df) __B,
2566 -(__v8df) __C,
2567 (__mmask8) -1,
2568 _MM_FROUND_CUR_DIRECTION);
2569}
2570
Michael Kupersteine45af542015-06-30 13:36:19 +00002571static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002572_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2573{
2574 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2575 (__v8df) __B,
2576 -(__v8df) __C,
2577 (__mmask8) __U,
2578 _MM_FROUND_CUR_DIRECTION);
2579}
2580
Michael Kupersteine45af542015-06-30 13:36:19 +00002581static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002582_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2583{
2584 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2585 (__v8df) __B,
2586 -(__v8df) __C,
2587 (__mmask8) __U,
2588 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002589}
2590
Michael Kupersteine45af542015-06-30 13:36:19 +00002591static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002592_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2593{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002594 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2595 (__v8df) __B,
2596 (__v8df) __C,
2597 (__mmask8) -1,
2598 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002599}
2600
Michael Kupersteine45af542015-06-30 13:36:19 +00002601static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002602_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2603{
2604 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2605 (__v8df) __B,
2606 (__v8df) __C,
2607 (__mmask8) __U,
2608 _MM_FROUND_CUR_DIRECTION);
2609}
2610
Michael Kupersteine45af542015-06-30 13:36:19 +00002611static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002612_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2613{
2614 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2615 (__v8df) __B,
2616 (__v8df) __C,
2617 (__mmask8) __U,
2618 _MM_FROUND_CUR_DIRECTION);
2619}
2620
Michael Kupersteine45af542015-06-30 13:36:19 +00002621static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002622_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2623{
2624 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2625 (__v8df) __B,
2626 -(__v8df) __C,
2627 (__mmask8) -1,
2628 _MM_FROUND_CUR_DIRECTION);
2629}
2630
Michael Kupersteine45af542015-06-30 13:36:19 +00002631static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002632_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2633{
2634 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2635 (__v8df) __B,
2636 -(__v8df) __C,
2637 (__mmask8) __U,
2638 _MM_FROUND_CUR_DIRECTION);
2639}
2640
2641#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002642 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2643 (__v16sf)(__m512)(B), \
2644 (__v16sf)(__m512)(C), (__mmask16)-1, \
2645 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002646
2647
2648#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002649 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2650 (__v16sf)(__m512)(B), \
2651 (__v16sf)(__m512)(C), \
2652 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002653
2654
2655#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002656 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2657 (__v16sf)(__m512)(B), \
2658 (__v16sf)(__m512)(C), \
2659 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002660
2661
2662#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002663 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2664 (__v16sf)(__m512)(B), \
2665 (__v16sf)(__m512)(C), \
2666 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002667
2668
2669#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002670 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2671 (__v16sf)(__m512)(B), \
2672 -(__v16sf)(__m512)(C), \
2673 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002674
2675
2676#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002677 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2678 (__v16sf)(__m512)(B), \
2679 -(__v16sf)(__m512)(C), \
2680 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002681
2682
2683#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002684 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2685 (__v16sf)(__m512)(B), \
2686 -(__v16sf)(__m512)(C), \
2687 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002688
2689
2690#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002691 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2692 (__v16sf)(__m512)(B), \
2693 (__v16sf)(__m512)(C), (__mmask16)-1, \
2694 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002695
2696
2697#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002698 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2699 (__v16sf)(__m512)(B), \
2700 (__v16sf)(__m512)(C), \
2701 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002702
2703
2704#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002705 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2706 (__v16sf)(__m512)(B), \
2707 (__v16sf)(__m512)(C), \
2708 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002709
2710
2711#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002712 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2713 (__v16sf)(__m512)(B), \
2714 -(__v16sf)(__m512)(C), \
2715 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002716
2717
2718#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002719 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2720 (__v16sf)(__m512)(B), \
2721 -(__v16sf)(__m512)(C), \
2722 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002723
2724
Michael Kupersteine45af542015-06-30 13:36:19 +00002725static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002726_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2727{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002728 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2729 (__v16sf) __B,
2730 (__v16sf) __C,
2731 (__mmask16) -1,
2732 _MM_FROUND_CUR_DIRECTION);
2733}
2734
Michael Kupersteine45af542015-06-30 13:36:19 +00002735static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002736_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2737{
2738 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2739 (__v16sf) __B,
2740 (__v16sf) __C,
2741 (__mmask16) __U,
2742 _MM_FROUND_CUR_DIRECTION);
2743}
2744
Michael Kupersteine45af542015-06-30 13:36:19 +00002745static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002746_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2747{
2748 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2749 (__v16sf) __B,
2750 (__v16sf) __C,
2751 (__mmask16) __U,
2752 _MM_FROUND_CUR_DIRECTION);
2753}
2754
Michael Kupersteine45af542015-06-30 13:36:19 +00002755static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002756_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2757{
2758 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2759 (__v16sf) __B,
2760 (__v16sf) __C,
2761 (__mmask16) __U,
2762 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002763}
2764
Michael Kupersteine45af542015-06-30 13:36:19 +00002765static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002766_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2767{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002768 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2769 (__v16sf) __B,
2770 -(__v16sf) __C,
2771 (__mmask16) -1,
2772 _MM_FROUND_CUR_DIRECTION);
2773}
2774
Michael Kupersteine45af542015-06-30 13:36:19 +00002775static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002776_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2777{
2778 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2779 (__v16sf) __B,
2780 -(__v16sf) __C,
2781 (__mmask16) __U,
2782 _MM_FROUND_CUR_DIRECTION);
2783}
2784
Michael Kupersteine45af542015-06-30 13:36:19 +00002785static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002786_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2787{
2788 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2789 (__v16sf) __B,
2790 -(__v16sf) __C,
2791 (__mmask16) __U,
2792 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002793}
2794
Michael Kupersteine45af542015-06-30 13:36:19 +00002795static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002796_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2797{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002798 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2799 (__v16sf) __B,
2800 (__v16sf) __C,
2801 (__mmask16) -1,
2802 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002803}
2804
Michael Kupersteine45af542015-06-30 13:36:19 +00002805static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002806_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2807{
2808 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2809 (__v16sf) __B,
2810 (__v16sf) __C,
2811 (__mmask16) __U,
2812 _MM_FROUND_CUR_DIRECTION);
2813}
2814
Michael Kupersteine45af542015-06-30 13:36:19 +00002815static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002816_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2817{
2818 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2819 (__v16sf) __B,
2820 (__v16sf) __C,
2821 (__mmask16) __U,
2822 _MM_FROUND_CUR_DIRECTION);
2823}
2824
Michael Kupersteine45af542015-06-30 13:36:19 +00002825static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002826_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2827{
2828 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2829 (__v16sf) __B,
2830 -(__v16sf) __C,
2831 (__mmask16) -1,
2832 _MM_FROUND_CUR_DIRECTION);
2833}
2834
Michael Kupersteine45af542015-06-30 13:36:19 +00002835static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002836_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2837{
2838 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2839 (__v16sf) __B,
2840 -(__v16sf) __C,
2841 (__mmask16) __U,
2842 _MM_FROUND_CUR_DIRECTION);
2843}
2844
2845#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002846 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2847 (__v8df)(__m512d)(B), \
2848 (__v8df)(__m512d)(C), \
2849 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002850
2851
2852#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002853 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2854 (__v8df)(__m512d)(B), \
2855 (__v8df)(__m512d)(C), \
2856 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002857
2858
2859#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002860 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2861 (__v8df)(__m512d)(B), \
2862 (__v8df)(__m512d)(C), \
2863 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002864
2865
2866#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002867 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2868 (__v8df)(__m512d)(B), \
2869 (__v8df)(__m512d)(C), \
2870 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002871
2872
2873#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002874 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2875 (__v8df)(__m512d)(B), \
2876 -(__v8df)(__m512d)(C), \
2877 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002878
2879
2880#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002881 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2882 (__v8df)(__m512d)(B), \
2883 -(__v8df)(__m512d)(C), \
2884 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002885
2886
2887#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002888 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2889 (__v8df)(__m512d)(B), \
2890 -(__v8df)(__m512d)(C), \
2891 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002892
2893
Michael Kupersteine45af542015-06-30 13:36:19 +00002894static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002895_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2896{
2897 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2898 (__v8df) __B,
2899 (__v8df) __C,
2900 (__mmask8) -1,
2901 _MM_FROUND_CUR_DIRECTION);
2902}
2903
Michael Kupersteine45af542015-06-30 13:36:19 +00002904static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002905_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2906{
2907 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2908 (__v8df) __B,
2909 (__v8df) __C,
2910 (__mmask8) __U,
2911 _MM_FROUND_CUR_DIRECTION);
2912}
2913
Michael Kupersteine45af542015-06-30 13:36:19 +00002914static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002915_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2916{
2917 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2918 (__v8df) __B,
2919 (__v8df) __C,
2920 (__mmask8) __U,
2921 _MM_FROUND_CUR_DIRECTION);
2922}
2923
Michael Kupersteine45af542015-06-30 13:36:19 +00002924static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002925_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2926{
2927 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2928 (__v8df) __B,
2929 (__v8df) __C,
2930 (__mmask8) __U,
2931 _MM_FROUND_CUR_DIRECTION);
2932}
2933
Michael Kupersteine45af542015-06-30 13:36:19 +00002934static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002935_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2936{
2937 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2938 (__v8df) __B,
2939 -(__v8df) __C,
2940 (__mmask8) -1,
2941 _MM_FROUND_CUR_DIRECTION);
2942}
2943
Michael Kupersteine45af542015-06-30 13:36:19 +00002944static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002945_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2946{
2947 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2948 (__v8df) __B,
2949 -(__v8df) __C,
2950 (__mmask8) __U,
2951 _MM_FROUND_CUR_DIRECTION);
2952}
2953
Michael Kupersteine45af542015-06-30 13:36:19 +00002954static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002955_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2956{
2957 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2958 (__v8df) __B,
2959 -(__v8df) __C,
2960 (__mmask8) __U,
2961 _MM_FROUND_CUR_DIRECTION);
2962}
2963
2964#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002965 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2966 (__v16sf)(__m512)(B), \
2967 (__v16sf)(__m512)(C), \
2968 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002969
2970
2971#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002972 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2973 (__v16sf)(__m512)(B), \
2974 (__v16sf)(__m512)(C), \
2975 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002976
2977
2978#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002979 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2980 (__v16sf)(__m512)(B), \
2981 (__v16sf)(__m512)(C), \
2982 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002983
2984
2985#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002986 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2987 (__v16sf)(__m512)(B), \
2988 (__v16sf)(__m512)(C), \
2989 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002990
2991
2992#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002993 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2994 (__v16sf)(__m512)(B), \
2995 -(__v16sf)(__m512)(C), \
2996 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002997
2998
2999#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003000 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3001 (__v16sf)(__m512)(B), \
3002 -(__v16sf)(__m512)(C), \
3003 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003004
3005
3006#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003007 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3008 (__v16sf)(__m512)(B), \
3009 -(__v16sf)(__m512)(C), \
3010 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003011
3012
Michael Kupersteine45af542015-06-30 13:36:19 +00003013static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003014_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
3015{
3016 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3017 (__v16sf) __B,
3018 (__v16sf) __C,
3019 (__mmask16) -1,
3020 _MM_FROUND_CUR_DIRECTION);
3021}
3022
Michael Kupersteine45af542015-06-30 13:36:19 +00003023static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003024_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3025{
3026 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3027 (__v16sf) __B,
3028 (__v16sf) __C,
3029 (__mmask16) __U,
3030 _MM_FROUND_CUR_DIRECTION);
3031}
3032
Michael Kupersteine45af542015-06-30 13:36:19 +00003033static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003034_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3035{
3036 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3037 (__v16sf) __B,
3038 (__v16sf) __C,
3039 (__mmask16) __U,
3040 _MM_FROUND_CUR_DIRECTION);
3041}
3042
Michael Kupersteine45af542015-06-30 13:36:19 +00003043static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003044_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3045{
3046 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3047 (__v16sf) __B,
3048 (__v16sf) __C,
3049 (__mmask16) __U,
3050 _MM_FROUND_CUR_DIRECTION);
3051}
3052
Michael Kupersteine45af542015-06-30 13:36:19 +00003053static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003054_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3055{
3056 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3057 (__v16sf) __B,
3058 -(__v16sf) __C,
3059 (__mmask16) -1,
3060 _MM_FROUND_CUR_DIRECTION);
3061}
3062
Michael Kupersteine45af542015-06-30 13:36:19 +00003063static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003064_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3065{
3066 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3067 (__v16sf) __B,
3068 -(__v16sf) __C,
3069 (__mmask16) __U,
3070 _MM_FROUND_CUR_DIRECTION);
3071}
3072
Michael Kupersteine45af542015-06-30 13:36:19 +00003073static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003074_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3075{
3076 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3077 (__v16sf) __B,
3078 -(__v16sf) __C,
3079 (__mmask16) __U,
3080 _MM_FROUND_CUR_DIRECTION);
3081}
3082
3083#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003084 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3085 (__v8df)(__m512d)(B), \
3086 (__v8df)(__m512d)(C), \
3087 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003088
3089
Michael Kupersteine45af542015-06-30 13:36:19 +00003090static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003091_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3092{
3093 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3094 (__v8df) __B,
3095 (__v8df) __C,
3096 (__mmask8) __U,
3097 _MM_FROUND_CUR_DIRECTION);
3098}
3099
3100#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003101 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3102 (__v16sf)(__m512)(B), \
3103 (__v16sf)(__m512)(C), \
3104 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003105
3106
Michael Kupersteine45af542015-06-30 13:36:19 +00003107static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003108_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3109{
3110 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3111 (__v16sf) __B,
3112 (__v16sf) __C,
3113 (__mmask16) __U,
3114 _MM_FROUND_CUR_DIRECTION);
3115}
3116
3117#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003118 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3119 (__v8df)(__m512d)(B), \
3120 (__v8df)(__m512d)(C), \
3121 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003122
3123
Michael Kupersteine45af542015-06-30 13:36:19 +00003124static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003125_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3126{
3127 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3128 (__v8df) __B,
3129 (__v8df) __C,
3130 (__mmask8) __U,
3131 _MM_FROUND_CUR_DIRECTION);
3132}
3133
3134#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003135 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3136 (__v16sf)(__m512)(B), \
3137 (__v16sf)(__m512)(C), \
3138 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003139
3140
Michael Kupersteine45af542015-06-30 13:36:19 +00003141static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003142_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3143{
3144 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3145 (__v16sf) __B,
3146 (__v16sf) __C,
3147 (__mmask16) __U,
3148 _MM_FROUND_CUR_DIRECTION);
3149}
3150
3151#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003152 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3153 (__v8df)(__m512d)(B), \
3154 (__v8df)(__m512d)(C), \
3155 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003156
3157
Michael Kupersteine45af542015-06-30 13:36:19 +00003158static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003159_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3160{
3161 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3162 (__v8df) __B,
3163 (__v8df) __C,
3164 (__mmask8) __U,
3165 _MM_FROUND_CUR_DIRECTION);
3166}
3167
3168#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003169 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3170 (__v16sf)(__m512)(B), \
3171 (__v16sf)(__m512)(C), \
3172 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003173
3174
Michael Kupersteine45af542015-06-30 13:36:19 +00003175static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003176_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3177{
3178 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3179 (__v16sf) __B,
3180 (__v16sf) __C,
3181 (__mmask16) __U,
3182 _MM_FROUND_CUR_DIRECTION);
3183}
3184
3185#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003186 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3187 (__v8df)(__m512d)(B), \
3188 (__v8df)(__m512d)(C), \
3189 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003190
3191
3192#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003193 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3194 (__v8df)(__m512d)(B), \
3195 (__v8df)(__m512d)(C), \
3196 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003197
3198
Michael Kupersteine45af542015-06-30 13:36:19 +00003199static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003200_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3201{
3202 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3203 (__v8df) __B,
3204 (__v8df) __C,
3205 (__mmask8) __U,
3206 _MM_FROUND_CUR_DIRECTION);
3207}
3208
Michael Kupersteine45af542015-06-30 13:36:19 +00003209static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003210_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3211{
3212 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3213 (__v8df) __B,
3214 (__v8df) __C,
3215 (__mmask8) __U,
3216 _MM_FROUND_CUR_DIRECTION);
3217}
3218
3219#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003220 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3221 (__v16sf)(__m512)(B), \
3222 (__v16sf)(__m512)(C), \
3223 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003224
3225
3226#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003227 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3228 (__v16sf)(__m512)(B), \
3229 (__v16sf)(__m512)(C), \
3230 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003231
3232
Michael Kupersteine45af542015-06-30 13:36:19 +00003233static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003234_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3235{
3236 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3237 (__v16sf) __B,
3238 (__v16sf) __C,
3239 (__mmask16) __U,
3240 _MM_FROUND_CUR_DIRECTION);
3241}
3242
Michael Kupersteine45af542015-06-30 13:36:19 +00003243static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003244_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3245{
3246 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3247 (__v16sf) __B,
3248 (__v16sf) __C,
3249 (__mmask16) __U,
3250 _MM_FROUND_CUR_DIRECTION);
3251}
3252
3253
3254
Adam Nemet0d5bb552014-07-28 17:14:40 +00003255/* Vector permutations */
3256
Michael Kupersteine45af542015-06-30 13:36:19 +00003257static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003258_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3259{
3260 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3261 /* idx */ ,
3262 (__v16si) __A,
3263 (__v16si) __B,
3264 (__mmask16) -1);
3265}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003266
3267static __inline__ __m512i __DEFAULT_FN_ATTRS
3268_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3269 __m512i __I, __m512i __B)
3270{
3271 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3272 /* idx */ ,
3273 (__v16si) __A,
3274 (__v16si) __B,
3275 (__mmask16) __U);
3276}
3277
3278static __inline__ __m512i __DEFAULT_FN_ATTRS
3279_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3280 __m512i __I, __m512i __B)
3281{
3282 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3283 /* idx */ ,
3284 (__v16si) __A,
3285 (__v16si) __B,
3286 (__mmask16) __U);
3287}
3288
Michael Kupersteine45af542015-06-30 13:36:19 +00003289static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003290_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3291{
3292 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3293 /* idx */ ,
3294 (__v8di) __A,
3295 (__v8di) __B,
3296 (__mmask8) -1);
3297}
3298
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003299static __inline__ __m512i __DEFAULT_FN_ATTRS
3300_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3301 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003302{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003303 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003304 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003305 (__v8di) __A,
3306 (__v8di) __B,
3307 (__mmask8) __U);
3308}
3309
3310
3311static __inline__ __m512i __DEFAULT_FN_ATTRS
3312_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3313 __m512i __I, __m512i __B)
3314{
3315 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3316 /* idx */ ,
3317 (__v8di) __A,
3318 (__v8di) __B,
3319 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003320}
3321
Craig Topper67826a52015-02-01 07:35:40 +00003322#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3323 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003324 (__v8di)(__m512i)(B), (int)(I), \
3325 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003326 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003327
Craig Topper8c18e112016-05-17 04:41:50 +00003328#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3329 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3330 (__v8di)(__m512i)(B), (int)(imm), \
3331 (__v8di)(__m512i)(W), \
3332 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003333
Craig Topper8c18e112016-05-17 04:41:50 +00003334#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3335 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3336 (__v8di)(__m512i)(B), (int)(imm), \
3337 (__v8di)_mm512_setzero_si512(), \
3338 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003339
Craig Topper67826a52015-02-01 07:35:40 +00003340#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003341 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3342 (__v16si)(__m512i)(B), (int)(I), \
3343 (__v16si)_mm512_setzero_si512(), \
3344 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003345
Craig Topper8c18e112016-05-17 04:41:50 +00003346#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3347 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3348 (__v16si)(__m512i)(B), (int)(imm), \
3349 (__v16si)(__m512i)(W), \
3350 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003351
Craig Topper8c18e112016-05-17 04:41:50 +00003352#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3353 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3354 (__v16si)(__m512i)(B), (int)(imm), \
3355 (__v16si)_mm512_setzero_si512(), \
3356 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003357/* Vector Extract */
3358
3359#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003360 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3361 (__v4df)_mm256_setzero_si256(), \
3362 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003363
Craig Topper8c18e112016-05-17 04:41:50 +00003364#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3365 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3366 (__v4df)(__m256d)(W), \
3367 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003368
Craig Topper8c18e112016-05-17 04:41:50 +00003369#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3370 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3371 (__v4df)_mm256_setzero_pd(), \
3372 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003373
Adam Nemetf893ede2015-01-19 20:12:05 +00003374#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003375 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3376 (__v4sf)_mm_setzero_ps(), \
3377 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003378
Craig Topper8c18e112016-05-17 04:41:50 +00003379#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3380 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3381 (__v4sf)(__m128)(W), \
3382 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003383
Craig Topper8c18e112016-05-17 04:41:50 +00003384#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3385 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3386 (__v4sf)_mm_setzero_ps(), \
3387 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003388/* Vector Blend */
3389
Michael Kupersteine45af542015-06-30 13:36:19 +00003390static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003391_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3392{
3393 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3394 (__v8df) __W,
3395 (__mmask8) __U);
3396}
3397
Michael Kupersteine45af542015-06-30 13:36:19 +00003398static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003399_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3400{
3401 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3402 (__v16sf) __W,
3403 (__mmask16) __U);
3404}
3405
Michael Kupersteine45af542015-06-30 13:36:19 +00003406static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003407_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3408{
3409 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3410 (__v8di) __W,
3411 (__mmask8) __U);
3412}
3413
Michael Kupersteine45af542015-06-30 13:36:19 +00003414static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003415_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3416{
3417 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3418 (__v16si) __W,
3419 (__mmask16) __U);
3420}
3421
3422/* Compare */
3423
Craig Topper53565c62015-02-01 22:27:40 +00003424#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3425 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003426 (__v16sf)(__m512)(B), (int)(P), \
3427 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003428
Craig Topper53565c62015-02-01 22:27:40 +00003429#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3430 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003431 (__v16sf)(__m512)(B), (int)(P), \
3432 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003433
3434#define _mm512_cmp_ps_mask(A, B, P) \
3435 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3436
3437#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3438 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3439
3440#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3441 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003442 (__v8df)(__m512d)(B), (int)(P), \
3443 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003444
3445#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3446 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003447 (__v8df)(__m512d)(B), (int)(P), \
3448 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003449
3450#define _mm512_cmp_pd_mask(A, B, P) \
3451 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3452
3453#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3454 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003455
3456/* Conversion */
3457
Michael Kupersteine45af542015-06-30 13:36:19 +00003458static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003459_mm512_cvttps_epu32(__m512 __A)
3460{
3461 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3462 (__v16si)
3463 _mm512_setzero_si512 (),
3464 (__mmask16) -1,
3465 _MM_FROUND_CUR_DIRECTION);
3466}
3467
Michael Zuckermanf1544752016-05-09 10:32:51 +00003468static __inline__ __m512i __DEFAULT_FN_ATTRS
3469_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3470{
3471 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3472 (__v16si) __W,
3473 (__mmask16) __U,
3474 _MM_FROUND_CUR_DIRECTION);
3475}
3476
3477static __inline__ __m512i __DEFAULT_FN_ATTRS
3478_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3479{
3480 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3481 (__v16si) _mm512_setzero_si512 (),
3482 (__mmask16) __U,
3483 _MM_FROUND_CUR_DIRECTION);
3484}
3485
Craig Topper72c7d512015-02-01 07:35:35 +00003486#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003487 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003488 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003489 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003490
Michael Zuckerman186d8672016-05-31 11:27:34 +00003491#define _mm512_mask_cvt_roundepi32_ps( __W, __U, __A, __R) __extension__ ({ \
3492__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3493 (__v16sf)( __W),\
3494 (__mmask16)( __U),( __R));\
3495})
3496
3497#define _mm512_maskz_cvt_roundepi32_ps( __U, __A, __R) __extension__ ({ \
3498__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3499 (__v16sf)\
3500 _mm512_setzero_ps (),\
3501 (__mmask16)( __U),( __R));\
3502})
3503
Craig Topper72c7d512015-02-01 07:35:35 +00003504#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003505 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003506 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003507 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003508
Michael Zuckerman186d8672016-05-31 11:27:34 +00003509#define _mm512_mask_cvt_roundepu32_ps( __W, __U, __A, __R) __extension__ ({ \
3510__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3511 (__v16sf)( __W),\
3512 (__mmask16)( __U),( __R));\
3513})
3514
3515#define _mm512_maskz_cvt_roundepu32_ps( __U, __A, __R) __extension__ ({ \
3516__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3517 (__v16sf)\
3518 _mm512_setzero_ps (),\
3519 (__mmask16)( __U),( __R));\
3520})
3521
Michael Zuckermanf1544752016-05-09 10:32:51 +00003522static __inline__ __m512 __DEFAULT_FN_ATTRS
3523_mm512_cvtepu32_ps (__m512i __A)
3524{
3525 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3526 (__v16sf) _mm512_undefined_ps (),
3527 (__mmask16) -1,
3528 _MM_FROUND_CUR_DIRECTION);
3529}
3530
3531static __inline__ __m512 __DEFAULT_FN_ATTRS
3532_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3533{
3534 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3535 (__v16sf) __W,
3536 (__mmask16) __U,
3537 _MM_FROUND_CUR_DIRECTION);
3538}
3539
3540static __inline__ __m512 __DEFAULT_FN_ATTRS
3541_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3542{
3543 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3544 (__v16sf) _mm512_setzero_ps (),
3545 (__mmask16) __U,
3546 _MM_FROUND_CUR_DIRECTION);
3547}
3548
Michael Kupersteine45af542015-06-30 13:36:19 +00003549static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003550_mm512_cvtepi32_pd(__m256i __A)
3551{
3552 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003553 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003554 _mm512_setzero_pd (),
3555 (__mmask8) -1);
3556}
3557
Michael Zuckermanf1544752016-05-09 10:32:51 +00003558static __inline__ __m512d __DEFAULT_FN_ATTRS
3559_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3560{
3561 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3562 (__v8df) __W,
3563 (__mmask8) __U);
3564}
3565
3566static __inline__ __m512d __DEFAULT_FN_ATTRS
3567_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3568{
3569 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3570 (__v8df) _mm512_setzero_pd (),
3571 (__mmask8) __U);
3572}
3573
3574static __inline__ __m512 __DEFAULT_FN_ATTRS
3575_mm512_cvtepi32_ps (__m512i __A)
3576{
3577 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3578 (__v16sf) _mm512_undefined_ps (),
3579 (__mmask16) -1,
3580 _MM_FROUND_CUR_DIRECTION);
3581}
3582
3583static __inline__ __m512 __DEFAULT_FN_ATTRS
3584_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3585{
3586 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3587 (__v16sf) __W,
3588 (__mmask16) __U,
3589 _MM_FROUND_CUR_DIRECTION);
3590}
3591
3592static __inline__ __m512 __DEFAULT_FN_ATTRS
3593_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3594{
3595 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3596 (__v16sf) _mm512_setzero_ps (),
3597 (__mmask16) __U,
3598 _MM_FROUND_CUR_DIRECTION);
3599}
3600
Michael Kupersteine45af542015-06-30 13:36:19 +00003601static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003602_mm512_cvtepu32_pd(__m256i __A)
3603{
3604 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3605 (__v8df)
3606 _mm512_setzero_pd (),
3607 (__mmask8) -1);
3608}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003609
Michael Zuckermanf1544752016-05-09 10:32:51 +00003610static __inline__ __m512d __DEFAULT_FN_ATTRS
3611_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3612{
3613 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3614 (__v8df) __W,
3615 (__mmask8) __U);
3616}
3617
3618static __inline__ __m512d __DEFAULT_FN_ATTRS
3619_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3620{
3621 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3622 (__v8df) _mm512_setzero_pd (),
3623 (__mmask8) __U);
3624}
3625
Craig Topper72c7d512015-02-01 07:35:35 +00003626#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003627 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003628 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003629 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003630
Michael Zuckerman186d8672016-05-31 11:27:34 +00003631#define _mm512_mask_cvt_roundpd_ps(W, U, A, R) __extension__ ({ \
3632 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3633 (__v8sf)(W), \
3634 (__mmask8)(U), (int)(R)); })
3635
3636#define _mm512_maskz_cvt_roundpd_ps(U, A, R) __extension__ ({ \
3637 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3638 (__v8sf)_mm256_setzero_ps(), \
3639 (__mmask8)(U), (int)(R)); })
3640
Michael Zuckermanf1544752016-05-09 10:32:51 +00003641static __inline__ __m256 __DEFAULT_FN_ATTRS
3642_mm512_cvtpd_ps (__m512d __A)
3643{
3644 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3645 (__v8sf) _mm256_undefined_ps (),
3646 (__mmask8) -1,
3647 _MM_FROUND_CUR_DIRECTION);
3648}
3649
3650static __inline__ __m256 __DEFAULT_FN_ATTRS
3651_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3652{
3653 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3654 (__v8sf) __W,
3655 (__mmask8) __U,
3656 _MM_FROUND_CUR_DIRECTION);
3657}
3658
3659static __inline__ __m256 __DEFAULT_FN_ATTRS
3660_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3661{
3662 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3663 (__v8sf) _mm256_setzero_ps (),
3664 (__mmask8) __U,
3665 _MM_FROUND_CUR_DIRECTION);
3666}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003667
Craig Topper72c7d512015-02-01 07:35:35 +00003668#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003669 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003670 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003671 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003672
Craig Topper8c18e112016-05-17 04:41:50 +00003673#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3674 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3675 (__v16hi)(__m256i)(U), \
3676 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003677
Craig Topper8c18e112016-05-17 04:41:50 +00003678#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3679 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3680 (__v16hi)_mm256_setzero_si256(), \
3681 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003682
3683
Michael Kupersteine45af542015-06-30 13:36:19 +00003684static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003685_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003686{
3687 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003688 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003689 _mm512_setzero_ps (),
3690 (__mmask16) -1,
3691 _MM_FROUND_CUR_DIRECTION);
3692}
3693
Michael Zuckermanf1544752016-05-09 10:32:51 +00003694static __inline__ __m512 __DEFAULT_FN_ATTRS
3695_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003696{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003697 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3698 (__v16sf) __W,
3699 (__mmask16) __U,
3700 _MM_FROUND_CUR_DIRECTION);
3701}
3702
3703static __inline__ __m512 __DEFAULT_FN_ATTRS
3704_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3705{
3706 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3707 (__v16sf) _mm512_setzero_ps (),
3708 (__mmask16) __U,
3709 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003710}
3711
Michael Zuckerman186d8672016-05-31 11:27:34 +00003712#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3713 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3714 (__v8si)_mm256_setzero_si256(), \
3715 (__mmask8)-1, (int)(R)); })
3716
3717#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, R) __extension__ ({ \
3718 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3719 (__v8si)(W), \
3720 (__mmask8)(U), (int)(R)); })
3721
3722#define _mm512_maskz_cvtt_roundpd_epi32( U, A, R) __extension__ ({ \
3723 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3724 (__v8si)_mm256_setzero_si256(), \
3725 (__mmask8)(U), (int)(R)); })
3726
Michael Kupersteine45af542015-06-30 13:36:19 +00003727static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003728_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003729{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003730 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003731 (__v8si)_mm256_setzero_si256(),
3732 (__mmask8) -1,
3733 _MM_FROUND_CUR_DIRECTION);
3734}
3735
Michael Zuckermanf1544752016-05-09 10:32:51 +00003736static __inline__ __m256i __DEFAULT_FN_ATTRS
3737_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3738{
3739 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3740 (__v8si) __W,
3741 (__mmask8) __U,
3742 _MM_FROUND_CUR_DIRECTION);
3743}
3744
3745static __inline__ __m256i __DEFAULT_FN_ATTRS
3746_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3747{
3748 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3749 (__v8si) _mm256_setzero_si256 (),
3750 (__mmask8) __U,
3751 _MM_FROUND_CUR_DIRECTION);
3752}
3753
Craig Topper72c7d512015-02-01 07:35:35 +00003754#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003755 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003756 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003757 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003758
Michael Zuckerman186d8672016-05-31 11:27:34 +00003759#define _mm512_mask_cvtt_roundps_epi32( W, U, A, R) __extension__ ({ \
3760 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3761 (__v16si)(W), \
3762 (__mmask16)(U), (int)(R)); })
3763
3764#define _mm512_maskz_cvtt_roundps_epi32( U, A, R) __extension__ ({ \
3765 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3766 (__v16si)_mm512_setzero_si512(), \
3767 (__mmask16)(U), (int)(R)); })
3768
Michael Zuckermanf1544752016-05-09 10:32:51 +00003769static __inline __m512i __DEFAULT_FN_ATTRS
3770_mm512_cvttps_epi32(__m512 __a)
3771{
3772 return (__m512i)
3773 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3774 (__v16si) _mm512_setzero_si512 (),
3775 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3776}
3777
3778static __inline__ __m512i __DEFAULT_FN_ATTRS
3779_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3780{
3781 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3782 (__v16si) __W,
3783 (__mmask16) __U,
3784 _MM_FROUND_CUR_DIRECTION);
3785}
3786
3787static __inline__ __m512i __DEFAULT_FN_ATTRS
3788_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3789{
3790 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3791 (__v16si) _mm512_setzero_si512 (),
3792 (__mmask16) __U,
3793 _MM_FROUND_CUR_DIRECTION);
3794}
Craig Topper72c7d512015-02-01 07:35:35 +00003795
3796#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003797 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003798 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003799 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003800
Michael Zuckerman186d8672016-05-31 11:27:34 +00003801#define _mm512_mask_cvt_roundps_epi32( __W, __U, __A, __R) __extension__ ({ \
3802 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
3803 (__v16si)( __W),\
3804 (__mmask16)( __U),( __R));\
3805})
3806
3807#define _mm512_maskz_cvt_roundps_epi32( __U, __A, __R) __extension__ ({ \
3808 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
3809 (__v16si)\
3810 _mm512_setzero_si512 (),\
3811 (__mmask16)( __U),( __R));\
3812})
3813
Michael Zuckermanf1544752016-05-09 10:32:51 +00003814static __inline__ __m512i __DEFAULT_FN_ATTRS
3815_mm512_cvtps_epi32 (__m512 __A)
3816{
3817 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3818 (__v16si) _mm512_undefined_epi32 (),
3819 (__mmask16) -1,
3820 _MM_FROUND_CUR_DIRECTION);
3821}
3822
3823static __inline__ __m512i __DEFAULT_FN_ATTRS
3824_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3825{
3826 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3827 (__v16si) __W,
3828 (__mmask16) __U,
3829 _MM_FROUND_CUR_DIRECTION);
3830}
3831
3832static __inline__ __m512i __DEFAULT_FN_ATTRS
3833_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3834{
3835 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3836 (__v16si)
3837 _mm512_setzero_si512 (),
3838 (__mmask16) __U,
3839 _MM_FROUND_CUR_DIRECTION);
3840}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003841
Craig Topper72c7d512015-02-01 07:35:35 +00003842#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003843 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003844 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003845 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003846
Michael Zuckerman186d8672016-05-31 11:27:34 +00003847#define _mm512_mask_cvt_roundpd_epi32( W, U, A, R) __extension__ ({ \
3848 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3849 (__v8si)(W), \
3850 (__mmask8)(U), (int)(R)); })
3851
3852#define _mm512_maskz_cvt_roundpd_epi32(U, A, R) __extension__ ({ \
3853 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3854 (__v8si)_mm256_setzero_si256(), \
3855 (__mmask8)(U), (int)(R)); })
3856
Michael Zuckermanf1544752016-05-09 10:32:51 +00003857static __inline__ __m256i __DEFAULT_FN_ATTRS
3858_mm512_cvtpd_epi32 (__m512d __A)
3859{
3860 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3861 (__v8si)
3862 _mm256_undefined_si256 (),
3863 (__mmask8) -1,
3864 _MM_FROUND_CUR_DIRECTION);
3865}
3866
3867static __inline__ __m256i __DEFAULT_FN_ATTRS
3868_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3869{
3870 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3871 (__v8si) __W,
3872 (__mmask8) __U,
3873 _MM_FROUND_CUR_DIRECTION);
3874}
3875
3876static __inline__ __m256i __DEFAULT_FN_ATTRS
3877_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3878{
3879 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3880 (__v8si)
3881 _mm256_setzero_si256 (),
3882 (__mmask8) __U,
3883 _MM_FROUND_CUR_DIRECTION);
3884}
3885
Craig Topper72c7d512015-02-01 07:35:35 +00003886#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003887 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003888 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003889 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003890
Michael Zuckerman186d8672016-05-31 11:27:34 +00003891#define _mm512_mask_cvt_roundps_epu32( __W, __U, __A, __R) __extension__ ({ \
3892 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
3893 (__v16si)( __W),\
3894 (__mmask16)( __U),( __R));\
3895})
3896
3897#define _mm512_maskz_cvt_roundps_epu32( __U, __A, __R) __extension__ ({ \
3898 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
3899 (__v16si)\
3900 _mm512_setzero_si512 (),\
3901 (__mmask16)( __U),( __R));\
3902})
3903
Michael Zuckermanf1544752016-05-09 10:32:51 +00003904static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003905_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00003906{
3907 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3908 (__v16si)\
3909 _mm512_undefined_epi32 (),\
3910 (__mmask16) -1,\
3911 _MM_FROUND_CUR_DIRECTION);\
3912}
3913
3914static __inline__ __m512i __DEFAULT_FN_ATTRS
3915_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3916{
3917 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3918 (__v16si) __W,
3919 (__mmask16) __U,
3920 _MM_FROUND_CUR_DIRECTION);
3921}
3922
Michael Zuckerman9fcf3552016-05-30 13:22:12 +00003923static __inline__ __m512i __DEFAULT_FN_ATTRS
3924_mm512_maskz_cvtps_epu32 ( __mmask16 __U, __m512 __A)
3925{
3926 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3927 (__v16si)
3928 _mm512_setzero_si512 (),
3929 (__mmask16) __U ,
3930 _MM_FROUND_CUR_DIRECTION);
3931}
3932
Craig Topper72c7d512015-02-01 07:35:35 +00003933#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003934 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003935 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003936 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003937
Michael Zuckerman186d8672016-05-31 11:27:34 +00003938#define _mm512_mask_cvt_roundpd_epu32( W, U, A, R) __extension__ ({ \
3939 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
3940 (__v8si)(W), \
3941 (__mmask8) (U), (int)(R)); })
3942
3943#define _mm512_maskz_cvt_roundpd_epu32(U, A, R) __extension__ ({ \
3944 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
3945 (__v8si)_mm256_setzero_si256(), \
3946 (__mmask8)(U), (int)(R)); })
3947
Michael Zuckermanf1544752016-05-09 10:32:51 +00003948static __inline__ __m256i __DEFAULT_FN_ATTRS
3949_mm512_cvtpd_epu32 (__m512d __A)
3950{
3951 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3952 (__v8si)
3953 _mm256_undefined_si256 (),
3954 (__mmask8) -1,
3955 _MM_FROUND_CUR_DIRECTION);
3956}
3957
3958static __inline__ __m256i __DEFAULT_FN_ATTRS
3959_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3960{
3961 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3962 (__v8si) __W,
3963 (__mmask8) __U,
3964 _MM_FROUND_CUR_DIRECTION);
3965}
3966
3967static __inline__ __m256i __DEFAULT_FN_ATTRS
3968_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3969{
3970 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3971 (__v8si)
3972 _mm256_setzero_si256 (),
3973 (__mmask8) __U,
3974 _MM_FROUND_CUR_DIRECTION);
3975}
Adam Nemet63a951e2015-01-14 01:31:17 +00003976/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003977static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003978_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3979{
3980 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3981}
3982
Michael Kupersteine45af542015-06-30 13:36:19 +00003983static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003984_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3985{
3986 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3987}
3988
Michael Kupersteine45af542015-06-30 13:36:19 +00003989static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003990_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3991{
3992 return __builtin_shufflevector(__a, __b,
3993 2, 18, 3, 19,
3994 2+4, 18+4, 3+4, 19+4,
3995 2+8, 18+8, 3+8, 19+8,
3996 2+12, 18+12, 3+12, 19+12);
3997}
3998
Michael Kupersteine45af542015-06-30 13:36:19 +00003999static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004000_mm512_unpacklo_ps(__m512 __a, __m512 __b)
4001{
4002 return __builtin_shufflevector(__a, __b,
4003 0, 16, 1, 17,
4004 0+4, 16+4, 1+4, 17+4,
4005 0+8, 16+8, 1+8, 17+8,
4006 0+12, 16+12, 1+12, 17+12);
4007}
4008
Adam Nemet0d5bb552014-07-28 17:14:40 +00004009/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004010
Michael Kupersteine45af542015-06-30 13:36:19 +00004011static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004012_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004013{
4014 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4015 (__v16si) __B,
4016 (__mmask16) -1);
4017}
4018
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004019static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4020_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
4021{
4022 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4023 (__v16si) __B, __U);
4024}
4025
Michael Kupersteine45af542015-06-30 13:36:19 +00004026static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004027_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004028{
4029 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
4030 (__v8di) __B,
4031 (__mmask8) -1);
4032}
4033
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004034static __inline__ __mmask8 __DEFAULT_FN_ATTRS
4035_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
4036{
4037 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
4038}
4039
4040
Adam Nemet0d5bb552014-07-28 17:14:40 +00004041/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004042
Michael Kupersteine45af542015-06-30 13:36:19 +00004043static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004044_mm512_loadu_si512 (void const *__P)
4045{
Craig Topper4537ea72016-05-14 06:03:13 +00004046 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004047 (__v16si)
4048 _mm512_setzero_si512 (),
4049 (__mmask16) -1);
4050}
4051
4052static __inline __m512i __DEFAULT_FN_ATTRS
4053_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4054{
Craig Topper4537ea72016-05-14 06:03:13 +00004055 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004056 (__v16si) __W,
4057 (__mmask16) __U);
4058}
4059
4060
4061static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004062_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004063{
Craig Topper4537ea72016-05-14 06:03:13 +00004064 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004065 (__v16si)
4066 _mm512_setzero_si512 (),
4067 (__mmask16) __U);
4068}
4069
Michael Kupersteine45af542015-06-30 13:36:19 +00004070static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004071_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4072{
Craig Topper4537ea72016-05-14 06:03:13 +00004073 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004074 (__v8di) __W,
4075 (__mmask8) __U);
4076}
4077
4078static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004079_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004080{
Craig Topper4537ea72016-05-14 06:03:13 +00004081 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004082 (__v8di)
4083 _mm512_setzero_si512 (),
4084 (__mmask8) __U);
4085}
4086
Michael Kupersteine45af542015-06-30 13:36:19 +00004087static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004088_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
4089{
Craig Topper4537ea72016-05-14 06:03:13 +00004090 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004091 (__v16sf) __W,
4092 (__mmask16) __U);
4093}
4094
4095static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004096_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004097{
Craig Topper4537ea72016-05-14 06:03:13 +00004098 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004099 (__v16sf)
4100 _mm512_setzero_ps (),
4101 (__mmask16) __U);
4102}
4103
Michael Kupersteine45af542015-06-30 13:36:19 +00004104static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004105_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004106{
Craig Topper4537ea72016-05-14 06:03:13 +00004107 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004108 (__v8df) __W,
4109 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00004110}
4111
Michael Kupersteine45af542015-06-30 13:36:19 +00004112static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004113_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00004114{
Craig Topper4537ea72016-05-14 06:03:13 +00004115 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00004116 (__v8df)
4117 _mm512_setzero_pd (),
4118 (__mmask8) __U);
4119}
4120
Michael Kupersteine45af542015-06-30 13:36:19 +00004121static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004122_mm512_loadu_pd(double const *__p)
4123{
4124 struct __loadu_pd {
4125 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004126 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004127 return ((struct __loadu_pd*)__p)->__v;
4128}
4129
Michael Kupersteine45af542015-06-30 13:36:19 +00004130static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004131_mm512_loadu_ps(float const *__p)
4132{
4133 struct __loadu_ps {
4134 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004135 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004136 return ((struct __loadu_ps*)__p)->__v;
4137}
4138
Michael Kupersteine45af542015-06-30 13:36:19 +00004139static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004140_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004141{
4142 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
4143 (__v16sf)
4144 _mm512_setzero_ps (),
4145 (__mmask16) -1);
4146}
4147
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004148static __inline __m512 __DEFAULT_FN_ATTRS
4149_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4150{
4151 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4152 (__v16sf) __W,
4153 (__mmask16) __U);
4154}
4155
4156static __inline __m512 __DEFAULT_FN_ATTRS
4157_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4158{
4159 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4160 (__v16sf)
4161 _mm512_setzero_ps (),
4162 (__mmask16) __U);
4163}
4164
Michael Kupersteine45af542015-06-30 13:36:19 +00004165static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004166_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004167{
4168 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4169 (__v8df)
4170 _mm512_setzero_pd (),
4171 (__mmask8) -1);
4172}
4173
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004174static __inline __m512d __DEFAULT_FN_ATTRS
4175_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4176{
4177 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4178 (__v8df) __W,
4179 (__mmask8) __U);
4180}
4181
4182static __inline __m512d __DEFAULT_FN_ATTRS
4183_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4184{
4185 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4186 (__v8df)
4187 _mm512_setzero_pd (),
4188 (__mmask8) __U);
4189}
4190
4191static __inline __m512i __DEFAULT_FN_ATTRS
4192_mm512_load_si512 (void const *__P)
4193{
4194 return *(__m512i *) __P;
4195}
4196
4197static __inline __m512i __DEFAULT_FN_ATTRS
4198_mm512_load_epi32 (void const *__P)
4199{
4200 return *(__m512i *) __P;
4201}
4202
4203static __inline __m512i __DEFAULT_FN_ATTRS
4204_mm512_load_epi64 (void const *__P)
4205{
4206 return *(__m512i *) __P;
4207}
4208
Adam Nemet0d5bb552014-07-28 17:14:40 +00004209/* SIMD store ops */
4210
Michael Kupersteine45af542015-06-30 13:36:19 +00004211static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004212_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004213{
Craig Topper4537ea72016-05-14 06:03:13 +00004214 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004215 (__mmask8) __U);
4216}
4217
Michael Kupersteine45af542015-06-30 13:36:19 +00004218static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004219_mm512_storeu_si512 (void *__P, __m512i __A)
4220{
Craig Topper4537ea72016-05-14 06:03:13 +00004221 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004222 (__mmask16) -1);
4223}
4224
4225static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004226_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004227{
Craig Topper4537ea72016-05-14 06:03:13 +00004228 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004229 (__mmask16) __U);
4230}
4231
Michael Kupersteine45af542015-06-30 13:36:19 +00004232static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004233_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004234{
Craig Topper4537ea72016-05-14 06:03:13 +00004235 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004236}
4237
Michael Kupersteine45af542015-06-30 13:36:19 +00004238static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004239_mm512_storeu_pd(void *__P, __m512d __A)
4240{
Craig Topper4537ea72016-05-14 06:03:13 +00004241 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004242}
4243
Michael Kupersteine45af542015-06-30 13:36:19 +00004244static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004245_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004246{
Craig Topper4537ea72016-05-14 06:03:13 +00004247 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004248 (__mmask16) __U);
4249}
4250
Michael Kupersteine45af542015-06-30 13:36:19 +00004251static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004252_mm512_storeu_ps(void *__P, __m512 __A)
4253{
Craig Topper4537ea72016-05-14 06:03:13 +00004254 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004255}
4256
Michael Kupersteine45af542015-06-30 13:36:19 +00004257static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004258_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004259{
Adam Nemetc0cff242015-01-16 18:51:50 +00004260 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004261}
4262
Michael Kupersteine45af542015-06-30 13:36:19 +00004263static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004264_mm512_store_pd(void *__P, __m512d __A)
4265{
4266 *(__m512d*)__P = __A;
4267}
4268
Michael Kupersteine45af542015-06-30 13:36:19 +00004269static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004270_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4271{
4272 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4273 (__mmask16) __U);
4274}
4275
Michael Kupersteine45af542015-06-30 13:36:19 +00004276static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004277_mm512_store_ps(void *__P, __m512 __A)
4278{
4279 *(__m512*)__P = __A;
4280}
4281
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004282static __inline void __DEFAULT_FN_ATTRS
4283_mm512_store_si512 (void *__P, __m512i __A)
4284{
4285 *(__m512i *) __P = __A;
4286}
4287
4288static __inline void __DEFAULT_FN_ATTRS
4289_mm512_store_epi32 (void *__P, __m512i __A)
4290{
4291 *(__m512i *) __P = __A;
4292}
4293
4294static __inline void __DEFAULT_FN_ATTRS
4295_mm512_store_epi64 (void *__P, __m512i __A)
4296{
4297 *(__m512i *) __P = __A;
4298}
4299
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004300/* Mask ops */
4301
Michael Kupersteine45af542015-06-30 13:36:19 +00004302static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004303_mm512_knot(__mmask16 __M)
4304{
4305 return __builtin_ia32_knothi(__M);
4306}
4307
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004308/* Integer compare */
4309
Michael Kupersteine45af542015-06-30 13:36:19 +00004310static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004311_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4312 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4313 (__mmask16)-1);
4314}
4315
Michael Kupersteine45af542015-06-30 13:36:19 +00004316static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004317_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4318 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4319 __u);
4320}
4321
Michael Kupersteine45af542015-06-30 13:36:19 +00004322static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004323_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4324 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4325 (__mmask16)-1);
4326}
4327
Michael Kupersteine45af542015-06-30 13:36:19 +00004328static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004329_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4330 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4331 __u);
4332}
4333
Michael Kupersteine45af542015-06-30 13:36:19 +00004334static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004335_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4336 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4337 __u);
4338}
4339
Michael Kupersteine45af542015-06-30 13:36:19 +00004340static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004341_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4342 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4343 (__mmask8)-1);
4344}
4345
Michael Kupersteine45af542015-06-30 13:36:19 +00004346static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004347_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4348 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4349 (__mmask8)-1);
4350}
4351
Michael Kupersteine45af542015-06-30 13:36:19 +00004352static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004353_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4354 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4355 __u);
4356}
4357
Michael Kupersteine45af542015-06-30 13:36:19 +00004358static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004359_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4360 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4361 (__mmask16)-1);
4362}
4363
Michael Kupersteine45af542015-06-30 13:36:19 +00004364static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004365_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4366 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4367 __u);
4368}
4369
Michael Kupersteine45af542015-06-30 13:36:19 +00004370static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004371_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4372 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4373 (__mmask16)-1);
4374}
4375
Michael Kupersteine45af542015-06-30 13:36:19 +00004376static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004377_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4378 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4379 __u);
4380}
4381
Michael Kupersteine45af542015-06-30 13:36:19 +00004382static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004383_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4384 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4385 (__mmask8)-1);
4386}
4387
Michael Kupersteine45af542015-06-30 13:36:19 +00004388static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004389_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4390 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4391 __u);
4392}
4393
Michael Kupersteine45af542015-06-30 13:36:19 +00004394static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004395_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4396 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4397 (__mmask8)-1);
4398}
4399
Michael Kupersteine45af542015-06-30 13:36:19 +00004400static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004401_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4402 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4403 __u);
4404}
4405
Michael Kupersteine45af542015-06-30 13:36:19 +00004406static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004407_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4408 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4409 (__mmask16)-1);
4410}
4411
Michael Kupersteine45af542015-06-30 13:36:19 +00004412static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004413_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4414 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4415 __u);
4416}
4417
Michael Kupersteine45af542015-06-30 13:36:19 +00004418static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004419_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4420 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4421 (__mmask16)-1);
4422}
4423
Michael Kupersteine45af542015-06-30 13:36:19 +00004424static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004425_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4426 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4427 __u);
4428}
4429
Michael Kupersteine45af542015-06-30 13:36:19 +00004430static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004431_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4432 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4433 __u);
4434}
4435
Michael Kupersteine45af542015-06-30 13:36:19 +00004436static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004437_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4438 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4439 (__mmask8)-1);
4440}
4441
Michael Kupersteine45af542015-06-30 13:36:19 +00004442static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004443_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4444 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4445 (__mmask8)-1);
4446}
4447
Michael Kupersteine45af542015-06-30 13:36:19 +00004448static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004449_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4450 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4451 __u);
4452}
4453
Michael Kupersteine45af542015-06-30 13:36:19 +00004454static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004455_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4456 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4457 (__mmask16)-1);
4458}
4459
Michael Kupersteine45af542015-06-30 13:36:19 +00004460static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004461_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4462 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4463 __u);
4464}
4465
Michael Kupersteine45af542015-06-30 13:36:19 +00004466static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004467_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4468 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4469 (__mmask16)-1);
4470}
4471
Michael Kupersteine45af542015-06-30 13:36:19 +00004472static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004473_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4474 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4475 __u);
4476}
4477
Michael Kupersteine45af542015-06-30 13:36:19 +00004478static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004479_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4480 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4481 (__mmask8)-1);
4482}
4483
Michael Kupersteine45af542015-06-30 13:36:19 +00004484static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004485_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4486 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4487 __u);
4488}
4489
Michael Kupersteine45af542015-06-30 13:36:19 +00004490static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004491_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4492 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4493 (__mmask8)-1);
4494}
4495
Michael Kupersteine45af542015-06-30 13:36:19 +00004496static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004497_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4498 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4499 __u);
4500}
4501
Michael Kupersteine45af542015-06-30 13:36:19 +00004502static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004503_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4504 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4505 (__mmask16)-1);
4506}
4507
Michael Kupersteine45af542015-06-30 13:36:19 +00004508static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004509_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4510 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4511 __u);
4512}
4513
Michael Kupersteine45af542015-06-30 13:36:19 +00004514static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004515_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4516 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4517 (__mmask16)-1);
4518}
4519
Michael Kupersteine45af542015-06-30 13:36:19 +00004520static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004521_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4522 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4523 __u);
4524}
4525
Michael Kupersteine45af542015-06-30 13:36:19 +00004526static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004527_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4528 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4529 (__mmask8)-1);
4530}
4531
Michael Kupersteine45af542015-06-30 13:36:19 +00004532static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004533_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4534 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4535 __u);
4536}
4537
Michael Kupersteine45af542015-06-30 13:36:19 +00004538static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004539_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4540 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4541 (__mmask8)-1);
4542}
4543
Michael Kupersteine45af542015-06-30 13:36:19 +00004544static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004545_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4546 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4547 __u);
4548}
4549
Michael Kupersteine45af542015-06-30 13:36:19 +00004550static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004551_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4552 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4553 (__mmask16)-1);
4554}
4555
Michael Kupersteine45af542015-06-30 13:36:19 +00004556static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004557_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4558 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4559 __u);
4560}
4561
Michael Kupersteine45af542015-06-30 13:36:19 +00004562static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004563_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4564 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4565 (__mmask16)-1);
4566}
4567
Michael Kupersteine45af542015-06-30 13:36:19 +00004568static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004569_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4570 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4571 __u);
4572}
4573
Michael Kupersteine45af542015-06-30 13:36:19 +00004574static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004575_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4576 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4577 (__mmask8)-1);
4578}
4579
Michael Kupersteine45af542015-06-30 13:36:19 +00004580static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004581_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4582 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4583 __u);
4584}
4585
Michael Kupersteine45af542015-06-30 13:36:19 +00004586static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004587_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4588 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4589 (__mmask8)-1);
4590}
4591
Michael Kupersteine45af542015-06-30 13:36:19 +00004592static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004593_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4594 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4595 __u);
4596}
4597
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004598static __inline__ __m512i __DEFAULT_FN_ATTRS
4599_mm512_cvtepi8_epi32 (__m128i __A)
4600{
4601 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4602 (__v16si)
4603 _mm512_setzero_si512 (),
4604 (__mmask16) -1);
4605}
4606
4607static __inline__ __m512i __DEFAULT_FN_ATTRS
4608_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4609{
4610 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4611 (__v16si) __W,
4612 (__mmask16) __U);
4613}
4614
4615static __inline__ __m512i __DEFAULT_FN_ATTRS
4616_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4617{
4618 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4619 (__v16si)
4620 _mm512_setzero_si512 (),
4621 (__mmask16) __U);
4622}
4623
4624static __inline__ __m512i __DEFAULT_FN_ATTRS
4625_mm512_cvtepi8_epi64 (__m128i __A)
4626{
4627 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4628 (__v8di)
4629 _mm512_setzero_si512 (),
4630 (__mmask8) -1);
4631}
4632
4633static __inline__ __m512i __DEFAULT_FN_ATTRS
4634_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4635{
4636 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4637 (__v8di) __W,
4638 (__mmask8) __U);
4639}
4640
4641static __inline__ __m512i __DEFAULT_FN_ATTRS
4642_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4643{
4644 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4645 (__v8di)
4646 _mm512_setzero_si512 (),
4647 (__mmask8) __U);
4648}
4649
4650static __inline__ __m512i __DEFAULT_FN_ATTRS
4651_mm512_cvtepi32_epi64 (__m256i __X)
4652{
4653 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4654 (__v8di)
4655 _mm512_setzero_si512 (),
4656 (__mmask8) -1);
4657}
4658
4659static __inline__ __m512i __DEFAULT_FN_ATTRS
4660_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4661{
4662 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4663 (__v8di) __W,
4664 (__mmask8) __U);
4665}
4666
4667static __inline__ __m512i __DEFAULT_FN_ATTRS
4668_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4669{
4670 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4671 (__v8di)
4672 _mm512_setzero_si512 (),
4673 (__mmask8) __U);
4674}
4675
4676static __inline__ __m512i __DEFAULT_FN_ATTRS
4677_mm512_cvtepi16_epi32 (__m256i __A)
4678{
4679 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4680 (__v16si)
4681 _mm512_setzero_si512 (),
4682 (__mmask16) -1);
4683}
4684
4685static __inline__ __m512i __DEFAULT_FN_ATTRS
4686_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4687{
4688 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4689 (__v16si) __W,
4690 (__mmask16) __U);
4691}
4692
4693static __inline__ __m512i __DEFAULT_FN_ATTRS
4694_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4695{
4696 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4697 (__v16si)
4698 _mm512_setzero_si512 (),
4699 (__mmask16) __U);
4700}
4701
4702static __inline__ __m512i __DEFAULT_FN_ATTRS
4703_mm512_cvtepi16_epi64 (__m128i __A)
4704{
4705 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4706 (__v8di)
4707 _mm512_setzero_si512 (),
4708 (__mmask8) -1);
4709}
4710
4711static __inline__ __m512i __DEFAULT_FN_ATTRS
4712_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4713{
4714 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4715 (__v8di) __W,
4716 (__mmask8) __U);
4717}
4718
4719static __inline__ __m512i __DEFAULT_FN_ATTRS
4720_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4721{
4722 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4723 (__v8di)
4724 _mm512_setzero_si512 (),
4725 (__mmask8) __U);
4726}
4727
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004728static __inline__ __m512i __DEFAULT_FN_ATTRS
4729_mm512_cvtepu8_epi32 (__m128i __A)
4730{
4731 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4732 (__v16si)
4733 _mm512_setzero_si512 (),
4734 (__mmask16) -1);
4735}
4736
4737static __inline__ __m512i __DEFAULT_FN_ATTRS
4738_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4739{
4740 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4741 (__v16si) __W,
4742 (__mmask16) __U);
4743}
4744
4745static __inline__ __m512i __DEFAULT_FN_ATTRS
4746_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4747{
4748 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4749 (__v16si)
4750 _mm512_setzero_si512 (),
4751 (__mmask16) __U);
4752}
4753
4754static __inline__ __m512i __DEFAULT_FN_ATTRS
4755_mm512_cvtepu8_epi64 (__m128i __A)
4756{
4757 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4758 (__v8di)
4759 _mm512_setzero_si512 (),
4760 (__mmask8) -1);
4761}
4762
4763static __inline__ __m512i __DEFAULT_FN_ATTRS
4764_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4765{
4766 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4767 (__v8di) __W,
4768 (__mmask8) __U);
4769}
4770
4771static __inline__ __m512i __DEFAULT_FN_ATTRS
4772_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4773{
4774 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4775 (__v8di)
4776 _mm512_setzero_si512 (),
4777 (__mmask8) __U);
4778}
4779
4780static __inline__ __m512i __DEFAULT_FN_ATTRS
4781_mm512_cvtepu32_epi64 (__m256i __X)
4782{
4783 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4784 (__v8di)
4785 _mm512_setzero_si512 (),
4786 (__mmask8) -1);
4787}
4788
4789static __inline__ __m512i __DEFAULT_FN_ATTRS
4790_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4791{
4792 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4793 (__v8di) __W,
4794 (__mmask8) __U);
4795}
4796
4797static __inline__ __m512i __DEFAULT_FN_ATTRS
4798_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4799{
4800 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4801 (__v8di)
4802 _mm512_setzero_si512 (),
4803 (__mmask8) __U);
4804}
4805
4806static __inline__ __m512i __DEFAULT_FN_ATTRS
4807_mm512_cvtepu16_epi32 (__m256i __A)
4808{
4809 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4810 (__v16si)
4811 _mm512_setzero_si512 (),
4812 (__mmask16) -1);
4813}
4814
4815static __inline__ __m512i __DEFAULT_FN_ATTRS
4816_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4817{
4818 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4819 (__v16si) __W,
4820 (__mmask16) __U);
4821}
4822
4823static __inline__ __m512i __DEFAULT_FN_ATTRS
4824_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4825{
4826 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4827 (__v16si)
4828 _mm512_setzero_si512 (),
4829 (__mmask16) __U);
4830}
4831
4832static __inline__ __m512i __DEFAULT_FN_ATTRS
4833_mm512_cvtepu16_epi64 (__m128i __A)
4834{
4835 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4836 (__v8di)
4837 _mm512_setzero_si512 (),
4838 (__mmask8) -1);
4839}
4840
4841static __inline__ __m512i __DEFAULT_FN_ATTRS
4842_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4843{
4844 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4845 (__v8di) __W,
4846 (__mmask8) __U);
4847}
4848
4849static __inline__ __m512i __DEFAULT_FN_ATTRS
4850_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4851{
4852 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4853 (__v8di)
4854 _mm512_setzero_si512 (),
4855 (__mmask8) __U);
4856}
4857
Michael Zuckermane98cc742016-02-23 15:59:47 +00004858static __inline__ __m512i __DEFAULT_FN_ATTRS
4859_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4860{
4861 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4862 (__v16si) __B,
4863 (__v16si)
4864 _mm512_setzero_si512 (),
4865 (__mmask16) -1);
4866}
4867
4868static __inline__ __m512i __DEFAULT_FN_ATTRS
4869_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4870{
4871 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4872 (__v16si) __B,
4873 (__v16si) __W,
4874 (__mmask16) __U);
4875}
4876
4877static __inline__ __m512i __DEFAULT_FN_ATTRS
4878_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4879{
4880 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4881 (__v16si) __B,
4882 (__v16si)
4883 _mm512_setzero_si512 (),
4884 (__mmask16) __U);
4885}
4886
4887static __inline__ __m512i __DEFAULT_FN_ATTRS
4888_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4889{
4890 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4891 (__v8di) __B,
4892 (__v8di)
4893 _mm512_setzero_si512 (),
4894 (__mmask8) -1);
4895}
4896
4897static __inline__ __m512i __DEFAULT_FN_ATTRS
4898_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4899{
4900 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4901 (__v8di) __B,
4902 (__v8di) __W,
4903 (__mmask8) __U);
4904}
4905
4906static __inline__ __m512i __DEFAULT_FN_ATTRS
4907_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4908{
4909 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4910 (__v8di) __B,
4911 (__v8di)
4912 _mm512_setzero_si512 (),
4913 (__mmask8) __U);
4914}
4915
4916
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004917
Craig Topper4cac1c22015-01-25 23:30:07 +00004918#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004919 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004920 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004921 (__mmask16)-1); })
4922
4923#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004924 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004925 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004926 (__mmask16)-1); })
4927
4928#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004929 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004930 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004931 (__mmask8)-1); })
4932
4933#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004934 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004935 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004936 (__mmask8)-1); })
4937
4938#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004939 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004940 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004941 (__mmask16)(m)); })
4942
4943#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004944 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004945 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004946 (__mmask16)(m)); })
4947
4948#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004949 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004950 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004951 (__mmask8)(m)); })
4952
4953#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004954 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004955 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004956 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004957
Michael Zuckerman38a27272016-02-22 09:05:41 +00004958#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004959 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4960 (__v16si)_mm512_setzero_si512(), \
4961 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004962
4963#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004964 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4965 (__v16si)(__m512i)(W), \
4966 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004967
4968#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004969 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4970 (__v16si)_mm512_setzero_si512(), \
4971 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004972
4973#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004974 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4975 (__v8di)_mm512_setzero_si512(), \
4976 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004977
4978#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004979 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4980 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004981
4982#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004983 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4984 (__v8di)_mm512_setzero_si512(), \
4985 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004986static __inline__ __m512i __DEFAULT_FN_ATTRS
4987_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4988{
4989 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4990 (__v16si) __B,
4991 (__v16si)
4992 _mm512_setzero_si512 (),
4993 (__mmask16) -1);
4994}
4995
4996static __inline__ __m512i __DEFAULT_FN_ATTRS
4997_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4998{
4999 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5000 (__v16si) __B,
5001 (__v16si) __W,
5002 (__mmask16) __U);
5003}
5004
5005static __inline__ __m512i __DEFAULT_FN_ATTRS
5006_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5007{
5008 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5009 (__v16si) __B,
5010 (__v16si)
5011 _mm512_setzero_si512 (),
5012 (__mmask16) __U);
5013}
5014
5015static __inline__ __m512i __DEFAULT_FN_ATTRS
5016_mm512_rolv_epi64 (__m512i __A, __m512i __B)
5017{
5018 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5019 (__v8di) __B,
5020 (__v8di)
5021 _mm512_setzero_si512 (),
5022 (__mmask8) -1);
5023}
5024
5025static __inline__ __m512i __DEFAULT_FN_ATTRS
5026_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5027{
5028 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5029 (__v8di) __B,
5030 (__v8di) __W,
5031 (__mmask8) __U);
5032}
5033
5034static __inline__ __m512i __DEFAULT_FN_ATTRS
5035_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5036{
5037 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5038 (__v8di) __B,
5039 (__v8di)
5040 _mm512_setzero_si512 (),
5041 (__mmask8) __U);
5042}
5043
Craig Topper8c18e112016-05-17 04:41:50 +00005044#define _mm512_ror_epi32(A, B) __extension__ ({ \
5045 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5046 (__v16si)_mm512_setzero_si512(), \
5047 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005048
Craig Topper8c18e112016-05-17 04:41:50 +00005049#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5050 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5051 (__v16si)(__m512i)(W), \
5052 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005053
Craig Topper8c18e112016-05-17 04:41:50 +00005054#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
5055 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5056 (__v16si)_mm512_setzero_si512(), \
5057 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005058
Craig Topper8c18e112016-05-17 04:41:50 +00005059#define _mm512_ror_epi64(A, B) __extension__ ({ \
5060 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5061 (__v8di)_mm512_setzero_si512(), \
5062 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005063
Craig Topper8c18e112016-05-17 04:41:50 +00005064#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5065 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5066 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005067
Craig Topper8c18e112016-05-17 04:41:50 +00005068#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
5069 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5070 (__v8di)_mm512_setzero_si512(), \
5071 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005072
Craig Topper8c18e112016-05-17 04:41:50 +00005073#define _mm512_slli_epi32(A, B) __extension__ ({ \
5074 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5075 (__v16si)_mm512_setzero_si512(), \
5076 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005077
Craig Topper8c18e112016-05-17 04:41:50 +00005078#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5079 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5080 (__v16si)(__m512i)(W), \
5081 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005082
Craig Topper8c18e112016-05-17 04:41:50 +00005083#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
5084 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5085 (__v16si)_mm512_setzero_si512(), \
5086 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005087
Craig Topper8c18e112016-05-17 04:41:50 +00005088#define _mm512_slli_epi64(A, B) __extension__ ({ \
5089 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5090 (__v8di)_mm512_setzero_si512(), \
5091 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005092
Craig Topper8c18e112016-05-17 04:41:50 +00005093#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5094 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5095 (__v8di)(__m512i)(W), \
5096 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005097
Craig Topper8c18e112016-05-17 04:41:50 +00005098#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
5099 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5100 (__v8di)_mm512_setzero_si512(), \
5101 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005102
Michael Zuckerman38a27272016-02-22 09:05:41 +00005103
Michael Zuckermand176d742016-03-01 17:49:03 +00005104
Craig Topper8c18e112016-05-17 04:41:50 +00005105#define _mm512_srli_epi32(A, B) __extension__ ({ \
5106 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5107 (__v16si)_mm512_setzero_si512(), \
5108 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005109
Craig Topper8c18e112016-05-17 04:41:50 +00005110#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
5111 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5112 (__v16si)(__m512i)(W), \
5113 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005114
Craig Topper8c18e112016-05-17 04:41:50 +00005115#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
5116 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5117 (__v16si)_mm512_setzero_si512(), \
5118 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005119
Craig Topper8c18e112016-05-17 04:41:50 +00005120#define _mm512_srli_epi64(A, B) __extension__ ({ \
5121 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5122 (__v8di)_mm512_setzero_si512(), \
5123 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005124
Craig Topper8c18e112016-05-17 04:41:50 +00005125#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
5126 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5127 (__v8di)(__m512i)(W), \
5128 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005129
Craig Topper8c18e112016-05-17 04:41:50 +00005130#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
5131 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5132 (__v8di)_mm512_setzero_si512(), \
5133 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005134
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005135static __inline__ __m512i __DEFAULT_FN_ATTRS
5136_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
5137{
5138 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5139 (__v16si) __W,
5140 (__mmask16) __U);
5141}
5142
5143static __inline__ __m512i __DEFAULT_FN_ATTRS
5144_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
5145{
5146 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5147 (__v16si)
5148 _mm512_setzero_si512 (),
5149 (__mmask16) __U);
5150}
5151
5152static __inline__ void __DEFAULT_FN_ATTRS
5153_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5154{
5155 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5156 (__mmask16) __U);
5157}
5158
5159static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005160_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5161{
5162 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5163 (__v16si) __W,
5164 (__mmask16) __U);
5165}
5166
5167static __inline__ __m512i __DEFAULT_FN_ATTRS
5168_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5169{
5170 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5171 (__v16si)
5172 _mm512_setzero_si512 (),
5173 (__mmask16) __U);
5174}
5175
5176static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005177_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5178{
5179 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5180 (__v8di) __W,
5181 (__mmask8) __U);
5182}
5183
5184static __inline__ __m512i __DEFAULT_FN_ATTRS
5185_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5186{
5187 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5188 (__v8di)
5189 _mm512_setzero_si512 (),
5190 (__mmask8) __U);
5191}
5192
5193static __inline__ __m512i __DEFAULT_FN_ATTRS
5194_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5195{
5196 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5197 (__v8di) __W,
5198 (__mmask8) __U);
5199}
5200
5201static __inline__ __m512i __DEFAULT_FN_ATTRS
5202_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5203{
5204 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5205 (__v8di)
5206 _mm512_setzero_si512 (),
5207 (__mmask8) __U);
5208}
5209
5210static __inline__ void __DEFAULT_FN_ATTRS
5211_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5212{
5213 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5214 (__mmask8) __U);
5215}
5216
5217
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005218
5219static __inline__ __m512d __DEFAULT_FN_ATTRS
5220_mm512_movedup_pd (__m512d __A)
5221{
5222 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5223 (__v8df)
5224 _mm512_undefined_pd (),
5225 (__mmask8) -1);
5226}
5227
5228static __inline__ __m512d __DEFAULT_FN_ATTRS
5229_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5230{
5231 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5232 (__v8df) __W,
5233 (__mmask8) __U);
5234}
5235
5236static __inline__ __m512d __DEFAULT_FN_ATTRS
5237_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5238{
5239 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5240 (__v8df)
5241 _mm512_setzero_pd (),
5242 (__mmask8) __U);
5243}
5244
Craig Topper8c18e112016-05-17 04:41:50 +00005245#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5246 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5247 (__v8df)(__m512d)(B), \
5248 (__v8di)(__m512i)(C), (int)(imm), \
5249 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005250
Craig Topper8c18e112016-05-17 04:41:50 +00005251#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5252 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5253 (__v8df)(__m512d)(B), \
5254 (__v8di)(__m512i)(C), (int)(imm), \
5255 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005256
Craig Topper8c18e112016-05-17 04:41:50 +00005257#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5258 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5259 (__v8df)(__m512d)(B), \
5260 (__v8di)(__m512i)(C), (int)(imm), \
5261 (__mmask8)-1, \
5262 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005263
Craig Topper8c18e112016-05-17 04:41:50 +00005264#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5265 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5266 (__v8df)(__m512d)(B), \
5267 (__v8di)(__m512i)(C), (int)(imm), \
5268 (__mmask8)(U), \
5269 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005270
Craig Topper8c18e112016-05-17 04:41:50 +00005271#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5272 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5273 (__v8df)(__m512d)(B), \
5274 (__v8di)(__m512i)(C), \
5275 (int)(imm), (__mmask8)(U), \
5276 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005277
Craig Topper8c18e112016-05-17 04:41:50 +00005278#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5279 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5280 (__v8df)(__m512d)(B), \
5281 (__v8di)(__m512i)(C), \
5282 (int)(imm), (__mmask8)(U), \
5283 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005284
Craig Topper8c18e112016-05-17 04:41:50 +00005285#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5286 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5287 (__v16sf)(__m512)(B), \
5288 (__v16si)(__m512i)(C), (int)(imm), \
5289 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005290
Craig Topper8c18e112016-05-17 04:41:50 +00005291#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5292 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5293 (__v16sf)(__m512)(B), \
5294 (__v16si)(__m512i)(C), (int)(imm), \
5295 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005296
Craig Topper8c18e112016-05-17 04:41:50 +00005297#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5298 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5299 (__v16sf)(__m512)(B), \
5300 (__v16si)(__m512i)(C), (int)(imm), \
5301 (__mmask16)-1, \
5302 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005303
Craig Topper8c18e112016-05-17 04:41:50 +00005304#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5305 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5306 (__v16sf)(__m512)(B), \
5307 (__v16si)(__m512i)(C), (int)(imm), \
5308 (__mmask16)(U), \
5309 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005310
Craig Topper8c18e112016-05-17 04:41:50 +00005311#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5312 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5313 (__v16sf)(__m512)(B), \
5314 (__v16si)(__m512i)(C), \
5315 (int)(imm), (__mmask16)(U), \
5316 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005317
Craig Topper8c18e112016-05-17 04:41:50 +00005318#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5319 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5320 (__v16sf)(__m512)(B), \
5321 (__v16si)(__m512i)(C), \
5322 (int)(imm), (__mmask16)(U), \
5323 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005324
Craig Topper8c18e112016-05-17 04:41:50 +00005325#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5326 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5327 (__v2df)(__m128d)(B), \
5328 (__v2di)(__m128i)(C), (int)(imm), \
5329 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005330
Craig Topper8c18e112016-05-17 04:41:50 +00005331#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5332 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5333 (__v2df)(__m128d)(B), \
5334 (__v2di)(__m128i)(C), (int)(imm), \
5335 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005336
Craig Topper8c18e112016-05-17 04:41:50 +00005337#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5338 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5339 (__v2df)(__m128d)(B), \
5340 (__v2di)(__m128i)(C), (int)(imm), \
5341 (__mmask8)-1, \
5342 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005343
Craig Topper8c18e112016-05-17 04:41:50 +00005344#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5345 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5346 (__v2df)(__m128d)(B), \
5347 (__v2di)(__m128i)(C), (int)(imm), \
5348 (__mmask8)(U), \
5349 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005350
Craig Topper8c18e112016-05-17 04:41:50 +00005351#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5352 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5353 (__v2df)(__m128d)(B), \
5354 (__v2di)(__m128i)(C), (int)(imm), \
5355 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005356
Craig Topper8c18e112016-05-17 04:41:50 +00005357#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5358 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5359 (__v2df)(__m128d)(B), \
5360 (__v2di)(__m128i)(C), (int)(imm), \
5361 (__mmask8)(U), \
5362 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005363
Craig Topper8c18e112016-05-17 04:41:50 +00005364#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5365 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5366 (__v4sf)(__m128)(B), \
5367 (__v4si)(__m128i)(C), (int)(imm), \
5368 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005369
Craig Topper8c18e112016-05-17 04:41:50 +00005370#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5371 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5372 (__v4sf)(__m128)(B), \
5373 (__v4si)(__m128i)(C), (int)(imm), \
5374 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005375
Craig Topper8c18e112016-05-17 04:41:50 +00005376#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5377 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5378 (__v4sf)(__m128)(B), \
5379 (__v4si)(__m128i)(C), (int)(imm), \
5380 (__mmask8)-1, \
5381 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005382
Craig Topper8c18e112016-05-17 04:41:50 +00005383#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5384 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5385 (__v4sf)(__m128)(B), \
5386 (__v4si)(__m128i)(C), (int)(imm), \
5387 (__mmask8)(U), \
5388 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005389
Craig Topper8c18e112016-05-17 04:41:50 +00005390#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5391 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5392 (__v4sf)(__m128)(B), \
5393 (__v4si)(__m128i)(C), (int)(imm), \
5394 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005395
Craig Topper8c18e112016-05-17 04:41:50 +00005396#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5397 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5398 (__v4sf)(__m128)(B), \
5399 (__v4si)(__m128i)(C), (int)(imm), \
5400 (__mmask8)(U), \
5401 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005402
Craig Topper8c18e112016-05-17 04:41:50 +00005403#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5404 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5405 (__v2df)(__m128d)(B), \
5406 (__v2df)_mm_setzero_pd(), \
5407 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005408
5409
5410static __inline__ __m128d __DEFAULT_FN_ATTRS
5411_mm_getexp_sd (__m128d __A, __m128d __B)
5412{
5413 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5414 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5415}
5416
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005417static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005418_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005419{
5420 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5421 (__v2df) __B,
5422 (__v2df) __W,
5423 (__mmask8) __U,
5424 _MM_FROUND_CUR_DIRECTION);
5425}
5426
Craig Topper8c18e112016-05-17 04:41:50 +00005427#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5428 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5429 (__v2df)(__m128d)(B), \
5430 (__v2df)(__m128d)(W), \
5431 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005432
5433static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005434_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005435{
5436 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5437 (__v2df) __B,
5438 (__v2df) _mm_setzero_pd (),
5439 (__mmask8) __U,
5440 _MM_FROUND_CUR_DIRECTION);
5441}
5442
Craig Topper8c18e112016-05-17 04:41:50 +00005443#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5444 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5445 (__v2df)(__m128d)(B), \
5446 (__v2df)_mm_setzero_pd(), \
5447 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005448
Craig Topper8c18e112016-05-17 04:41:50 +00005449#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5450 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5451 (__v4sf)(__m128)(B), \
5452 (__v4sf)_mm_setzero_ps(), \
5453 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005454
5455static __inline__ __m128 __DEFAULT_FN_ATTRS
5456_mm_getexp_ss (__m128 __A, __m128 __B)
5457{
5458 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5459 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5460}
5461
Craig Topper58187d32016-05-17 04:41:29 +00005462static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005463_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005464{
Craig Topper58187d32016-05-17 04:41:29 +00005465 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005466 (__v4sf) __B,
5467 (__v4sf) __W,
5468 (__mmask8) __U,
5469 _MM_FROUND_CUR_DIRECTION);
5470}
5471
Craig Topper8c18e112016-05-17 04:41:50 +00005472#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5473 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5474 (__v4sf)(__m128)(B), \
5475 (__v4sf)(__m128)(W), \
5476 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005477
Craig Topper58187d32016-05-17 04:41:29 +00005478static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005479_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005480{
Craig Topper58187d32016-05-17 04:41:29 +00005481 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005482 (__v4sf) __B,
5483 (__v4sf) _mm_setzero_pd (),
5484 (__mmask8) __U,
5485 _MM_FROUND_CUR_DIRECTION);
5486}
5487
Craig Topper8c18e112016-05-17 04:41:50 +00005488#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5489 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5490 (__v4sf)(__m128)(B), \
5491 (__v4sf)_mm_setzero_ps(), \
5492 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005493
Craig Topper8c18e112016-05-17 04:41:50 +00005494#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5495 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5496 (__v2df)(__m128d)(B), \
5497 (int)(((D)<<2) | (C)), \
5498 (__v2df)_mm_setzero_pd(), \
5499 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005500
Craig Topper8c18e112016-05-17 04:41:50 +00005501#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5502 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5503 (__v2df)(__m128d)(B), \
5504 (int)(((D)<<2) | (C)), \
5505 (__v2df)_mm_setzero_pd(), \
5506 (__mmask8)-1, \
5507 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005508
Craig Topper8c18e112016-05-17 04:41:50 +00005509#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5510 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5511 (__v2df)(__m128d)(B), \
5512 (int)(((D)<<2) | (C)), \
5513 (__v2df)(__m128d)(W), \
5514 (__mmask8)(U), \
5515 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005516
Craig Topper8c18e112016-05-17 04:41:50 +00005517#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5518 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5519 (__v2df)(__m128d)(B), \
5520 (int)(((D)<<2) | (C)), \
5521 (__v2df)(__m128d)(W), \
5522 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005523
Craig Topper8c18e112016-05-17 04:41:50 +00005524#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5525 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5526 (__v2df)(__m128d)(B), \
5527 (int)(((D)<<2) | (C)), \
5528 (__v2df)_mm_setzero_pd(), \
5529 (__mmask8)(U), \
5530 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005531
Craig Topper8c18e112016-05-17 04:41:50 +00005532#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5533 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5534 (__v2df)(__m128d)(B), \
5535 (int)(((D)<<2) | (C)), \
5536 (__v2df)_mm_setzero_pd(), \
5537 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005538
Craig Topper8c18e112016-05-17 04:41:50 +00005539#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5540 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5541 (__v4sf)(__m128)(B), \
5542 (int)(((D)<<2) | (C)), \
5543 (__v4sf)_mm_setzero_ps(), \
5544 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005545
Craig Topper8c18e112016-05-17 04:41:50 +00005546#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5547 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5548 (__v4sf)(__m128)(B), \
5549 (int)(((D)<<2) | (C)), \
5550 (__v4sf)_mm_setzero_ps(), \
5551 (__mmask8)-1, \
5552 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005553
Craig Topper8c18e112016-05-17 04:41:50 +00005554#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5555 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5556 (__v4sf)(__m128)(B), \
5557 (int)(((D)<<2) | (C)), \
5558 (__v4sf)(__m128)(W), \
5559 (__mmask8)(U), \
5560 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005561
Craig Topper8c18e112016-05-17 04:41:50 +00005562#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5563 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5564 (__v4sf)(__m128)(B), \
5565 (int)(((D)<<2) | (C)), \
5566 (__v4sf)(__m128)(W), \
5567 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005568
Craig Topper8c18e112016-05-17 04:41:50 +00005569#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5570 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5571 (__v4sf)(__m128)(B), \
5572 (int)(((D)<<2) | (C)), \
5573 (__v4sf)_mm_setzero_pd(), \
5574 (__mmask8)(U), \
5575 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005576
Craig Topper8c18e112016-05-17 04:41:50 +00005577#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5578 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5579 (__v4sf)(__m128)(B), \
5580 (int)(((D)<<2) | (C)), \
5581 (__v4sf)_mm_setzero_ps(), \
5582 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005583
5584static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5585_mm512_kmov (__mmask16 __A)
5586{
5587 return __A;
5588}
5589
Craig Topper8c18e112016-05-17 04:41:50 +00005590#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5591 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5592 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005593
Craig Topper8c18e112016-05-17 04:41:50 +00005594#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5595 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5596 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005597
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005598static __inline__ __m512d __DEFAULT_FN_ATTRS
5599_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5600{
5601 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5602 (__v8df) __B,
5603 (__v8df) __W,
5604 (__mmask8) __U);
5605}
Craig Topper8c18e112016-05-17 04:41:50 +00005606#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5607 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005608static __inline__ __m512i __DEFAULT_FN_ATTRS
5609_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5610 __mmask16 __U, __m512i __B)
5611{
5612 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5613 (__v16si) __I
5614 /* idx */ ,
5615 (__v16si) __B,
5616 (__mmask16) __U);
5617}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005618static __inline__ __m512i __DEFAULT_FN_ATTRS
5619_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5620{
5621 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5622 (__v16si) __B,
5623 (__v16si)
5624 _mm512_setzero_si512 (),
5625 (__mmask16) -1);
5626}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005627
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005628static __inline__ __m512i __DEFAULT_FN_ATTRS
5629_mm512_sll_epi32 (__m512i __A, __m128i __B)
5630{
5631 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5632 (__v4si) __B,
5633 (__v16si)
5634 _mm512_setzero_si512 (),
5635 (__mmask16) -1);
5636}
5637
5638static __inline__ __m512i __DEFAULT_FN_ATTRS
5639_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5640{
5641 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5642 (__v4si) __B,
5643 (__v16si) __W,
5644 (__mmask16) __U);
5645}
5646
5647static __inline__ __m512i __DEFAULT_FN_ATTRS
5648_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5649{
5650 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5651 (__v4si) __B,
5652 (__v16si)
5653 _mm512_setzero_si512 (),
5654 (__mmask16) __U);
5655}
5656
5657static __inline__ __m512i __DEFAULT_FN_ATTRS
5658_mm512_sll_epi64 (__m512i __A, __m128i __B)
5659{
5660 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5661 (__v2di) __B,
5662 (__v8di)
5663 _mm512_setzero_si512 (),
5664 (__mmask8) -1);
5665}
5666
5667static __inline__ __m512i __DEFAULT_FN_ATTRS
5668_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5669{
5670 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5671 (__v2di) __B,
5672 (__v8di) __W,
5673 (__mmask8) __U);
5674}
5675
5676static __inline__ __m512i __DEFAULT_FN_ATTRS
5677_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5678{
5679 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5680 (__v2di) __B,
5681 (__v8di)
5682 _mm512_setzero_si512 (),
5683 (__mmask8) __U);
5684}
5685
5686static __inline__ __m512i __DEFAULT_FN_ATTRS
5687_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5688{
5689 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5690 (__v16si) __Y,
5691 (__v16si)
5692 _mm512_setzero_si512 (),
5693 (__mmask16) -1);
5694}
5695
5696static __inline__ __m512i __DEFAULT_FN_ATTRS
5697_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5698{
5699 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5700 (__v16si) __Y,
5701 (__v16si) __W,
5702 (__mmask16) __U);
5703}
5704
5705static __inline__ __m512i __DEFAULT_FN_ATTRS
5706_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5707{
5708 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5709 (__v16si) __Y,
5710 (__v16si)
5711 _mm512_setzero_si512 (),
5712 (__mmask16) __U);
5713}
5714
5715static __inline__ __m512i __DEFAULT_FN_ATTRS
5716_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5717{
5718 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5719 (__v8di) __Y,
5720 (__v8di)
5721 _mm512_undefined_pd (),
5722 (__mmask8) -1);
5723}
5724
5725static __inline__ __m512i __DEFAULT_FN_ATTRS
5726_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5727{
5728 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5729 (__v8di) __Y,
5730 (__v8di) __W,
5731 (__mmask8) __U);
5732}
5733
5734static __inline__ __m512i __DEFAULT_FN_ATTRS
5735_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5736{
5737 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5738 (__v8di) __Y,
5739 (__v8di)
5740 _mm512_setzero_si512 (),
5741 (__mmask8) __U);
5742}
5743
5744static __inline__ __m512i __DEFAULT_FN_ATTRS
5745_mm512_sra_epi32 (__m512i __A, __m128i __B)
5746{
5747 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5748 (__v4si) __B,
5749 (__v16si)
5750 _mm512_setzero_si512 (),
5751 (__mmask16) -1);
5752}
5753
5754static __inline__ __m512i __DEFAULT_FN_ATTRS
5755_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5756{
5757 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5758 (__v4si) __B,
5759 (__v16si) __W,
5760 (__mmask16) __U);
5761}
5762
5763static __inline__ __m512i __DEFAULT_FN_ATTRS
5764_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5765{
5766 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5767 (__v4si) __B,
5768 (__v16si)
5769 _mm512_setzero_si512 (),
5770 (__mmask16) __U);
5771}
5772
5773static __inline__ __m512i __DEFAULT_FN_ATTRS
5774_mm512_sra_epi64 (__m512i __A, __m128i __B)
5775{
5776 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5777 (__v2di) __B,
5778 (__v8di)
5779 _mm512_setzero_si512 (),
5780 (__mmask8) -1);
5781}
5782
5783static __inline__ __m512i __DEFAULT_FN_ATTRS
5784_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5785{
5786 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5787 (__v2di) __B,
5788 (__v8di) __W,
5789 (__mmask8) __U);
5790}
5791
5792static __inline__ __m512i __DEFAULT_FN_ATTRS
5793_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5794{
5795 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5796 (__v2di) __B,
5797 (__v8di)
5798 _mm512_setzero_si512 (),
5799 (__mmask8) __U);
5800}
5801
5802static __inline__ __m512i __DEFAULT_FN_ATTRS
5803_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5804{
5805 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5806 (__v16si) __Y,
5807 (__v16si)
5808 _mm512_setzero_si512 (),
5809 (__mmask16) -1);
5810}
5811
5812static __inline__ __m512i __DEFAULT_FN_ATTRS
5813_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5814{
5815 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5816 (__v16si) __Y,
5817 (__v16si) __W,
5818 (__mmask16) __U);
5819}
5820
5821static __inline__ __m512i __DEFAULT_FN_ATTRS
5822_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5823{
5824 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5825 (__v16si) __Y,
5826 (__v16si)
5827 _mm512_setzero_si512 (),
5828 (__mmask16) __U);
5829}
5830
5831static __inline__ __m512i __DEFAULT_FN_ATTRS
5832_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5833{
5834 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5835 (__v8di) __Y,
5836 (__v8di)
5837 _mm512_setzero_si512 (),
5838 (__mmask8) -1);
5839}
5840
5841static __inline__ __m512i __DEFAULT_FN_ATTRS
5842_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5843{
5844 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5845 (__v8di) __Y,
5846 (__v8di) __W,
5847 (__mmask8) __U);
5848}
5849
5850static __inline__ __m512i __DEFAULT_FN_ATTRS
5851_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5852{
5853 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5854 (__v8di) __Y,
5855 (__v8di)
5856 _mm512_setzero_si512 (),
5857 (__mmask8) __U);
5858}
5859
5860static __inline__ __m512i __DEFAULT_FN_ATTRS
5861_mm512_srl_epi32 (__m512i __A, __m128i __B)
5862{
5863 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5864 (__v4si) __B,
5865 (__v16si)
5866 _mm512_setzero_si512 (),
5867 (__mmask16) -1);
5868}
5869
5870static __inline__ __m512i __DEFAULT_FN_ATTRS
5871_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5872{
5873 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5874 (__v4si) __B,
5875 (__v16si) __W,
5876 (__mmask16) __U);
5877}
5878
5879static __inline__ __m512i __DEFAULT_FN_ATTRS
5880_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5881{
5882 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5883 (__v4si) __B,
5884 (__v16si)
5885 _mm512_setzero_si512 (),
5886 (__mmask16) __U);
5887}
5888
5889static __inline__ __m512i __DEFAULT_FN_ATTRS
5890_mm512_srl_epi64 (__m512i __A, __m128i __B)
5891{
5892 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5893 (__v2di) __B,
5894 (__v8di)
5895 _mm512_setzero_si512 (),
5896 (__mmask8) -1);
5897}
5898
5899static __inline__ __m512i __DEFAULT_FN_ATTRS
5900_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5901{
5902 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5903 (__v2di) __B,
5904 (__v8di) __W,
5905 (__mmask8) __U);
5906}
5907
5908static __inline__ __m512i __DEFAULT_FN_ATTRS
5909_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5910{
5911 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5912 (__v2di) __B,
5913 (__v8di)
5914 _mm512_setzero_si512 (),
5915 (__mmask8) __U);
5916}
5917
5918static __inline__ __m512i __DEFAULT_FN_ATTRS
5919_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5920{
5921 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5922 (__v16si) __Y,
5923 (__v16si)
5924 _mm512_setzero_si512 (),
5925 (__mmask16) -1);
5926}
5927
5928static __inline__ __m512i __DEFAULT_FN_ATTRS
5929_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5930{
5931 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5932 (__v16si) __Y,
5933 (__v16si) __W,
5934 (__mmask16) __U);
5935}
5936
5937static __inline__ __m512i __DEFAULT_FN_ATTRS
5938_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5939{
5940 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5941 (__v16si) __Y,
5942 (__v16si)
5943 _mm512_setzero_si512 (),
5944 (__mmask16) __U);
5945}
5946
5947static __inline__ __m512i __DEFAULT_FN_ATTRS
5948_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5949{
5950 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5951 (__v8di) __Y,
5952 (__v8di)
5953 _mm512_setzero_si512 (),
5954 (__mmask8) -1);
5955}
5956
5957static __inline__ __m512i __DEFAULT_FN_ATTRS
5958_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5959{
5960 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5961 (__v8di) __Y,
5962 (__v8di) __W,
5963 (__mmask8) __U);
5964}
5965
5966static __inline__ __m512i __DEFAULT_FN_ATTRS
5967_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5968{
5969 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5970 (__v8di) __Y,
5971 (__v8di)
5972 _mm512_setzero_si512 (),
5973 (__mmask8) __U);
5974}
5975
Craig Topper8c18e112016-05-17 04:41:50 +00005976#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5977 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5978 (__v16si)(__m512i)(B), \
5979 (__v16si)(__m512i)(C), (int)(imm), \
5980 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005981
Craig Topper8c18e112016-05-17 04:41:50 +00005982#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5983 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5984 (__v16si)(__m512i)(B), \
5985 (__v16si)(__m512i)(C), (int)(imm), \
5986 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005987
Craig Topper8c18e112016-05-17 04:41:50 +00005988#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5989 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5990 (__v16si)(__m512i)(B), \
5991 (__v16si)(__m512i)(C), \
5992 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005993
Craig Topper8c18e112016-05-17 04:41:50 +00005994#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5995 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5996 (__v8di)(__m512i)(B), \
5997 (__v8di)(__m512i)(C), (int)(imm), \
5998 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005999
Craig Topper8c18e112016-05-17 04:41:50 +00006000#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6001 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6002 (__v8di)(__m512i)(B), \
6003 (__v8di)(__m512i)(C), (int)(imm), \
6004 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006005
Craig Topper8c18e112016-05-17 04:41:50 +00006006#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6007 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
6008 (__v8di)(__m512i)(B), \
6009 (__v8di)(__m512i)(C), (int)(imm), \
6010 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006011
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006012static __inline__ __m512d __DEFAULT_FN_ATTRS
6013_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
6014{
6015 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
6016 (__v8df) __B,
6017 (__v8df)
6018 _mm512_setzero_pd (),
6019 (__mmask8) __U);
6020}
6021
6022static __inline__ __m512 __DEFAULT_FN_ATTRS
6023_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6024{
6025 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
6026 (__v16sf) __B,
6027 (__v16sf) __W,
6028 (__mmask16) __U);
6029}
6030
6031static __inline__ __m512 __DEFAULT_FN_ATTRS
6032_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
6033{
6034 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
6035 (__v16sf) __B,
6036 (__v16sf)
6037 _mm512_setzero_ps (),
6038 (__mmask16) __U);
6039}
6040
6041static __inline__ __m512d __DEFAULT_FN_ATTRS
6042_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6043{
6044 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6045 (__v8df) __B,
6046 (__v8df) __W,
6047 (__mmask8) __U);
6048}
6049
6050static __inline__ __m512d __DEFAULT_FN_ATTRS
6051_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
6052{
6053 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6054 (__v8df) __B,
6055 (__v8df)
6056 _mm512_setzero_pd (),
6057 (__mmask8) __U);
6058}
6059
6060static __inline__ __m512 __DEFAULT_FN_ATTRS
6061_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6062{
6063 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6064 (__v16sf) __B,
6065 (__v16sf) __W,
6066 (__mmask16) __U);
6067}
6068
6069static __inline__ __m512 __DEFAULT_FN_ATTRS
6070_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
6071{
6072 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6073 (__v16sf) __B,
6074 (__v16sf)
6075 _mm512_setzero_ps (),
6076 (__mmask16) __U);
6077}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00006078
Craig Topper8c18e112016-05-17 04:41:50 +00006079#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
6080 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006081
Craig Topper8c18e112016-05-17 04:41:50 +00006082#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
6083 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006084
Craig Topper8c18e112016-05-17 04:41:50 +00006085#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
6086 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006087
Craig Topper8c18e112016-05-17 04:41:50 +00006088#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
6089 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006090
6091static __inline__ unsigned __DEFAULT_FN_ATTRS
6092_mm_cvtsd_u32 (__m128d __A)
6093{
6094 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
6095 _MM_FROUND_CUR_DIRECTION);
6096}
6097
Craig Topper8c18e112016-05-17 04:41:50 +00006098#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
6099 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
6100 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006101
6102static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6103_mm_cvtsd_u64 (__m128d __A)
6104{
6105 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
6106 __A,
6107 _MM_FROUND_CUR_DIRECTION);
6108}
6109
Craig Topper8c18e112016-05-17 04:41:50 +00006110#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
6111 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006112
Craig Topper8c18e112016-05-17 04:41:50 +00006113#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
6114 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006115
Craig Topper8c18e112016-05-17 04:41:50 +00006116#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
6117 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006118
Craig Topper8c18e112016-05-17 04:41:50 +00006119#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
6120 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006121
Craig Topper8c18e112016-05-17 04:41:50 +00006122#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
6123 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006124
6125static __inline__ unsigned __DEFAULT_FN_ATTRS
6126_mm_cvtss_u32 (__m128 __A)
6127{
6128 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
6129 _MM_FROUND_CUR_DIRECTION);
6130}
6131
Craig Topper8c18e112016-05-17 04:41:50 +00006132#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
6133 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
6134 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006135
6136static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6137_mm_cvtss_u64 (__m128 __A)
6138{
6139 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
6140 __A,
6141 _MM_FROUND_CUR_DIRECTION);
6142}
6143
Craig Topper8c18e112016-05-17 04:41:50 +00006144#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
6145 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006146
Craig Topper8c18e112016-05-17 04:41:50 +00006147#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6148 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006149
6150static __inline__ int __DEFAULT_FN_ATTRS
6151_mm_cvttsd_i32 (__m128d __A)
6152{
6153 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6154 _MM_FROUND_CUR_DIRECTION);
6155}
6156
Craig Topper8c18e112016-05-17 04:41:50 +00006157#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6158 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006159
Craig Topper8c18e112016-05-17 04:41:50 +00006160#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6161 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006162
6163static __inline__ long long __DEFAULT_FN_ATTRS
6164_mm_cvttsd_i64 (__m128d __A)
6165{
6166 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6167 _MM_FROUND_CUR_DIRECTION);
6168}
6169
Craig Topper8c18e112016-05-17 04:41:50 +00006170#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6171 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006172
6173static __inline__ unsigned __DEFAULT_FN_ATTRS
6174_mm_cvttsd_u32 (__m128d __A)
6175{
6176 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6177 _MM_FROUND_CUR_DIRECTION);
6178}
6179
Craig Topper8c18e112016-05-17 04:41:50 +00006180#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6181 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6182 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006183
6184static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6185_mm_cvttsd_u64 (__m128d __A)
6186{
6187 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6188 __A,
6189 _MM_FROUND_CUR_DIRECTION);
6190}
6191
Craig Topper8c18e112016-05-17 04:41:50 +00006192#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6193 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006194
Craig Topper8c18e112016-05-17 04:41:50 +00006195#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6196 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006197
6198static __inline__ int __DEFAULT_FN_ATTRS
6199_mm_cvttss_i32 (__m128 __A)
6200{
6201 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6202 _MM_FROUND_CUR_DIRECTION);
6203}
6204
Craig Topper8c18e112016-05-17 04:41:50 +00006205#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6206 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006207
Craig Topper8c18e112016-05-17 04:41:50 +00006208#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6209 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006210
6211static __inline__ long long __DEFAULT_FN_ATTRS
6212_mm_cvttss_i64 (__m128 __A)
6213{
6214 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6215 _MM_FROUND_CUR_DIRECTION);
6216}
6217
Craig Topper8c18e112016-05-17 04:41:50 +00006218#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6219 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006220
6221static __inline__ unsigned __DEFAULT_FN_ATTRS
6222_mm_cvttss_u32 (__m128 __A)
6223{
6224 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6225 _MM_FROUND_CUR_DIRECTION);
6226}
6227
Craig Topper8c18e112016-05-17 04:41:50 +00006228#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6229 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6230 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006231
6232static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6233_mm_cvttss_u64 (__m128 __A)
6234{
6235 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6236 __A,
6237 _MM_FROUND_CUR_DIRECTION);
6238}
6239
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006240static __inline__ __m512d __DEFAULT_FN_ATTRS
6241_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6242 __m512d __B)
6243{
6244 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6245 (__v8di) __I
6246 /* idx */ ,
6247 (__v8df) __B,
6248 (__mmask8) __U);
6249}
6250
6251static __inline__ __m512 __DEFAULT_FN_ATTRS
6252_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6253 __m512 __B)
6254{
6255 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6256 (__v16si) __I
6257 /* idx */ ,
6258 (__v16sf) __B,
6259 (__mmask16) __U);
6260}
6261
6262static __inline__ __m512i __DEFAULT_FN_ATTRS
6263_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6264 __mmask8 __U, __m512i __B)
6265{
6266 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6267 (__v8di) __I
6268 /* idx */ ,
6269 (__v8di) __B,
6270 (__mmask8) __U);
6271}
6272
Craig Topper8c18e112016-05-17 04:41:50 +00006273#define _mm512_permute_pd(X, C) __extension__ ({ \
6274 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6275 (__v8df)_mm512_undefined_pd(), \
6276 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006277
Craig Topper8c18e112016-05-17 04:41:50 +00006278#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6279 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6280 (__v8df)(__m512d)(W), \
6281 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006282
Craig Topper8c18e112016-05-17 04:41:50 +00006283#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6284 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6285 (__v8df)_mm512_setzero_pd(), \
6286 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006287
Craig Topper8c18e112016-05-17 04:41:50 +00006288#define _mm512_permute_ps(X, C) __extension__ ({ \
6289 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6290 (__v16sf)_mm512_undefined_ps(), \
6291 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006292
Craig Topper8c18e112016-05-17 04:41:50 +00006293#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6294 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6295 (__v16sf)(__m512)(W), \
6296 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006297
Craig Topper8c18e112016-05-17 04:41:50 +00006298#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6299 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6300 (__v16sf)_mm512_setzero_ps(), \
6301 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006302
6303static __inline__ __m512d __DEFAULT_FN_ATTRS
6304_mm512_permutevar_pd (__m512d __A, __m512i __C)
6305{
6306 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6307 (__v8di) __C,
6308 (__v8df)
6309 _mm512_undefined_pd (),
6310 (__mmask8) -1);
6311}
6312
6313static __inline__ __m512d __DEFAULT_FN_ATTRS
6314_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6315{
6316 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6317 (__v8di) __C,
6318 (__v8df) __W,
6319 (__mmask8) __U);
6320}
6321
6322static __inline__ __m512d __DEFAULT_FN_ATTRS
6323_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6324{
6325 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6326 (__v8di) __C,
6327 (__v8df)
6328 _mm512_setzero_pd (),
6329 (__mmask8) __U);
6330}
6331
6332static __inline__ __m512 __DEFAULT_FN_ATTRS
6333_mm512_permutevar_ps (__m512 __A, __m512i __C)
6334{
6335 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6336 (__v16si) __C,
6337 (__v16sf)
6338 _mm512_undefined_ps (),
6339 (__mmask16) -1);
6340}
6341
6342static __inline__ __m512 __DEFAULT_FN_ATTRS
6343_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6344{
6345 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6346 (__v16si) __C,
6347 (__v16sf) __W,
6348 (__mmask16) __U);
6349}
6350
6351static __inline__ __m512 __DEFAULT_FN_ATTRS
6352_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6353{
6354 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6355 (__v16si) __C,
6356 (__v16sf)
6357 _mm512_setzero_ps (),
6358 (__mmask16) __U);
6359}
6360
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006361static __inline __m512d __DEFAULT_FN_ATTRS
6362_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006363{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006364 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6365 /* idx */ ,
6366 (__v8df) __A,
6367 (__v8df) __B,
6368 (__mmask8) -1);
6369}
6370
6371static __inline__ __m512d __DEFAULT_FN_ATTRS
6372_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6373{
6374 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6375 /* idx */ ,
6376 (__v8df) __A,
6377 (__v8df) __B,
6378 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006379}
6380
6381static __inline__ __m512d __DEFAULT_FN_ATTRS
6382_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6383 __m512d __B)
6384{
6385 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006386 /* idx */ ,
6387 (__v8df) __A,
6388 (__v8df) __B,
6389 (__mmask8) __U);
6390}
6391
6392static __inline __m512 __DEFAULT_FN_ATTRS
6393_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6394{
6395 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6396 /* idx */ ,
6397 (__v16sf) __A,
6398 (__v16sf) __B,
6399 (__mmask16) -1);
6400}
6401
6402static __inline__ __m512 __DEFAULT_FN_ATTRS
6403_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6404{
6405 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6406 /* idx */ ,
6407 (__v16sf) __A,
6408 (__v16sf) __B,
6409 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006410}
6411
6412static __inline__ __m512 __DEFAULT_FN_ATTRS
6413_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6414 __m512 __B)
6415{
6416 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006417 /* idx */ ,
6418 (__v16sf) __A,
6419 (__v16sf) __B,
6420 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006421}
6422
Michael Zuckerman07525092016-04-11 10:22:07 +00006423static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6424_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6425{
6426 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6427 (__v16si) __B,
6428 (__mmask16) -1);
6429}
6430
6431static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6432_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6433{
6434 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6435 (__v16si) __B, __U);
6436}
6437
6438static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6439_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6440{
6441 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6442 (__v8di) __B,
6443 (__mmask8) -1);
6444}
6445
6446static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6447_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6448{
6449 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6450 (__v8di) __B, __U);
6451}
6452
Craig Topper8c18e112016-05-17 04:41:50 +00006453#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6454 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6455 (__v8si)_mm256_undefined_si256(), \
6456 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006457
Craig Topper8c18e112016-05-17 04:41:50 +00006458#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6459 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6460 (__v8si)(__m256i)(W), \
6461 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006462
Craig Topper8c18e112016-05-17 04:41:50 +00006463#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6464 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6465 (__v8si)_mm256_setzero_si256(), \
6466 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006467
6468static __inline__ __m256i __DEFAULT_FN_ATTRS
6469_mm512_cvttpd_epu32 (__m512d __A)
6470{
6471 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6472 (__v8si)
6473 _mm256_undefined_si256 (),
6474 (__mmask8) -1,
6475 _MM_FROUND_CUR_DIRECTION);
6476}
6477
6478static __inline__ __m256i __DEFAULT_FN_ATTRS
6479_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6480{
6481 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6482 (__v8si) __W,
6483 (__mmask8) __U,
6484 _MM_FROUND_CUR_DIRECTION);
6485}
6486
6487static __inline__ __m256i __DEFAULT_FN_ATTRS
6488_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6489{
6490 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6491 (__v8si)
6492 _mm256_setzero_si256 (),
6493 (__mmask8) __U,
6494 _MM_FROUND_CUR_DIRECTION);
6495}
Michael Zuckerman07525092016-04-11 10:22:07 +00006496
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006497static __inline__ __m512i __DEFAULT_FN_ATTRS
6498_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6499 __m512i __B)
6500{
6501 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6502 (__v16si) __B,
6503 (__v16si) __W,
6504 (__mmask16) __U);
6505}
6506
6507static __inline__ __m512i __DEFAULT_FN_ATTRS
6508_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6509{
6510 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6511 (__v16si) __B,
6512 (__v16si)
6513 _mm512_setzero_si512 (),
6514 (__mmask16) __U);
6515}
6516
6517static __inline__ __m512i __DEFAULT_FN_ATTRS
6518_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6519{
6520 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6521 (__v8di) __B,
6522 (__v8di)
6523 _mm512_setzero_si512 (),
6524 (__mmask8) -1);
6525}
6526
6527static __inline__ __m512i __DEFAULT_FN_ATTRS
6528_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6529{
6530 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6531 (__v8di) __B,
6532 (__v8di) __W,
6533 (__mmask8) __U);
6534}
6535
6536static __inline__ __m512i __DEFAULT_FN_ATTRS
6537_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6538{
6539 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6540 (__v8di) __B,
6541 (__v8di)
6542 _mm512_setzero_si512 (),
6543 (__mmask8) __U);
6544}
6545
6546static __inline__ __m512i __DEFAULT_FN_ATTRS
6547_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6548{
6549 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6550 (__v16si) __B,
6551 (__v16si)
6552 _mm512_setzero_si512 (),
6553 (__mmask16) -1);
6554}
6555
6556static __inline__ __m512i __DEFAULT_FN_ATTRS
6557_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6558 __m512i __B)
6559{
6560 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6561 (__v16si) __B,
6562 (__v16si) __W,
6563 (__mmask16) __U);
6564}
6565
6566static __inline__ __m512i __DEFAULT_FN_ATTRS
6567_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6568{
6569 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6570 (__v16si) __B,
6571 (__v16si)
6572 _mm512_setzero_si512 (),
6573 (__mmask16) __U);
6574}
6575
6576static __inline__ __m512i __DEFAULT_FN_ATTRS
6577_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6578{
6579 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6580 (__v8di) __B,
6581 (__v8di)
6582 _mm512_setzero_si512 (),
6583 (__mmask8) -1);
6584}
6585
6586static __inline__ __m512i __DEFAULT_FN_ATTRS
6587_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6588{
6589 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6590 (__v8di) __B,
6591 (__v8di) __W,
6592 (__mmask8) __U);
6593}
6594
6595static __inline__ __m512i __DEFAULT_FN_ATTRS
6596_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6597{
6598 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6599 (__v8di) __B,
6600 (__v8di)
6601 _mm512_setzero_si512 (),
6602 (__mmask8) __U);
6603}
6604
Craig Topper8c18e112016-05-17 04:41:50 +00006605#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6606 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6607 (__v2df)(__m128d)(B), \
6608 (__v2df)_mm_setzero_pd(), \
6609 (__mmask8)-1, (int)(imm), \
6610 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006611
Craig Topper8c18e112016-05-17 04:41:50 +00006612#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6613 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6614 (__v2df)(__m128d)(B), \
6615 (__v2df)_mm_setzero_pd(), \
6616 (__mmask8)-1, (int)(imm), \
6617 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006618
Craig Topper8c18e112016-05-17 04:41:50 +00006619#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6620 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6621 (__v2df)(__m128d)(B), \
6622 (__v2df)(__m128d)(W), \
6623 (__mmask8)(U), (int)(imm), \
6624 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006625
Craig Topper8c18e112016-05-17 04:41:50 +00006626#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6627 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6628 (__v2df)(__m128d)(B), \
6629 (__v2df)(__m128d)(W), \
6630 (__mmask8)(U), (int)(I), \
6631 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006632
Craig Topper8c18e112016-05-17 04:41:50 +00006633#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6634 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6635 (__v2df)(__m128d)(B), \
6636 (__v2df)_mm_setzero_pd(), \
6637 (__mmask8)(U), (int)(I), \
6638 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006639
Craig Topper8c18e112016-05-17 04:41:50 +00006640#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6641 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6642 (__v2df)(__m128d)(B), \
6643 (__v2df)_mm_setzero_pd(), \
6644 (__mmask8)(U), (int)(I), \
6645 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006646
Craig Topper8c18e112016-05-17 04:41:50 +00006647#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6648 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6649 (__v4sf)(__m128)(B), \
6650 (__v4sf)_mm_setzero_ps(), \
6651 (__mmask8)-1, (int)(imm), \
6652 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006653
Craig Topper8c18e112016-05-17 04:41:50 +00006654#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6655 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6656 (__v4sf)(__m128)(B), \
6657 (__v4sf)_mm_setzero_ps(), \
6658 (__mmask8)-1, (int)(imm), \
6659 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006660
Craig Topper8c18e112016-05-17 04:41:50 +00006661#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6662 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6663 (__v4sf)(__m128)(B), \
6664 (__v4sf)(__m128)(W), \
6665 (__mmask8)(U), (int)(I), \
6666 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006667
Craig Topper8c18e112016-05-17 04:41:50 +00006668#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6669 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6670 (__v4sf)(__m128)(B), \
6671 (__v4sf)(__m128)(W), \
6672 (__mmask8)(U), (int)(I), \
6673 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006674
Craig Topper8c18e112016-05-17 04:41:50 +00006675#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6676 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6677 (__v4sf)(__m128)(B), \
6678 (__v4sf)_mm_setzero_ps(), \
6679 (__mmask8)(U), (int)(I), \
6680 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006681
Craig Topper8c18e112016-05-17 04:41:50 +00006682#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6683 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6684 (__v4sf)(__m128)(B), \
6685 (__v4sf)_mm_setzero_ps(), \
6686 (__mmask8)(U), (int)(I), \
6687 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006688
Craig Topper8c18e112016-05-17 04:41:50 +00006689#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6690 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6691 (__v8df)(__m512d)(B), \
6692 (__v8df)_mm512_undefined_pd(), \
6693 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006694
Craig Topper8c18e112016-05-17 04:41:50 +00006695#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6696 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6697 (__v8df)(__m512d)(B), \
6698 (__v8df)(__m512d)(W), \
6699 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006700
Craig Topper8c18e112016-05-17 04:41:50 +00006701#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6702 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6703 (__v8df)(__m512d)(B), \
6704 (__v8df)_mm512_setzero_pd(), \
6705 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006706
6707static __inline__ __m512d __DEFAULT_FN_ATTRS
6708_mm512_scalef_pd (__m512d __A, __m512d __B)
6709{
6710 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6711 (__v8df) __B,
6712 (__v8df)
6713 _mm512_undefined_pd (),
6714 (__mmask8) -1,
6715 _MM_FROUND_CUR_DIRECTION);
6716}
6717
6718static __inline__ __m512d __DEFAULT_FN_ATTRS
6719_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6720{
6721 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6722 (__v8df) __B,
6723 (__v8df) __W,
6724 (__mmask8) __U,
6725 _MM_FROUND_CUR_DIRECTION);
6726}
6727
6728static __inline__ __m512d __DEFAULT_FN_ATTRS
6729_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6730{
6731 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6732 (__v8df) __B,
6733 (__v8df)
6734 _mm512_setzero_pd (),
6735 (__mmask8) __U,
6736 _MM_FROUND_CUR_DIRECTION);
6737}
6738
Craig Topper8c18e112016-05-17 04:41:50 +00006739#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6740 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6741 (__v16sf)(__m512)(B), \
6742 (__v16sf)_mm512_undefined_ps(), \
6743 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006744
Craig Topper8c18e112016-05-17 04:41:50 +00006745#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6746 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6747 (__v16sf)(__m512)(B), \
6748 (__v16sf)(__m512)(W), \
6749 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006750
Craig Topper8c18e112016-05-17 04:41:50 +00006751#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6752 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6753 (__v16sf)(__m512)(B), \
6754 (__v16sf)_mm512_setzero_ps(), \
6755 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006756
6757static __inline__ __m512 __DEFAULT_FN_ATTRS
6758_mm512_scalef_ps (__m512 __A, __m512 __B)
6759{
6760 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6761 (__v16sf) __B,
6762 (__v16sf)
6763 _mm512_undefined_ps (),
6764 (__mmask16) -1,
6765 _MM_FROUND_CUR_DIRECTION);
6766}
6767
6768static __inline__ __m512 __DEFAULT_FN_ATTRS
6769_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6770{
6771 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6772 (__v16sf) __B,
6773 (__v16sf) __W,
6774 (__mmask16) __U,
6775 _MM_FROUND_CUR_DIRECTION);
6776}
6777
6778static __inline__ __m512 __DEFAULT_FN_ATTRS
6779_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6780{
6781 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6782 (__v16sf) __B,
6783 (__v16sf)
6784 _mm512_setzero_ps (),
6785 (__mmask16) __U,
6786 _MM_FROUND_CUR_DIRECTION);
6787}
6788
Craig Topper8c18e112016-05-17 04:41:50 +00006789#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6790 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6791 (__v2df)(__m128d)(B), \
6792 (__v2df)_mm_setzero_pd(), \
6793 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006794
6795static __inline__ __m128d __DEFAULT_FN_ATTRS
6796_mm_scalef_sd (__m128d __A, __m128d __B)
6797{
6798 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6799 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6800 (__mmask8) -1,
6801 _MM_FROUND_CUR_DIRECTION);
6802}
6803
6804static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006805_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006806{
6807 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6808 (__v2df) __B,
6809 (__v2df) __W,
6810 (__mmask8) __U,
6811 _MM_FROUND_CUR_DIRECTION);
6812}
6813
Craig Topper8c18e112016-05-17 04:41:50 +00006814#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6815 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6816 (__v2df)(__m128d)(B), \
6817 (__v2df)(__m128d)(W), \
6818 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006819
6820static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006821_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006822{
6823 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6824 (__v2df) __B,
6825 (__v2df) _mm_setzero_pd (),
6826 (__mmask8) __U,
6827 _MM_FROUND_CUR_DIRECTION);
6828}
6829
Craig Topper8c18e112016-05-17 04:41:50 +00006830#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6831 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6832 (__v2df)(__m128d)(B), \
6833 (__v2df)_mm_setzero_pd(), \
6834 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006835
Craig Topper8c18e112016-05-17 04:41:50 +00006836#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6837 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6838 (__v4sf)(__m128)(B), \
6839 (__v4sf)_mm_setzero_ps(), \
6840 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006841
6842static __inline__ __m128 __DEFAULT_FN_ATTRS
6843_mm_scalef_ss (__m128 __A, __m128 __B)
6844{
6845 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6846 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6847 (__mmask8) -1,
6848 _MM_FROUND_CUR_DIRECTION);
6849}
6850
6851static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006852_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006853{
6854 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6855 (__v4sf) __B,
6856 (__v4sf) __W,
6857 (__mmask8) __U,
6858 _MM_FROUND_CUR_DIRECTION);
6859}
6860
Craig Topper8c18e112016-05-17 04:41:50 +00006861#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6862 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6863 (__v4sf)(__m128)(B), \
6864 (__v4sf)(__m128)(W), \
6865 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006866
6867static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006868_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006869{
6870 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6871 (__v4sf) __B,
6872 (__v4sf) _mm_setzero_ps (),
6873 (__mmask8) __U,
6874 _MM_FROUND_CUR_DIRECTION);
6875}
6876
Craig Topper8c18e112016-05-17 04:41:50 +00006877#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6878 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6879 (__v4sf)(__m128)(B), \
6880 (__v4sf)_mm_setzero_ps(), \
6881 (__mmask8)(U), \
6882 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006883
Craig Topper79d05c92016-05-15 20:10:06 +00006884#define _mm512_srai_epi32(A, B) __extension__ ({ \
6885 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6886 (__v16si)_mm512_setzero_si512(), \
6887 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006888
Craig Topper8c18e112016-05-17 04:41:50 +00006889#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6890 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6891 (__v16si)(__m512i)(W), \
6892 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006893
Craig Topper8c18e112016-05-17 04:41:50 +00006894#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6895 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6896 (__v16si)_mm512_setzero_si512(), \
6897 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006898
Craig Topper8c18e112016-05-17 04:41:50 +00006899#define _mm512_srai_epi64(A, B) __extension__ ({ \
6900 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6901 (__v8di)_mm512_setzero_si512(), \
6902 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006903
Craig Topper8c18e112016-05-17 04:41:50 +00006904#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6905 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6906 (__v8di)(__m512i)(W), \
6907 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006908
Craig Topper8c18e112016-05-17 04:41:50 +00006909#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6910 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6911 (__v8di)_mm512_setzero_si512(), \
6912 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006913
Craig Topper8c18e112016-05-17 04:41:50 +00006914#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6915 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6916 (__v16sf)(__m512)(B), (int)(imm), \
6917 (__v16sf)_mm512_undefined_ps(), \
6918 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006919
Craig Topper8c18e112016-05-17 04:41:50 +00006920#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6921 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6922 (__v16sf)(__m512)(B), (int)(imm), \
6923 (__v16sf)(__m512)(W), \
6924 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006925
Craig Topper8c18e112016-05-17 04:41:50 +00006926#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6927 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6928 (__v16sf)(__m512)(B), (int)(imm), \
6929 (__v16sf)_mm512_setzero_ps(), \
6930 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006931
Craig Topper8c18e112016-05-17 04:41:50 +00006932#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6933 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6934 (__v8df)(__m512d)(B), (int)(imm), \
6935 (__v8df)_mm512_undefined_pd(), \
6936 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006937
Craig Topper8c18e112016-05-17 04:41:50 +00006938#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6939 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6940 (__v8df)(__m512d)(B), (int)(imm), \
6941 (__v8df)(__m512d)(W), \
6942 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006943
Craig Topper8c18e112016-05-17 04:41:50 +00006944#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6945 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6946 (__v8df)(__m512d)(B), (int)(imm), \
6947 (__v8df)_mm512_setzero_pd(), \
6948 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006949
Craig Topper8c18e112016-05-17 04:41:50 +00006950#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6951 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6952 (__v16si)(__m512i)(B), (int)(imm), \
6953 (__v16si)_mm512_setzero_si512(), \
6954 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006955
Craig Topper8c18e112016-05-17 04:41:50 +00006956#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6957 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6958 (__v16si)(__m512i)(B), (int)(imm), \
6959 (__v16si)(__m512i)(W), \
6960 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006961
Craig Topper8c18e112016-05-17 04:41:50 +00006962#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6963 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6964 (__v16si)(__m512i)(B), (int)(imm), \
6965 (__v16si)_mm512_setzero_si512(), \
6966 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006967
Craig Topper8c18e112016-05-17 04:41:50 +00006968#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6969 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6970 (__v8di)(__m512i)(B), (int)(imm), \
6971 (__v8di)_mm512_setzero_si512(), \
6972 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006973
Craig Topper8c18e112016-05-17 04:41:50 +00006974#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6975 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6976 (__v8di)(__m512i)(B), (int)(imm), \
6977 (__v8di)(__m512i)(W), \
6978 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006979
Craig Topper8c18e112016-05-17 04:41:50 +00006980#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6981 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6982 (__v8di)(__m512i)(B), (int)(imm), \
6983 (__v8di)_mm512_setzero_si512(), \
6984 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006985
Craig Topper8c18e112016-05-17 04:41:50 +00006986#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6987 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6988 (__v8df)(__m512d)(V), (int)(imm), \
6989 (__v8df)_mm512_undefined_pd(), \
6990 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006991
Craig Topper8c18e112016-05-17 04:41:50 +00006992#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6993 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6994 (__v8df)(__m512d)(V), (int)(imm), \
6995 (__v8df)(__m512d)(W), \
6996 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006997
Craig Topper8c18e112016-05-17 04:41:50 +00006998#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6999 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
7000 (__v8df)(__m512d)(V), (int)(imm), \
7001 (__v8df)_mm512_setzero_pd(), \
7002 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007003
Craig Topper8c18e112016-05-17 04:41:50 +00007004#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
7005 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7006 (__v16sf)(__m512)(V), (int)(imm), \
7007 (__v16sf)_mm512_undefined_ps(), \
7008 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007009
Craig Topper8c18e112016-05-17 04:41:50 +00007010#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
7011 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7012 (__v16sf)(__m512)(V), (int)(imm), \
7013 (__v16sf)(__m512)(W), \
7014 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007015
Craig Topper8c18e112016-05-17 04:41:50 +00007016#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
7017 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
7018 (__v16sf)(__m512)(V), (int)(imm), \
7019 (__v16sf)_mm512_setzero_ps(), \
7020 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007021
Craig Topper8c18e112016-05-17 04:41:50 +00007022#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
7023 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7024 (__v2df)(__m128d)(A), \
7025 (__v2df)_mm_setzero_pd(), \
7026 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007027
7028static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007029_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007030{
7031 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7032 (__v2df) __A,
7033 (__v2df) __W,
7034 (__mmask8) __U,
7035 _MM_FROUND_CUR_DIRECTION);
7036}
7037
Craig Topper8c18e112016-05-17 04:41:50 +00007038#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
7039 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7040 (__v2df)(__m128d)(A), \
7041 (__v2df)(__m128d)(W), \
7042 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007043
7044static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007045_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007046{
7047 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7048 (__v2df) __A,
7049 (__v2df) _mm_setzero_pd (),
7050 (__mmask8) __U,
7051 _MM_FROUND_CUR_DIRECTION);
7052}
7053
Craig Topper8c18e112016-05-17 04:41:50 +00007054#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
7055 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7056 (__v2df)(__m128d)(A), \
7057 (__v2df)_mm_setzero_pd(), \
7058 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007059
Craig Topper8c18e112016-05-17 04:41:50 +00007060#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
7061 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7062 (__v4sf)(__m128)(A), \
7063 (__v4sf)_mm_setzero_ps(), \
7064 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007065
7066static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007067_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007068{
7069 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
7070 (__v4sf) __A,
7071 (__v4sf) __W,
7072 (__mmask8) __U,
7073 _MM_FROUND_CUR_DIRECTION);
7074}
7075
Craig Topper8c18e112016-05-17 04:41:50 +00007076#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
7077 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7078 (__v4sf)(__m128)(A), \
7079 (__v4sf)(__m128)(W), (__mmask8)(U), \
7080 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007081
7082static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007083_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007084{
7085 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
7086 (__v4sf) __B,
7087 (__v4sf) _mm_setzero_ps (),
7088 (__mmask8) __U,
7089 _MM_FROUND_CUR_DIRECTION);
7090}
7091
Craig Topper8c18e112016-05-17 04:41:50 +00007092#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
7093 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7094 (__v4sf)(__m128)(A), \
7095 (__v4sf)_mm_setzero_ps(), \
7096 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007097
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007098static __inline__ __m512 __DEFAULT_FN_ATTRS
7099_mm512_broadcast_f32x4 (__m128 __A)
7100{
7101 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7102 (__v16sf)
7103 _mm512_undefined_ps (),
7104 (__mmask16) -1);
7105}
7106
7107static __inline__ __m512 __DEFAULT_FN_ATTRS
7108_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
7109{
7110 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7111 (__v16sf) __O,
7112 __M);
7113}
7114
7115static __inline__ __m512 __DEFAULT_FN_ATTRS
7116_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
7117{
7118 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7119 (__v16sf)
7120 _mm512_setzero_ps (),
7121 __M);
7122}
7123
7124static __inline__ __m512d __DEFAULT_FN_ATTRS
7125_mm512_broadcast_f64x4 (__m256d __A)
7126{
7127 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7128 (__v8df)
7129 _mm512_undefined_pd (),
7130 (__mmask8) -1);
7131}
7132
7133static __inline__ __m512d __DEFAULT_FN_ATTRS
7134_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
7135{
7136 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7137 (__v8df) __O,
7138 __M);
7139}
7140
7141static __inline__ __m512d __DEFAULT_FN_ATTRS
7142_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
7143{
7144 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7145 (__v8df)
7146 _mm512_setzero_pd (),
7147 __M);
7148}
7149
7150static __inline__ __m512i __DEFAULT_FN_ATTRS
7151_mm512_broadcast_i32x4 (__m128i __A)
7152{
7153 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7154 (__v16si)
7155 _mm512_undefined_epi32 (),
7156 (__mmask16) -1);
7157}
7158
7159static __inline__ __m512i __DEFAULT_FN_ATTRS
7160_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7161{
7162 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7163 (__v16si) __O,
7164 __M);
7165}
7166
7167static __inline__ __m512i __DEFAULT_FN_ATTRS
7168_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7169{
7170 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7171 (__v16si)
7172 _mm512_setzero_si512 (),
7173 __M);
7174}
7175
7176static __inline__ __m512i __DEFAULT_FN_ATTRS
7177_mm512_broadcast_i64x4 (__m256i __A)
7178{
7179 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7180 (__v8di)
7181 _mm512_undefined_epi32 (),
7182 (__mmask8) -1);
7183}
7184
7185static __inline__ __m512i __DEFAULT_FN_ATTRS
7186_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7187{
7188 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7189 (__v8di) __O,
7190 __M);
7191}
7192
7193static __inline__ __m512i __DEFAULT_FN_ATTRS
7194_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7195{
7196 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7197 (__v8di)
7198 _mm512_setzero_si512 (),
7199 __M);
7200}
7201
7202static __inline__ __m512d __DEFAULT_FN_ATTRS
7203_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7204{
7205 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7206 (__v8df) __O, __M);
7207}
7208
7209static __inline__ __m512d __DEFAULT_FN_ATTRS
7210_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7211{
7212 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7213 (__v8df)
7214 _mm512_setzero_pd (),
7215 __M);
7216}
7217
7218static __inline__ __m512 __DEFAULT_FN_ATTRS
7219_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7220{
7221 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7222 (__v16sf) __O, __M);
7223}
7224
7225static __inline__ __m512 __DEFAULT_FN_ATTRS
7226_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7227{
7228 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7229 (__v16sf)
7230 _mm512_setzero_ps (),
7231 __M);
7232}
7233
Michael Zuckermane1680612016-04-13 15:02:04 +00007234static __inline__ __m128i __DEFAULT_FN_ATTRS
7235_mm512_cvtsepi32_epi8 (__m512i __A)
7236{
7237 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7238 (__v16qi) _mm_undefined_si128 (),
7239 (__mmask16) -1);
7240}
7241
7242static __inline__ __m128i __DEFAULT_FN_ATTRS
7243_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7244{
7245 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7246 (__v16qi) __O, __M);
7247}
7248
7249static __inline__ __m128i __DEFAULT_FN_ATTRS
7250_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7251{
7252 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7253 (__v16qi) _mm_setzero_si128 (),
7254 __M);
7255}
7256
7257static __inline__ void __DEFAULT_FN_ATTRS
7258_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7259{
7260 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7261}
7262
7263static __inline__ __m256i __DEFAULT_FN_ATTRS
7264_mm512_cvtsepi32_epi16 (__m512i __A)
7265{
7266 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7267 (__v16hi) _mm256_undefined_si256 (),
7268 (__mmask16) -1);
7269}
7270
7271static __inline__ __m256i __DEFAULT_FN_ATTRS
7272_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7273{
7274 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7275 (__v16hi) __O, __M);
7276}
7277
7278static __inline__ __m256i __DEFAULT_FN_ATTRS
7279_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7280{
7281 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7282 (__v16hi) _mm256_setzero_si256 (),
7283 __M);
7284}
7285
7286static __inline__ void __DEFAULT_FN_ATTRS
7287_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7288{
7289 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7290}
7291
7292static __inline__ __m128i __DEFAULT_FN_ATTRS
7293_mm512_cvtsepi64_epi8 (__m512i __A)
7294{
7295 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7296 (__v16qi) _mm_undefined_si128 (),
7297 (__mmask8) -1);
7298}
7299
7300static __inline__ __m128i __DEFAULT_FN_ATTRS
7301_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7302{
7303 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7304 (__v16qi) __O, __M);
7305}
7306
7307static __inline__ __m128i __DEFAULT_FN_ATTRS
7308_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7309{
7310 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7311 (__v16qi) _mm_setzero_si128 (),
7312 __M);
7313}
7314
7315static __inline__ void __DEFAULT_FN_ATTRS
7316_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7317{
7318 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7319}
7320
7321static __inline__ __m256i __DEFAULT_FN_ATTRS
7322_mm512_cvtsepi64_epi32 (__m512i __A)
7323{
7324 __v8si __O;
7325 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7326 (__v8si) _mm256_undefined_si256 (),
7327 (__mmask8) -1);
7328}
7329
7330static __inline__ __m256i __DEFAULT_FN_ATTRS
7331_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7332{
7333 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7334 (__v8si) __O, __M);
7335}
7336
7337static __inline__ __m256i __DEFAULT_FN_ATTRS
7338_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7339{
7340 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7341 (__v8si) _mm256_setzero_si256 (),
7342 __M);
7343}
7344
7345static __inline__ void __DEFAULT_FN_ATTRS
7346_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7347{
7348 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7349}
7350
7351static __inline__ __m128i __DEFAULT_FN_ATTRS
7352_mm512_cvtsepi64_epi16 (__m512i __A)
7353{
7354 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7355 (__v8hi) _mm_undefined_si128 (),
7356 (__mmask8) -1);
7357}
7358
7359static __inline__ __m128i __DEFAULT_FN_ATTRS
7360_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7361{
7362 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7363 (__v8hi) __O, __M);
7364}
7365
7366static __inline__ __m128i __DEFAULT_FN_ATTRS
7367_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7368{
7369 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7370 (__v8hi) _mm_setzero_si128 (),
7371 __M);
7372}
7373
7374static __inline__ void __DEFAULT_FN_ATTRS
7375_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7376{
7377 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7378}
7379
Michael Zuckermand8715312016-04-14 06:48:09 +00007380static __inline__ __m128i __DEFAULT_FN_ATTRS
7381_mm512_cvtusepi32_epi8 (__m512i __A)
7382{
7383 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7384 (__v16qi) _mm_undefined_si128 (),
7385 (__mmask16) -1);
7386}
7387
7388static __inline__ __m128i __DEFAULT_FN_ATTRS
7389_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7390{
7391 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7392 (__v16qi) __O,
7393 __M);
7394}
7395
7396static __inline__ __m128i __DEFAULT_FN_ATTRS
7397_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7398{
7399 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7400 (__v16qi) _mm_setzero_si128 (),
7401 __M);
7402}
7403
7404static __inline__ void __DEFAULT_FN_ATTRS
7405_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7406{
7407 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7408}
7409
7410static __inline__ __m256i __DEFAULT_FN_ATTRS
7411_mm512_cvtusepi32_epi16 (__m512i __A)
7412{
7413 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7414 (__v16hi) _mm256_undefined_si256 (),
7415 (__mmask16) -1);
7416}
7417
7418static __inline__ __m256i __DEFAULT_FN_ATTRS
7419_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7420{
7421 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7422 (__v16hi) __O,
7423 __M);
7424}
7425
7426static __inline__ __m256i __DEFAULT_FN_ATTRS
7427_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7428{
7429 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7430 (__v16hi) _mm256_setzero_si256 (),
7431 __M);
7432}
7433
7434static __inline__ void __DEFAULT_FN_ATTRS
7435_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7436{
7437 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7438}
7439
7440static __inline__ __m128i __DEFAULT_FN_ATTRS
7441_mm512_cvtusepi64_epi8 (__m512i __A)
7442{
7443 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7444 (__v16qi) _mm_undefined_si128 (),
7445 (__mmask8) -1);
7446}
7447
7448static __inline__ __m128i __DEFAULT_FN_ATTRS
7449_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7450{
7451 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7452 (__v16qi) __O,
7453 __M);
7454}
7455
7456static __inline__ __m128i __DEFAULT_FN_ATTRS
7457_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7458{
7459 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7460 (__v16qi) _mm_setzero_si128 (),
7461 __M);
7462}
7463
7464static __inline__ void __DEFAULT_FN_ATTRS
7465_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7466{
7467 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7468}
7469
7470static __inline__ __m256i __DEFAULT_FN_ATTRS
7471_mm512_cvtusepi64_epi32 (__m512i __A)
7472{
7473 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7474 (__v8si) _mm256_undefined_si256 (),
7475 (__mmask8) -1);
7476}
7477
7478static __inline__ __m256i __DEFAULT_FN_ATTRS
7479_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7480{
7481 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7482 (__v8si) __O, __M);
7483}
7484
7485static __inline__ __m256i __DEFAULT_FN_ATTRS
7486_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7487{
7488 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7489 (__v8si) _mm256_setzero_si256 (),
7490 __M);
7491}
7492
7493static __inline__ void __DEFAULT_FN_ATTRS
7494_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7495{
7496 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7497}
7498
7499static __inline__ __m128i __DEFAULT_FN_ATTRS
7500_mm512_cvtusepi64_epi16 (__m512i __A)
7501{
7502 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7503 (__v8hi) _mm_undefined_si128 (),
7504 (__mmask8) -1);
7505}
7506
7507static __inline__ __m128i __DEFAULT_FN_ATTRS
7508_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7509{
7510 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7511 (__v8hi) __O, __M);
7512}
7513
7514static __inline__ __m128i __DEFAULT_FN_ATTRS
7515_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7516{
7517 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7518 (__v8hi) _mm_setzero_si128 (),
7519 __M);
7520}
7521
7522static __inline__ void __DEFAULT_FN_ATTRS
7523_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7524{
7525 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7526}
7527
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007528static __inline__ __m128i __DEFAULT_FN_ATTRS
7529_mm512_cvtepi32_epi8 (__m512i __A)
7530{
7531 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7532 (__v16qi) _mm_undefined_si128 (),
7533 (__mmask16) -1);
7534}
7535
7536static __inline__ __m128i __DEFAULT_FN_ATTRS
7537_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7538{
7539 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7540 (__v16qi) __O, __M);
7541}
7542
7543static __inline__ __m128i __DEFAULT_FN_ATTRS
7544_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7545{
7546 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7547 (__v16qi) _mm_setzero_si128 (),
7548 __M);
7549}
7550
7551static __inline__ void __DEFAULT_FN_ATTRS
7552_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7553{
7554 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7555}
7556
7557static __inline__ __m256i __DEFAULT_FN_ATTRS
7558_mm512_cvtepi32_epi16 (__m512i __A)
7559{
7560 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7561 (__v16hi) _mm256_undefined_si256 (),
7562 (__mmask16) -1);
7563}
7564
7565static __inline__ __m256i __DEFAULT_FN_ATTRS
7566_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7567{
7568 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7569 (__v16hi) __O, __M);
7570}
7571
7572static __inline__ __m256i __DEFAULT_FN_ATTRS
7573_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7574{
7575 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7576 (__v16hi) _mm256_setzero_si256 (),
7577 __M);
7578}
7579
7580static __inline__ void __DEFAULT_FN_ATTRS
7581_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7582{
7583 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7584}
7585
7586static __inline__ __m128i __DEFAULT_FN_ATTRS
7587_mm512_cvtepi64_epi8 (__m512i __A)
7588{
7589 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7590 (__v16qi) _mm_undefined_si128 (),
7591 (__mmask8) -1);
7592}
7593
7594static __inline__ __m128i __DEFAULT_FN_ATTRS
7595_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7596{
7597 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7598 (__v16qi) __O, __M);
7599}
7600
7601static __inline__ __m128i __DEFAULT_FN_ATTRS
7602_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7603{
7604 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7605 (__v16qi) _mm_setzero_si128 (),
7606 __M);
7607}
7608
7609static __inline__ void __DEFAULT_FN_ATTRS
7610_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7611{
7612 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7613}
7614
7615static __inline__ __m256i __DEFAULT_FN_ATTRS
7616_mm512_cvtepi64_epi32 (__m512i __A)
7617{
7618 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7619 (__v8si) _mm256_undefined_si256 (),
7620 (__mmask8) -1);
7621}
7622
7623static __inline__ __m256i __DEFAULT_FN_ATTRS
7624_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7625{
7626 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7627 (__v8si) __O, __M);
7628}
7629
7630static __inline__ __m256i __DEFAULT_FN_ATTRS
7631_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7632{
7633 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7634 (__v8si) _mm256_setzero_si256 (),
7635 __M);
7636}
7637
7638static __inline__ void __DEFAULT_FN_ATTRS
7639_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7640{
7641 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7642}
7643
7644static __inline__ __m128i __DEFAULT_FN_ATTRS
7645_mm512_cvtepi64_epi16 (__m512i __A)
7646{
7647 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7648 (__v8hi) _mm_undefined_si128 (),
7649 (__mmask8) -1);
7650}
7651
7652static __inline__ __m128i __DEFAULT_FN_ATTRS
7653_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7654{
7655 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7656 (__v8hi) __O, __M);
7657}
7658
7659static __inline__ __m128i __DEFAULT_FN_ATTRS
7660_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7661{
7662 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7663 (__v8hi) _mm_setzero_si128 (),
7664 __M);
7665}
7666
7667static __inline__ void __DEFAULT_FN_ATTRS
7668_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7669{
7670 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7671}
7672
Craig Topper8c18e112016-05-17 04:41:50 +00007673#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7674 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7675 (__v4si)_mm_undefined_si128(), \
7676 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007677
Craig Topper8c18e112016-05-17 04:41:50 +00007678#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7679 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7680 (__v4si)(__m128i)(W), \
7681 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007682
Craig Topper8c18e112016-05-17 04:41:50 +00007683#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7684 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7685 (__v4si)_mm_setzero_si128(), \
7686 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007687
Craig Topper8c18e112016-05-17 04:41:50 +00007688#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7689 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7690 (__v4di)_mm256_undefined_si256(), \
7691 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007692
Craig Topper8c18e112016-05-17 04:41:50 +00007693#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7694 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7695 (__v4di)(__m256i)(W), \
7696 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007697
Craig Topper8c18e112016-05-17 04:41:50 +00007698#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7699 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7700 (__v4di)_mm256_setzero_si256(), \
7701 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007702
Craig Topper8c18e112016-05-17 04:41:50 +00007703#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7704 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7705 (__v4df)(__m256d)(B), (int)(imm), \
7706 (__v8df)_mm512_undefined_pd(), \
7707 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007708
Craig Topper8c18e112016-05-17 04:41:50 +00007709#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7710 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7711 (__v4df)(__m256d)(B), (int)(imm), \
7712 (__v8df)(__m512d)(W), \
7713 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007714
Craig Topper8c18e112016-05-17 04:41:50 +00007715#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7716 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7717 (__v4df)(__m256d)(B), (int)(imm), \
7718 (__v8df)_mm512_setzero_pd(), \
7719 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007720
Craig Topper8c18e112016-05-17 04:41:50 +00007721#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7722 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7723 (__v4di)(__m256i)(B), (int)(imm), \
7724 (__v8di)_mm512_setzero_si512(), \
7725 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007726
Craig Topper8c18e112016-05-17 04:41:50 +00007727#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7728 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7729 (__v4di)(__m256i)(B), (int)(imm), \
7730 (__v8di)(__m512i)(W), \
7731 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007732
Craig Topper8c18e112016-05-17 04:41:50 +00007733#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7734 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7735 (__v4di)(__m256i)(B), (int)(imm), \
7736 (__v8di)_mm512_setzero_si512(), \
7737 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007738
Craig Topper8c18e112016-05-17 04:41:50 +00007739#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7740 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7741 (__v4sf)(__m128)(B), (int)(imm), \
7742 (__v16sf)_mm512_undefined_ps(), \
7743 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007744
Craig Topper8c18e112016-05-17 04:41:50 +00007745#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7746 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7747 (__v4sf)(__m128)(B), (int)(imm), \
7748 (__v16sf)(__m512)(W), \
7749 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007750
Craig Topper8c18e112016-05-17 04:41:50 +00007751#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7752 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7753 (__v4sf)(__m128)(B), (int)(imm), \
7754 (__v16sf)_mm512_setzero_ps(), \
7755 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007756
Craig Topper8c18e112016-05-17 04:41:50 +00007757#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7758 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7759 (__v4si)(__m128i)(B), (int)(imm), \
7760 (__v16si)_mm512_setzero_si512(), \
7761 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007762
Craig Topper8c18e112016-05-17 04:41:50 +00007763#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7764 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7765 (__v4si)(__m128i)(B), (int)(imm), \
7766 (__v16si)(__m512i)(W), \
7767 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007768
Craig Topper8c18e112016-05-17 04:41:50 +00007769#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7770 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7771 (__v4si)(__m128i)(B), (int)(imm), \
7772 (__v16si)_mm512_setzero_si512(), \
7773 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007774
Craig Topper8c18e112016-05-17 04:41:50 +00007775#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7776 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7777 (int)(((C)<<2) | (B)), \
7778 (__v8df)_mm512_undefined_pd(), \
7779 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007780
Craig Topper8c18e112016-05-17 04:41:50 +00007781#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7782 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7783 (int)(((C)<<2) | (B)), \
7784 (__v8df)(__m512d)(W), \
7785 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007786
Craig Topper8c18e112016-05-17 04:41:50 +00007787#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7788 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7789 (int)(((C)<<2) | (B)), \
7790 (__v8df)_mm512_setzero_pd(), \
7791 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007792
Craig Topper8c18e112016-05-17 04:41:50 +00007793#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7794 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7795 (int)(((C)<<2) | (B)), \
7796 (__v8df)_mm512_setzero_pd(), \
7797 (__mmask8)-1, \
7798 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007799
Craig Topper8c18e112016-05-17 04:41:50 +00007800#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7801 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7802 (int)(((C)<<2) | (B)), \
7803 (__v8df)(__m512d)(W), \
7804 (__mmask8)(U), \
7805 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007806
Craig Topper8c18e112016-05-17 04:41:50 +00007807#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7808 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7809 (int)(((C)<<2) | (B)), \
7810 (__v8df)_mm512_setzero_pd(), \
7811 (__mmask8)(U), \
7812 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007813
Craig Topper8c18e112016-05-17 04:41:50 +00007814#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7815 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7816 (int)(((C)<<2) | (B)), \
7817 (__v16sf)_mm512_undefined_ps(), \
7818 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007819
Craig Topper8c18e112016-05-17 04:41:50 +00007820#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7821 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7822 (int)(((C)<<2) | (B)), \
7823 (__v16sf)(__m512)(W), \
7824 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007825
Craig Topper8c18e112016-05-17 04:41:50 +00007826#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7827 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7828 (int)(((C)<<2) | (B)), \
7829 (__v16sf)_mm512_setzero_ps(), \
7830 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007831
Craig Topper8c18e112016-05-17 04:41:50 +00007832#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7833 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7834 (int)(((C)<<2)|(B)), \
7835 (__v16sf)_mm512_undefined_ps(), \
7836 (__mmask16)-1, \
7837 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007838
Craig Topper8c18e112016-05-17 04:41:50 +00007839#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7840 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7841 (int)(((C)<<2)|(B)), \
7842 (__v16sf)(__m512)(W), \
7843 (__mmask16)(U), \
7844 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007845
Craig Topper8c18e112016-05-17 04:41:50 +00007846#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7847 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7848 (int)(((C)<<2)|(B)), \
7849 (__v16sf)_mm512_setzero_ps(), \
7850 (__mmask16)(U), \
7851 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007852
Craig Topper8c18e112016-05-17 04:41:50 +00007853#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7854 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7855 (__v8df)_mm512_undefined_pd(), \
7856 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007857
Craig Topper8c18e112016-05-17 04:41:50 +00007858#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7859 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7860 (__v8df)(__m512d)(W), \
7861 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007862
Craig Topper8c18e112016-05-17 04:41:50 +00007863#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7864 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7865 (__v8df)_mm512_setzero_pd(), \
7866 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007867
7868static __inline__ __m512d __DEFAULT_FN_ATTRS
7869_mm512_getexp_pd (__m512d __A)
7870{
7871 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7872 (__v8df) _mm512_undefined_pd (),
7873 (__mmask8) -1,
7874 _MM_FROUND_CUR_DIRECTION);
7875}
7876
7877static __inline__ __m512d __DEFAULT_FN_ATTRS
7878_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7879{
7880 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7881 (__v8df) __W,
7882 (__mmask8) __U,
7883 _MM_FROUND_CUR_DIRECTION);
7884}
7885
7886static __inline__ __m512d __DEFAULT_FN_ATTRS
7887_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7888{
7889 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7890 (__v8df) _mm512_setzero_pd (),
7891 (__mmask8) __U,
7892 _MM_FROUND_CUR_DIRECTION);
7893}
7894
Craig Topper8c18e112016-05-17 04:41:50 +00007895#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7896 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7897 (__v16sf)_mm512_undefined_ps(), \
7898 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007899
Craig Topper8c18e112016-05-17 04:41:50 +00007900#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7901 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7902 (__v16sf)(__m512)(W), \
7903 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007904
Craig Topper8c18e112016-05-17 04:41:50 +00007905#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7906 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7907 (__v16sf)_mm512_setzero_ps(), \
7908 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007909
7910static __inline__ __m512 __DEFAULT_FN_ATTRS
7911_mm512_getexp_ps (__m512 __A)
7912{
7913 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7914 (__v16sf) _mm512_undefined_ps (),
7915 (__mmask16) -1,
7916 _MM_FROUND_CUR_DIRECTION);
7917}
7918
7919static __inline__ __m512 __DEFAULT_FN_ATTRS
7920_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7921{
7922 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7923 (__v16sf) __W,
7924 (__mmask16) __U,
7925 _MM_FROUND_CUR_DIRECTION);
7926}
7927
7928static __inline__ __m512 __DEFAULT_FN_ATTRS
7929_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7930{
7931 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7932 (__v16sf) _mm512_setzero_ps (),
7933 (__mmask16) __U,
7934 _MM_FROUND_CUR_DIRECTION);
7935}
7936
Craig Topper8c18e112016-05-17 04:41:50 +00007937#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7938 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7939 (float const *)(addr), \
7940 (__v8di)(__m512i)(index), (__mmask8)-1, \
7941 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007942
7943#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7944 __addr, __scale) __extension__({\
7945__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7946 __addr,(__v8di) __index, __mask, __scale);\
7947})
7948
Craig Topper8c18e112016-05-17 04:41:50 +00007949#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7950 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7951 (int const *)(addr), \
7952 (__v8di)(__m512i)(index), \
7953 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007954
Craig Topper8c18e112016-05-17 04:41:50 +00007955#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7956 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7957 (int const *)(addr), \
7958 (__v8di)(__m512i)(index), \
7959 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007960
Craig Topper8c18e112016-05-17 04:41:50 +00007961#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7962 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7963 (double const *)(addr), \
7964 (__v8di)(__m512i)(index), (__mmask8)-1, \
7965 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007966
Craig Topper8c18e112016-05-17 04:41:50 +00007967#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7968 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7969 (double const *)(addr), \
7970 (__v8di)(__m512i)(index), \
7971 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007972
Craig Topper8c18e112016-05-17 04:41:50 +00007973#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7974 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7975 (long long const *)(addr), \
7976 (__v8di)(__m512i)(index), (__mmask8)-1, \
7977 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007978
Craig Topper8c18e112016-05-17 04:41:50 +00007979#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7980 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7981 (long long const *)(addr), \
7982 (__v8di)(__m512i)(index), \
7983 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007984
Craig Topper8c18e112016-05-17 04:41:50 +00007985#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7986 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7987 (float const *)(addr), \
7988 (__v16sf)(__m512)(index), \
7989 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007990
Craig Topper8c18e112016-05-17 04:41:50 +00007991#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7992 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7993 (float const *)(addr), \
7994 (__v16sf)(__m512)(index), \
7995 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007996
Craig Topper8c18e112016-05-17 04:41:50 +00007997#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7998 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7999 (int const *)(addr), \
8000 (__v16si)(__m512i)(index), \
8001 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008002
Craig Topper8c18e112016-05-17 04:41:50 +00008003#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8004 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
8005 (int const *)(addr), \
8006 (__v16si)(__m512i)(index), \
8007 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008008
Craig Topper8c18e112016-05-17 04:41:50 +00008009#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
8010 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
8011 (double const *)(addr), \
8012 (__v8si)(__m256i)(index), (__mmask8)-1, \
8013 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008014
Craig Topper8c18e112016-05-17 04:41:50 +00008015#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8016 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
8017 (double const *)(addr), \
8018 (__v8si)(__m256i)(index), \
8019 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008020
Craig Topper8c18e112016-05-17 04:41:50 +00008021#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
8022 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
8023 (long long const *)(addr), \
8024 (__v8si)(__m256i)(index), (__mmask8)-1, \
8025 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008026
Craig Topper8c18e112016-05-17 04:41:50 +00008027#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8028 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
8029 (long long const *)(addr), \
8030 (__v8si)(__m256i)(index), \
8031 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008032
Craig Topper8c18e112016-05-17 04:41:50 +00008033#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
8034 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
8035 (__v8di)(__m512i)(index), \
8036 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008037
Craig Topper8c18e112016-05-17 04:41:50 +00008038#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8039 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
8040 (__v8di)(__m512i)(index), \
8041 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008042
Craig Topper8c18e112016-05-17 04:41:50 +00008043#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
8044 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
8045 (__v8di)(__m512i)(index), \
8046 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008047
Craig Topper8c18e112016-05-17 04:41:50 +00008048#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8049 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
8050 (__v8di)(__m512i)(index), \
8051 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008052
Craig Topper8c18e112016-05-17 04:41:50 +00008053#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
8054 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
8055 (__v8di)(__m512i)(index), \
8056 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008057
Craig Topper8c18e112016-05-17 04:41:50 +00008058#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8059 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
8060 (__v8di)(__m512i)(index), \
8061 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008062
Craig Topper8c18e112016-05-17 04:41:50 +00008063#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
8064 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
8065 (__v8di)(__m512i)(index), \
8066 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008067
Craig Topper8c18e112016-05-17 04:41:50 +00008068#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8069 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
8070 (__v8di)(__m512i)(index), \
8071 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008072
Craig Topper8c18e112016-05-17 04:41:50 +00008073#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
8074 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
8075 (__v16si)(__m512i)(index), \
8076 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008077
Craig Topper8c18e112016-05-17 04:41:50 +00008078#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8079 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
8080 (__v16si)(__m512i)(index), \
8081 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008082
Craig Topper8c18e112016-05-17 04:41:50 +00008083#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
8084 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
8085 (__v16si)(__m512i)(index), \
8086 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008087
Craig Topper8c18e112016-05-17 04:41:50 +00008088#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8089 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
8090 (__v16si)(__m512i)(index), \
8091 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008092
Craig Topper8c18e112016-05-17 04:41:50 +00008093#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
8094 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
8095 (__v8si)(__m256i)(index), \
8096 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008097
Craig Topper8c18e112016-05-17 04:41:50 +00008098#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8099 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
8100 (__v8si)(__m256i)(index), \
8101 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008102
Craig Topper8c18e112016-05-17 04:41:50 +00008103#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
8104 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
8105 (__v8si)(__m256i)(index), \
8106 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008107
Craig Topper8c18e112016-05-17 04:41:50 +00008108#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8109 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
8110 (__v8si)(__m256i)(index), \
8111 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008112
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008113static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008114_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008115{
8116 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
8117 (__v4sf) __B,
8118 (__v4sf) __W,
8119 (__mmask8) __U,
8120 _MM_FROUND_CUR_DIRECTION);
8121}
8122
Craig Topper8c18e112016-05-17 04:41:50 +00008123#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
8124 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8125 (__v4sf)(__m128)(B), \
8126 (__v4sf)(__m128)(W), (__mmask8)(U), \
8127 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008128
8129static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008130_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008131{
8132 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8133 (__v4sf) __B,
8134 (__v4sf) __C,
8135 (__mmask8) __U,
8136 _MM_FROUND_CUR_DIRECTION);
8137}
8138
Craig Topper8c18e112016-05-17 04:41:50 +00008139#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
8140 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8141 (__v4sf)(__m128)(B), \
8142 (__v4sf)(__m128)(C), (__mmask8)(U), \
8143 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008144
8145static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008146_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008147{
8148 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8149 (__v4sf) __X,
8150 (__v4sf) __Y,
8151 (__mmask8) __U,
8152 _MM_FROUND_CUR_DIRECTION);
8153}
8154
Craig Topper8c18e112016-05-17 04:41:50 +00008155#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8156 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8157 (__v4sf)(__m128)(X), \
8158 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8159 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008160
8161static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008162_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008163{
8164 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008165 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008166 (__v4sf) __W,
8167 (__mmask8) __U,
8168 _MM_FROUND_CUR_DIRECTION);
8169}
8170
Craig Topper8c18e112016-05-17 04:41:50 +00008171#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8172 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8173 -(__v4sf)(__m128)(B), \
8174 (__v4sf)(__m128)(W), (__mmask8)(U), \
8175 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008176
8177static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008178_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008179{
8180 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8181 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008182 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008183 (__mmask8) __U,
8184 _MM_FROUND_CUR_DIRECTION);
8185}
8186
Craig Topper8c18e112016-05-17 04:41:50 +00008187#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8188 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8189 (__v4sf)(__m128)(B), \
8190 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8191 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008192
8193static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008194_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008195{
8196 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8197 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008198 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008199 (__mmask8) __U,
8200 _MM_FROUND_CUR_DIRECTION);
8201}
8202
Craig Topper8c18e112016-05-17 04:41:50 +00008203#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8204 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8205 (__v4sf)(__m128)(X), \
8206 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8207 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008208
8209static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008210_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008211{
Craig Topper9864c592016-05-15 20:10:03 +00008212 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008213 (__v4sf) __B,
8214 (__v4sf) __W,
8215 (__mmask8) __U,
8216 _MM_FROUND_CUR_DIRECTION);
8217}
8218
Craig Topper8c18e112016-05-17 04:41:50 +00008219#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8220 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8221 (__v4sf)(__m128)(B), \
8222 (__v4sf)(__m128)(W), (__mmask8)(U), \
8223 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008224
8225static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008226_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008227{
Craig Topper9864c592016-05-15 20:10:03 +00008228 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008229 (__v4sf) __B,
8230 (__v4sf) __C,
8231 (__mmask8) __U,
8232 _MM_FROUND_CUR_DIRECTION);
8233}
8234
Craig Topper8c18e112016-05-17 04:41:50 +00008235#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8236 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8237 (__v4sf)(__m128)(B), \
8238 (__v4sf)(__m128)(C), (__mmask8)(U), \
8239 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008240
8241static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008242_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008243{
Craig Topper9864c592016-05-15 20:10:03 +00008244 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008245 (__v4sf) __X,
8246 (__v4sf) __Y,
8247 (__mmask8) __U,
8248 _MM_FROUND_CUR_DIRECTION);
8249}
8250
Craig Topper8c18e112016-05-17 04:41:50 +00008251#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8252 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8253 (__v4sf)(__m128)(X), \
8254 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8255 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008256
8257static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008258_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008259{
Craig Topper9864c592016-05-15 20:10:03 +00008260 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8261 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008262 (__v4sf) __W,
8263 (__mmask8) __U,
8264 _MM_FROUND_CUR_DIRECTION);
8265}
8266
Craig Topper8c18e112016-05-17 04:41:50 +00008267#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8268 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8269 -(__v4sf)(__m128)(B), \
8270 (__v4sf)(__m128)(W), (__mmask8)(U), \
8271 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008272
8273static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008274_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008275{
Craig Topper9864c592016-05-15 20:10:03 +00008276 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008277 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008278 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008279 (__mmask8) __U,
8280 _MM_FROUND_CUR_DIRECTION);
8281}
8282
Craig Topper8c18e112016-05-17 04:41:50 +00008283#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8284 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8285 (__v4sf)(__m128)(B), \
8286 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8287 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008288
8289static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008290_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008291{
Craig Topper9864c592016-05-15 20:10:03 +00008292 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008293 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008294 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008295 (__mmask8) __U,
8296 _MM_FROUND_CUR_DIRECTION);
8297}
8298
Craig Topper8c18e112016-05-17 04:41:50 +00008299#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8300 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8301 (__v4sf)(__m128)(X), \
8302 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8303 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008304
Craig Topper58187d32016-05-17 04:41:29 +00008305static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008306_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008307{
Craig Topper58187d32016-05-17 04:41:29 +00008308 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008309 (__v2df) __B,
8310 (__v2df) __W,
8311 (__mmask8) __U,
8312 _MM_FROUND_CUR_DIRECTION);
8313}
8314
Craig Topper8c18e112016-05-17 04:41:50 +00008315#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8316 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8317 (__v2df)(__m128d)(B), \
8318 (__v2df)(__m128d)(W), (__mmask8)(U), \
8319 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008320
Craig Topper58187d32016-05-17 04:41:29 +00008321static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008322_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008323{
Craig Topper58187d32016-05-17 04:41:29 +00008324 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008325 (__v2df) __B,
8326 (__v2df) __C,
8327 (__mmask8) __U,
8328 _MM_FROUND_CUR_DIRECTION);
8329}
8330
Craig Topper8c18e112016-05-17 04:41:50 +00008331#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8332 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8333 (__v2df)(__m128d)(B), \
8334 (__v2df)(__m128d)(C), (__mmask8)(U), \
8335 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008336
Craig Topper58187d32016-05-17 04:41:29 +00008337static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008338_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008339{
Craig Topper58187d32016-05-17 04:41:29 +00008340 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008341 (__v2df) __X,
8342 (__v2df) __Y,
8343 (__mmask8) __U,
8344 _MM_FROUND_CUR_DIRECTION);
8345}
8346
Craig Topper8c18e112016-05-17 04:41:50 +00008347#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8348 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8349 (__v2df)(__m128d)(X), \
8350 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8351 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008352
Craig Topper58187d32016-05-17 04:41:29 +00008353static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008354_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008355{
Craig Topper58187d32016-05-17 04:41:29 +00008356 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008357 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008358 (__v2df) __W,
8359 (__mmask8) __U,
8360 _MM_FROUND_CUR_DIRECTION);
8361}
8362
Craig Topper8c18e112016-05-17 04:41:50 +00008363#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8364 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8365 -(__v2df)(__m128d)(B), \
8366 (__v2df)(__m128d)(W), (__mmask8)(U), \
8367 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008368
Craig Topper58187d32016-05-17 04:41:29 +00008369static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008370_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008371{
Craig Topper58187d32016-05-17 04:41:29 +00008372 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008373 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008374 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008375 (__mmask8) __U,
8376 _MM_FROUND_CUR_DIRECTION);
8377}
8378
Craig Topper8c18e112016-05-17 04:41:50 +00008379#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8380 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8381 (__v2df)(__m128d)(B), \
8382 -(__v2df)(__m128d)(C), \
8383 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008384
Craig Topper58187d32016-05-17 04:41:29 +00008385static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008386_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008387{
Craig Topper58187d32016-05-17 04:41:29 +00008388 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008389 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008390 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008391 (__mmask8) __U,
8392 _MM_FROUND_CUR_DIRECTION);
8393}
8394
Craig Topper8c18e112016-05-17 04:41:50 +00008395#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8396 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8397 (__v2df)(__m128d)(X), \
8398 -(__v2df)(__m128d)(Y), \
8399 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008400
Craig Topper58187d32016-05-17 04:41:29 +00008401static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008402_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008403{
Craig Topper58187d32016-05-17 04:41:29 +00008404 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008405 (__v2df) __B,
8406 (__v2df) __W,
8407 (__mmask8) __U,
8408 _MM_FROUND_CUR_DIRECTION);
8409}
8410
Craig Topper8c18e112016-05-17 04:41:50 +00008411#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8412 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8413 (__v2df)(__m128d)(B), \
8414 (__v2df)(__m128d)(W), (__mmask8)(U), \
8415 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008416
Craig Topper58187d32016-05-17 04:41:29 +00008417static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008418_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008419{
Craig Topper58187d32016-05-17 04:41:29 +00008420 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008421 (__v2df) __B,
8422 (__v2df) __C,
8423 (__mmask8) __U,
8424 _MM_FROUND_CUR_DIRECTION);
8425}
8426
Craig Topper8c18e112016-05-17 04:41:50 +00008427#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8428 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8429 (__v2df)(__m128d)(B), \
8430 (__v2df)(__m128d)(C), (__mmask8)(U), \
8431 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008432
Craig Topper58187d32016-05-17 04:41:29 +00008433static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008434_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008435{
Craig Topper58187d32016-05-17 04:41:29 +00008436 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008437 (__v2df) __X,
8438 (__v2df) __Y,
8439 (__mmask8) __U,
8440 _MM_FROUND_CUR_DIRECTION);
8441}
8442
Craig Topper8c18e112016-05-17 04:41:50 +00008443#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8444 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8445 (__v2df)(__m128d)(X), \
8446 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8447 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008448
Craig Topper58187d32016-05-17 04:41:29 +00008449static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008450_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008451{
Craig Topper58187d32016-05-17 04:41:29 +00008452 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008453 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008454 (__v2df) __W,
8455 (__mmask8) __U,
8456 _MM_FROUND_CUR_DIRECTION);
8457}
8458
Craig Topper8c18e112016-05-17 04:41:50 +00008459#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8460 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8461 -(__v2df)(__m128d)(B), \
8462 (__v2df)(__m128d)(W), (__mmask8)(U), \
8463 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008464
Craig Topper58187d32016-05-17 04:41:29 +00008465static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008466_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008467{
Craig Topper58187d32016-05-17 04:41:29 +00008468 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008469 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008470 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008471 (__mmask8) __U,
8472 _MM_FROUND_CUR_DIRECTION);
8473}
8474
Craig Topper8c18e112016-05-17 04:41:50 +00008475#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8476 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8477 (__v2df)(__m128d)(B), \
8478 -(__v2df)(__m128d)(C), \
8479 (__mmask8)(U), \
8480 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008481
Craig Topper58187d32016-05-17 04:41:29 +00008482static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008483_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008484{
Craig Topper58187d32016-05-17 04:41:29 +00008485 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008486 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008487 -(__v2df) (__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_sd(W, X, Y, U, R) __extension__({\
8493 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8494 (__v2df)(__m128d)(X), \
8495 -(__v2df)(__m128d)(Y), \
8496 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008497
Craig Topper8c18e112016-05-17 04:41:50 +00008498#define _mm512_permutex_pd(X, M) __extension__ ({ \
8499 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8500 (__v8df)_mm512_undefined_pd(), \
8501 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008502
Craig Topper8c18e112016-05-17 04:41:50 +00008503#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8504 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8505 (__v8df)(__m512d)(W), \
8506 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008507
Craig Topper8c18e112016-05-17 04:41:50 +00008508#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8509 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8510 (__v8df)_mm512_setzero_pd(), \
8511 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008512
Craig Topper8c18e112016-05-17 04:41:50 +00008513#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8514 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8515 (__v8di)_mm512_undefined_epi32(), \
8516 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008517
Craig Topper8c18e112016-05-17 04:41:50 +00008518#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8519 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8520 (__v8di)(__m512i)(W), \
8521 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008522
Craig Topper8c18e112016-05-17 04:41:50 +00008523#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8524 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8525 (__v8di)_mm512_setzero_si512(), \
8526 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008527
8528static __inline__ __m512d __DEFAULT_FN_ATTRS
8529_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8530{
8531 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8532 (__v8di) __X,
8533 (__v8df) _mm512_undefined_pd (),
8534 (__mmask8) -1);
8535}
8536
8537static __inline__ __m512d __DEFAULT_FN_ATTRS
8538_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8539{
8540 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8541 (__v8di) __X,
8542 (__v8df) __W,
8543 (__mmask8) __U);
8544}
8545
8546static __inline__ __m512d __DEFAULT_FN_ATTRS
8547_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8548{
8549 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8550 (__v8di) __X,
8551 (__v8df) _mm512_setzero_pd (),
8552 (__mmask8) __U);
8553}
8554
8555static __inline__ __m512i __DEFAULT_FN_ATTRS
8556_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8557{
8558 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8559 (__v8di) __X,
8560 (__v8di) _mm512_setzero_si512 (),
8561 __M);
8562}
8563
8564static __inline__ __m512i __DEFAULT_FN_ATTRS
8565_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8566{
8567 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8568 (__v8di) __X,
8569 (__v8di) _mm512_undefined_epi32 (),
8570 (__mmask8) -1);
8571}
8572
8573static __inline__ __m512i __DEFAULT_FN_ATTRS
8574_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8575 __m512i __Y)
8576{
8577 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8578 (__v8di) __X,
8579 (__v8di) __W,
8580 __M);
8581}
8582
8583static __inline__ __m512 __DEFAULT_FN_ATTRS
8584_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8585{
8586 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8587 (__v16si) __X,
8588 (__v16sf) _mm512_undefined_ps (),
8589 (__mmask16) -1);
8590}
8591
8592static __inline__ __m512 __DEFAULT_FN_ATTRS
8593_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8594{
8595 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8596 (__v16si) __X,
8597 (__v16sf) __W,
8598 (__mmask16) __U);
8599}
8600
8601static __inline__ __m512 __DEFAULT_FN_ATTRS
8602_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8603{
8604 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8605 (__v16si) __X,
8606 (__v16sf) _mm512_setzero_ps (),
8607 (__mmask16) __U);
8608}
8609
8610static __inline__ __m512i __DEFAULT_FN_ATTRS
8611_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8612{
8613 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8614 (__v16si) __X,
8615 (__v16si) _mm512_setzero_si512 (),
8616 __M);
8617}
8618
8619static __inline__ __m512i __DEFAULT_FN_ATTRS
8620_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8621{
8622 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8623 (__v16si) __X,
8624 (__v16si) _mm512_undefined_epi32 (),
8625 (__mmask16) -1);
8626}
8627
8628static __inline__ __m512i __DEFAULT_FN_ATTRS
8629_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8630 __m512i __Y)
8631{
8632 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8633 (__v16si) __X,
8634 (__v16si) __W,
8635 __M);
8636}
8637
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008638static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8639_mm512_kand (__mmask16 __A, __mmask16 __B)
8640{
8641 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8642}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008643
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008644static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8645_mm512_kandn (__mmask16 __A, __mmask16 __B)
8646{
8647 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8648}
8649
8650static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8651_mm512_kor (__mmask16 __A, __mmask16 __B)
8652{
8653 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8654}
8655
8656static __inline__ int __DEFAULT_FN_ATTRS
8657_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8658{
Craig Topper91f23d92016-05-16 01:09:16 +00008659 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008660}
8661
8662static __inline__ int __DEFAULT_FN_ATTRS
8663_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8664{
Craig Topper91f23d92016-05-16 01:09:16 +00008665 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008666}
8667
8668static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8669_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8670{
8671 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8672}
8673
8674static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8675_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8676{
8677 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8678}
8679
8680static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8681_mm512_kxor (__mmask16 __A, __mmask16 __B)
8682{
8683 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8684}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008685
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008686static __inline__ void __DEFAULT_FN_ATTRS
8687_mm512_stream_si512 (__m512i * __P, __m512i __A)
8688{
8689 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8690}
8691
8692static __inline__ __m512i __DEFAULT_FN_ATTRS
8693_mm512_stream_load_si512 (void *__P)
8694{
8695 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8696}
8697
8698static __inline__ void __DEFAULT_FN_ATTRS
8699_mm512_stream_pd (double *__P, __m512d __A)
8700{
8701 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8702}
8703
8704static __inline__ void __DEFAULT_FN_ATTRS
8705_mm512_stream_ps (float *__P, __m512 __A)
8706{
8707 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8708}
8709
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008710static __inline__ __m512d __DEFAULT_FN_ATTRS
8711_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8712{
8713 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8714 (__v8df) __W,
8715 (__mmask8) __U);
8716}
8717
8718static __inline__ __m512d __DEFAULT_FN_ATTRS
8719_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8720{
8721 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8722 (__v8df)
8723 _mm512_setzero_pd (),
8724 (__mmask8) __U);
8725}
8726
8727static __inline__ __m512i __DEFAULT_FN_ATTRS
8728_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8729{
8730 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8731 (__v8di) __W,
8732 (__mmask8) __U);
8733}
8734
8735static __inline__ __m512i __DEFAULT_FN_ATTRS
8736_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8737{
8738 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8739 (__v8di)
8740 _mm512_setzero_si512 (),
8741 (__mmask8) __U);
8742}
8743
8744static __inline__ __m512 __DEFAULT_FN_ATTRS
8745_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8746{
8747 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8748 (__v16sf) __W,
8749 (__mmask16) __U);
8750}
8751
8752static __inline__ __m512 __DEFAULT_FN_ATTRS
8753_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8754{
8755 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8756 (__v16sf)
8757 _mm512_setzero_ps (),
8758 (__mmask16) __U);
8759}
8760
8761static __inline__ __m512i __DEFAULT_FN_ATTRS
8762_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8763{
8764 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8765 (__v16si) __W,
8766 (__mmask16) __U);
8767}
8768
8769static __inline__ __m512i __DEFAULT_FN_ATTRS
8770_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8771{
8772 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8773 (__v16si)
8774 _mm512_setzero_si512 (),
8775 (__mmask16) __U);
8776}
8777
Craig Topper8c18e112016-05-17 04:41:50 +00008778#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8779 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8780 (__v4sf)(__m128)(Y), (int)(P), \
8781 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008782
Craig Topper8c18e112016-05-17 04:41:50 +00008783#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8784 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8785 (__v4sf)(__m128)(Y), (int)(P), \
8786 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008787
Craig Topper8c18e112016-05-17 04:41:50 +00008788#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8789 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8790 (__v4sf)(__m128)(Y), (int)(P), \
8791 (__mmask8)-1, \
8792 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008793
Craig Topper8c18e112016-05-17 04:41:50 +00008794#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8795 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8796 (__v4sf)(__m128)(Y), (int)(P), \
8797 (__mmask8)(M), \
8798 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008799
Craig Topper8c18e112016-05-17 04:41:50 +00008800#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8801 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8802 (__v2df)(__m128d)(Y), (int)(P), \
8803 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008804
Craig Topper8c18e112016-05-17 04:41:50 +00008805#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8806 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8807 (__v2df)(__m128d)(Y), (int)(P), \
8808 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008809
Craig Topper8c18e112016-05-17 04:41:50 +00008810#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8811 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8812 (__v2df)(__m128d)(Y), (int)(P), \
8813 (__mmask8)-1, \
8814 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008815
Craig Topper8c18e112016-05-17 04:41:50 +00008816#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8817 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8818 (__v2df)(__m128d)(Y), (int)(P), \
8819 (__mmask8)(M), \
8820 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008821
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008822static __inline__ __m512 __DEFAULT_FN_ATTRS
8823_mm512_movehdup_ps (__m512 __A)
8824{
8825 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8826 (__v16sf)
8827 _mm512_undefined_ps (),
8828 (__mmask16) -1);
8829}
8830
8831static __inline__ __m512 __DEFAULT_FN_ATTRS
8832_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8833{
8834 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8835 (__v16sf) __W,
8836 (__mmask16) __U);
8837}
8838
8839static __inline__ __m512 __DEFAULT_FN_ATTRS
8840_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8841{
8842 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8843 (__v16sf)
8844 _mm512_setzero_ps (),
8845 (__mmask16) __U);
8846}
8847
8848static __inline__ __m512 __DEFAULT_FN_ATTRS
8849_mm512_moveldup_ps (__m512 __A)
8850{
8851 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8852 (__v16sf)
8853 _mm512_undefined_ps (),
8854 (__mmask16) -1);
8855}
8856
8857static __inline__ __m512 __DEFAULT_FN_ATTRS
8858_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8859{
8860 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8861 (__v16sf) __W,
8862 (__mmask16) __U);
8863}
8864
8865static __inline__ __m512 __DEFAULT_FN_ATTRS
8866_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8867{
8868 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8869 (__v16sf)
8870 _mm512_setzero_ps (),
8871 (__mmask16) __U);
8872}
8873
Craig Topper8c18e112016-05-17 04:41:50 +00008874#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8875 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8876 (__v16si)_mm512_undefined_epi32(), \
8877 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008878
Craig Topper8c18e112016-05-17 04:41:50 +00008879#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8880 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8881 (__v16si)(__m512i)(W), \
8882 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008883
Craig Topper8c18e112016-05-17 04:41:50 +00008884#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8885 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8886 (__v16si)_mm512_setzero_si512(), \
8887 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008888
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008889static __inline__ __m512d __DEFAULT_FN_ATTRS
8890_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8891{
8892 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8893 (__v8df) __W,
8894 (__mmask8) __U);
8895}
8896
8897static __inline__ __m512d __DEFAULT_FN_ATTRS
8898_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8899{
8900 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8901 (__v8df) _mm512_setzero_pd (),
8902 (__mmask8) __U);
8903}
8904
8905static __inline__ __m512i __DEFAULT_FN_ATTRS
8906_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8907{
8908 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8909 (__v8di) __W,
8910 (__mmask8) __U);
8911}
8912
8913static __inline__ __m512i __DEFAULT_FN_ATTRS
8914_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8915{
8916 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8917 (__v8di) _mm512_setzero_pd (),
8918 (__mmask8) __U);
8919}
8920
8921static __inline__ __m512d __DEFAULT_FN_ATTRS
8922_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8923{
8924 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8925 (__v8df) __W,
8926 (__mmask8) __U);
8927}
8928
8929static __inline__ __m512d __DEFAULT_FN_ATTRS
8930_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8931{
8932 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8933 (__v8df) _mm512_setzero_pd(),
8934 (__mmask8) __U);
8935}
8936
8937static __inline__ __m512i __DEFAULT_FN_ATTRS
8938_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8939{
8940 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8941 (__v8di) __W,
8942 (__mmask8) __U);
8943}
8944
8945static __inline__ __m512i __DEFAULT_FN_ATTRS
8946_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8947{
8948 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8949 (__v8di) _mm512_setzero_pd(),
8950 (__mmask8) __U);
8951}
8952
8953static __inline__ __m512 __DEFAULT_FN_ATTRS
8954_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8955{
8956 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8957 (__v16sf) __W,
8958 (__mmask16) __U);
8959}
8960
8961static __inline__ __m512 __DEFAULT_FN_ATTRS
8962_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8963{
8964 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8965 (__v16sf) _mm512_setzero_ps(),
8966 (__mmask16) __U);
8967}
8968
8969static __inline__ __m512i __DEFAULT_FN_ATTRS
8970_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8971{
8972 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8973 (__v16si) __W,
8974 (__mmask16) __U);
8975}
8976
8977static __inline__ __m512i __DEFAULT_FN_ATTRS
8978_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8979{
8980 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8981 (__v16si) _mm512_setzero_ps(),
8982 (__mmask16) __U);
8983}
8984
8985static __inline__ __m512 __DEFAULT_FN_ATTRS
8986_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8987{
8988 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8989 (__v16sf) __W,
8990 (__mmask16) __U);
8991}
8992
8993static __inline__ __m512 __DEFAULT_FN_ATTRS
8994_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8995{
8996 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8997 (__v16sf) _mm512_setzero_ps(),
8998 (__mmask16) __U);
8999}
9000
9001static __inline__ __m512i __DEFAULT_FN_ATTRS
9002_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
9003{
9004 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9005 (__v16si) __W,
9006 (__mmask16) __U);
9007}
9008
9009static __inline__ __m512i __DEFAULT_FN_ATTRS
9010_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
9011{
9012 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9013 (__v16si) _mm512_setzero_ps(),
9014 (__mmask16) __U);
9015}
9016
Craig Topper8c18e112016-05-17 04:41:50 +00009017#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
9018 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9019 (__v8df)_mm512_undefined_pd(), \
9020 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009021
Craig Topper8c18e112016-05-17 04:41:50 +00009022#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
9023 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9024 (__v8df)(__m512d)(W), \
9025 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009026
Craig Topper8c18e112016-05-17 04:41:50 +00009027#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
9028 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9029 (__v8df)_mm512_setzero_pd(), \
9030 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009031
9032static __inline__ __m512d __DEFAULT_FN_ATTRS
9033_mm512_cvtps_pd (__m256 __A)
9034{
9035 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9036 (__v8df)
9037 _mm512_undefined_pd (),
9038 (__mmask8) -1,
9039 _MM_FROUND_CUR_DIRECTION);
9040}
9041
9042static __inline__ __m512d __DEFAULT_FN_ATTRS
9043_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
9044{
9045 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9046 (__v8df) __W,
9047 (__mmask8) __U,
9048 _MM_FROUND_CUR_DIRECTION);
9049}
9050
9051static __inline__ __m512d __DEFAULT_FN_ATTRS
9052_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
9053{
9054 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9055 (__v8df)
9056 _mm512_setzero_pd (),
9057 (__mmask8) __U,
9058 _MM_FROUND_CUR_DIRECTION);
9059}
9060
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009061static __inline__ __m512d __DEFAULT_FN_ATTRS
9062_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
9063{
9064 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9065 (__v8df) __W,
9066 (__mmask8) __U);
9067}
9068
9069static __inline__ __m512d __DEFAULT_FN_ATTRS
9070_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
9071{
9072 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9073 (__v8df)
9074 _mm512_setzero_pd (),
9075 (__mmask8) __U);
9076}
9077
9078static __inline__ __m512 __DEFAULT_FN_ATTRS
9079_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
9080{
9081 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9082 (__v16sf) __W,
9083 (__mmask16) __U);
9084}
9085
9086static __inline__ __m512 __DEFAULT_FN_ATTRS
9087_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
9088{
9089 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9090 (__v16sf)
9091 _mm512_setzero_ps (),
9092 (__mmask16) __U);
9093}
9094
Michael Zuckerman708e7592016-05-03 10:42:46 +00009095static __inline__ void __DEFAULT_FN_ATTRS
9096_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
9097{
9098 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
9099 (__mmask8) __U);
9100}
9101
9102static __inline__ void __DEFAULT_FN_ATTRS
9103_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
9104{
9105 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
9106 (__mmask8) __U);
9107}
9108
9109static __inline__ void __DEFAULT_FN_ATTRS
9110_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
9111{
9112 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
9113 (__mmask16) __U);
9114}
9115
9116static __inline__ void __DEFAULT_FN_ATTRS
9117_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
9118{
9119 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
9120 (__mmask16) __U);
9121}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009122
Craig Topper8c18e112016-05-17 04:41:50 +00009123#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
9124 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9125 (__v2df)(__m128d)(B), \
9126 (__v4sf)_mm_undefined_ps(), \
9127 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009128
Craig Topper8c18e112016-05-17 04:41:50 +00009129#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
9130 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9131 (__v2df)(__m128d)(B), \
9132 (__v4sf)(__m128)(W), \
9133 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009134
Craig Topper8c18e112016-05-17 04:41:50 +00009135#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
9136 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9137 (__v2df)(__m128d)(B), \
9138 (__v4sf)_mm_setzero_ps(), \
9139 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009140
Craig Topper8c18e112016-05-17 04:41:50 +00009141#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
9142 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9143 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009144
Craig Topper8c18e112016-05-17 04:41:50 +00009145#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
9146 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9147 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009148
Craig Topper8c18e112016-05-17 04:41:50 +00009149#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9150 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009151
Craig Topper8c18e112016-05-17 04:41:50 +00009152#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9153 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009154
Craig Topper8c18e112016-05-17 04:41:50 +00009155#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9156 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9157 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009158
Craig Topper8c18e112016-05-17 04:41:50 +00009159#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9160 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9161 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009162
Craig Topper8c18e112016-05-17 04:41:50 +00009163#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9164 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9165 (__v4sf)(__m128)(B), \
9166 (__v2df)_mm_undefined_pd(), \
9167 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009168
Craig Topper8c18e112016-05-17 04:41:50 +00009169#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9170 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9171 (__v4sf)(__m128)(B), \
9172 (__v2df)(__m128d)(W), \
9173 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009174
Craig Topper8c18e112016-05-17 04:41:50 +00009175#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9176 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9177 (__v4sf)(__m128)(B), \
9178 (__v2df)_mm_setzero_pd(), \
9179 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009180
9181static __inline__ __m128d __DEFAULT_FN_ATTRS
9182_mm_cvtu32_sd (__m128d __A, unsigned __B)
9183{
9184 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9185}
9186
Craig Topper8c18e112016-05-17 04:41:50 +00009187#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9188 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9189 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009190
9191static __inline__ __m128d __DEFAULT_FN_ATTRS
9192_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9193{
9194 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9195 _MM_FROUND_CUR_DIRECTION);
9196}
9197
Craig Topper8c18e112016-05-17 04:41:50 +00009198#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9199 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9200 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009201
9202static __inline__ __m128 __DEFAULT_FN_ATTRS
9203_mm_cvtu32_ss (__m128 __A, unsigned __B)
9204{
9205 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9206 _MM_FROUND_CUR_DIRECTION);
9207}
9208
Craig Topper8c18e112016-05-17 04:41:50 +00009209#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9210 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9211 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009212
9213static __inline__ __m128 __DEFAULT_FN_ATTRS
9214_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9215{
9216 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9217 _MM_FROUND_CUR_DIRECTION);
9218}
9219
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009220static __inline__ __m512i __DEFAULT_FN_ATTRS
9221_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9222{
9223 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9224 __M);
9225}
9226
9227static __inline__ __m512i __DEFAULT_FN_ATTRS
9228_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9229{
9230 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9231 __M);
9232}
9233
Michael Zuckerman178113e2016-05-19 12:07:49 +00009234static __inline __m512i __DEFAULT_FN_ATTRS
9235_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9236 int __E, int __F, int __G, int __H,
9237 int __I, int __J, int __K, int __L,
9238 int __M, int __N, int __O, int __P)
9239{
9240 return __extension__ (__m512i)(__v16si)
9241 { __P, __O, __N, __M, __L, __K, __J, __I,
9242 __H, __G, __F, __E, __D, __C, __B, __A };
9243}
9244
9245#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9246 e8,e9,e10,e11,e12,e13,e14,e15) \
9247 _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 +00009248
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009249static __inline__ __m512i __DEFAULT_FN_ATTRS
9250_mm512_set_epi64 (long long __A, long long __B, long long __C,
9251 long long __D, long long __E, long long __F,
9252 long long __G, long long __H)
9253{
9254 return __extension__ (__m512i) (__v8di)
9255 { __H, __G, __F, __E, __D, __C, __B, __A };
9256}
9257
Michael Zuckerman178113e2016-05-19 12:07:49 +00009258#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9259 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9260
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009261static __inline__ __m512d __DEFAULT_FN_ATTRS
9262_mm512_set_pd (double __A, double __B, double __C, double __D,
9263 double __E, double __F, double __G, double __H)
9264{
9265 return __extension__ (__m512d)
9266 { __H, __G, __F, __E, __D, __C, __B, __A };
9267}
9268
Michael Zuckerman178113e2016-05-19 12:07:49 +00009269#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9270 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9271
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009272static __inline__ __m512 __DEFAULT_FN_ATTRS
9273_mm512_set_ps (float __A, float __B, float __C, float __D,
9274 float __E, float __F, float __G, float __H,
9275 float __I, float __J, float __K, float __L,
9276 float __M, float __N, float __O, float __P)
9277{
9278 return __extension__ (__m512)
9279 { __P, __O, __N, __M, __L, __K, __J, __I,
9280 __H, __G, __F, __E, __D, __C, __B, __A };
9281}
9282
Michael Zuckerman178113e2016-05-19 12:07:49 +00009283#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9284 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9285
Michael Kupersteine45af542015-06-30 13:36:19 +00009286#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009287
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009288#endif // __AVX512FINTRIN_H