blob: 1db5b38bfb0c556fcbcc1992a9d1a1923b2306ae [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +000030typedef char __v64qi __attribute__((__vector_size__(64)));
31typedef short __v32hi __attribute__((__vector_size__(64)));
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000032typedef double __v8df __attribute__((__vector_size__(64)));
33typedef float __v16sf __attribute__((__vector_size__(64)));
34typedef long long __v8di __attribute__((__vector_size__(64)));
35typedef int __v16si __attribute__((__vector_size__(64)));
36
37typedef float __m512 __attribute__((__vector_size__(64)));
38typedef double __m512d __attribute__((__vector_size__(64)));
39typedef long long __m512i __attribute__((__vector_size__(64)));
40
41typedef unsigned char __mmask8;
42typedef unsigned short __mmask16;
43
44/* Rounding mode macros. */
45#define _MM_FROUND_TO_NEAREST_INT 0x00
46#define _MM_FROUND_TO_NEG_INF 0x01
47#define _MM_FROUND_TO_POS_INF 0x02
48#define _MM_FROUND_TO_ZERO 0x03
49#define _MM_FROUND_CUR_DIRECTION 0x04
50
Michael Zuckermandef78752016-03-28 12:23:09 +000051typedef enum
52{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000053 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
54 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
55 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
56 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
57 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
58 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
59 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
60 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
61 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
62 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
63 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
64 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
65 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
66 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
67 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
68 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
69 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
70 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
71 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
72 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
73 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
74 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
75 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
76 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
77 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
78 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
79 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
80 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
81 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
82 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
83 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
84 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
85 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
86 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
87 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
88 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
89 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
90 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
91 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
92 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
93 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
94 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
95 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
96 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
97 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
98 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
99 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
100 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
101 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
102 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
103 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
104 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
105 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
106 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
107 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
108 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
109 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
110 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
111 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
112 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
113 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
114 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
115 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
116 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
117 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
118 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
119 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
120 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
121 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
122 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
123 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
124 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
125 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
126 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
127 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
128 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
129 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
130 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
131 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
132 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
133 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
134 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
135 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
136 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
137 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
138 _MM_PERM_DDDD = 0xFF
139} _MM_PERM_ENUM;
140
141typedef enum
142{
Michael Zuckermandef78752016-03-28 12:23:09 +0000143 _MM_MANT_NORM_1_2, /* interval [1, 2) */
144 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
145 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
146 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
147} _MM_MANTISSA_NORM_ENUM;
148
149typedef enum
150{
151 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
152 _MM_MANT_SIGN_zero, /* sign = 0 */
153 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
154} _MM_MANTISSA_SIGN_ENUM;
155
Eric Christopher4d1851682015-06-17 07:09:20 +0000156/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000157#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000158
Adam Nemet0d5bb552014-07-28 17:14:40 +0000159/* Create vectors with repeated elements */
160
Michael Kupersteine45af542015-06-30 13:36:19 +0000161static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000162_mm512_setzero_si512(void)
163{
164 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
165}
166
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000167static __inline__ __m512d __DEFAULT_FN_ATTRS
168_mm512_undefined_pd()
169{
170 return (__m512d)__builtin_ia32_undef512();
171}
172
173static __inline__ __m512 __DEFAULT_FN_ATTRS
174_mm512_undefined()
175{
176 return (__m512)__builtin_ia32_undef512();
177}
178
179static __inline__ __m512 __DEFAULT_FN_ATTRS
180_mm512_undefined_ps()
181{
182 return (__m512)__builtin_ia32_undef512();
183}
184
185static __inline__ __m512i __DEFAULT_FN_ATTRS
186_mm512_undefined_epi32()
187{
188 return (__m512i)__builtin_ia32_undef512();
189}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000190static __inline__ __m512i __DEFAULT_FN_ATTRS
191_mm512_broadcastd_epi32 (__m128i __A)
192{
193 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
194 (__v16si)
195 _mm512_undefined_epi32 (),
196 (__mmask16) -1);
197}
198
199static __inline__ __m512i __DEFAULT_FN_ATTRS
200_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
201{
202 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
203 (__v16si) __O, __M);
204}
205
206static __inline__ __m512i __DEFAULT_FN_ATTRS
207_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
208{
209 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
210 (__v16si)
211 _mm512_setzero_si512 (),
212 __M);
213}
214
215static __inline__ __m512i __DEFAULT_FN_ATTRS
216_mm512_broadcastq_epi64 (__m128i __A)
217{
218 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
219 (__v8di)
220 _mm512_undefined_pd (),
221 (__mmask8) -1);
222}
223
224static __inline__ __m512i __DEFAULT_FN_ATTRS
225_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
226{
227 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
228 (__v8di) __O, __M);
229}
230
231static __inline__ __m512i __DEFAULT_FN_ATTRS
232_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
233{
234 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
235 (__v8di)
236 _mm512_setzero_si512 (),
237 __M);
238}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000239
Michael Kupersteine45af542015-06-30 13:36:19 +0000240static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000241_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
242{
243 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
244 (__v16si)
245 _mm512_setzero_si512 (),
246 __M);
247}
248
Michael Kupersteine45af542015-06-30 13:36:19 +0000249static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000250_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
251{
252#ifdef __x86_64__
253 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
254 (__v8di)
255 _mm512_setzero_si512 (),
256 __M);
257#else
258 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
259 (__v8di)
260 _mm512_setzero_si512 (),
261 __M);
262#endif
263}
264
Michael Kupersteine45af542015-06-30 13:36:19 +0000265static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000266_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000267{
268 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
269 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
270}
Michael Kupersteine45af542015-06-30 13:36:19 +0000271static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000272_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000273{
274 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
275}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000276
Michael Kupersteine45af542015-06-30 13:36:19 +0000277static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000278_mm512_set1_ps(float __w)
279{
280 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
281 __w, __w, __w, __w, __w, __w, __w, __w };
282}
283
Michael Kupersteine45af542015-06-30 13:36:19 +0000284static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000285_mm512_set1_pd(double __w)
286{
287 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
288}
289
Michael Kupersteine45af542015-06-30 13:36:19 +0000290static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +0000291_mm512_set1_epi8(char __w)
292{
293 return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w,
294 __w, __w, __w, __w, __w, __w, __w, __w,
295 __w, __w, __w, __w, __w, __w, __w, __w,
296 __w, __w, __w, __w, __w, __w, __w, __w,
297 __w, __w, __w, __w, __w, __w, __w, __w,
298 __w, __w, __w, __w, __w, __w, __w, __w,
299 __w, __w, __w, __w, __w, __w, __w, __w,
300 __w, __w, __w, __w, __w, __w, __w, __w };
301}
302
303static __inline __m512i __DEFAULT_FN_ATTRS
304_mm512_set1_epi16(short __w)
305{
306 return (__m512i)(__v32hi){ __w, __w, __w, __w, __w, __w, __w, __w,
307 __w, __w, __w, __w, __w, __w, __w, __w,
308 __w, __w, __w, __w, __w, __w, __w, __w,
309 __w, __w, __w, __w, __w, __w, __w, __w };
310}
311
312static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000313_mm512_set1_epi32(int __s)
314{
315 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
316 __s, __s, __s, __s, __s, __s, __s, __s };
317}
318
Michael Kupersteine45af542015-06-30 13:36:19 +0000319static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000320_mm512_set1_epi64(long long __d)
321{
322 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
323}
324
Michael Kupersteine45af542015-06-30 13:36:19 +0000325static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000326_mm512_broadcastss_ps(__m128 __X)
327{
328 float __f = __X[0];
329 return (__v16sf){ __f, __f, __f, __f,
330 __f, __f, __f, __f,
331 __f, __f, __f, __f,
332 __f, __f, __f, __f };
333}
334
Michael Kupersteine45af542015-06-30 13:36:19 +0000335static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000336_mm512_broadcastsd_pd(__m128d __X)
337{
338 double __d = __X[0];
339 return (__v8df){ __d, __d, __d, __d,
340 __d, __d, __d, __d };
341}
342
Adam Nemetc871ff92014-07-30 16:51:24 +0000343/* Cast between vector types */
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000346_mm512_castpd256_pd512(__m256d __a)
347{
348 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
349}
350
Michael Kupersteine45af542015-06-30 13:36:19 +0000351static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000352_mm512_castps256_ps512(__m256 __a)
353{
354 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
355 -1, -1, -1, -1, -1, -1, -1, -1);
356}
357
Michael Kupersteine45af542015-06-30 13:36:19 +0000358static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000359_mm512_castpd512_pd128(__m512d __a)
360{
361 return __builtin_shufflevector(__a, __a, 0, 1);
362}
363
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000364static __inline __m256d __DEFAULT_FN_ATTRS
365_mm512_castpd512_pd256 (__m512d __A)
366{
367 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
368}
369
Michael Kupersteine45af542015-06-30 13:36:19 +0000370static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000371_mm512_castps512_ps128(__m512 __a)
372{
373 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
374}
375
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000376static __inline __m256 __DEFAULT_FN_ATTRS
377_mm512_castps512_ps256 (__m512 __A)
378{
379 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
380}
381
382static __inline __m512 __DEFAULT_FN_ATTRS
383_mm512_castpd_ps (__m512d __A)
384{
385 return (__m512) (__A);
386}
387
388static __inline __m512i __DEFAULT_FN_ATTRS
389_mm512_castpd_si512 (__m512d __A)
390{
391 return (__m512i) (__A);
392}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000393
394static __inline__ __m512d __DEFAULT_FN_ATTRS
395_mm512_castpd128_pd512 (__m128d __A)
396{
397 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
398}
399
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000400static __inline __m512d __DEFAULT_FN_ATTRS
401_mm512_castps_pd (__m512 __A)
402{
403 return (__m512d) (__A);
404}
405
406static __inline __m512i __DEFAULT_FN_ATTRS
407_mm512_castps_si512 (__m512 __A)
408{
409 return (__m512i) (__A);
410}
411
Michael Zuckermanc6677032016-05-03 14:26:52 +0000412static __inline__ __m512 __DEFAULT_FN_ATTRS
413_mm512_castps128_ps512 (__m128 __A)
414{
415 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
416}
417
418static __inline__ __m512i __DEFAULT_FN_ATTRS
419_mm512_castsi128_si512 (__m128i __A)
420{
421 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
422}
423
424static __inline__ __m512i __DEFAULT_FN_ATTRS
425_mm512_castsi256_si512 (__m256i __A)
426{
427 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
428}
429
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000430static __inline __m512 __DEFAULT_FN_ATTRS
431_mm512_castsi512_ps (__m512i __A)
432{
433 return (__m512) (__A);
434}
435
436static __inline __m512d __DEFAULT_FN_ATTRS
437_mm512_castsi512_pd (__m512i __A)
438{
439 return (__m512d) (__A);
440}
441
442static __inline __m128i __DEFAULT_FN_ATTRS
443_mm512_castsi512_si128 (__m512i __A)
444{
445 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
446}
447
Michael Zuckerman22c47e62016-05-26 14:32:11 +0000448static __inline __m256i __DEFAULT_FN_ATTRS
449_mm512_castsi512_si256 (__m512i __A)
450{
451 return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
452}
453
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000454/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000456_mm512_and_epi32(__m512i __a, __m512i __b)
457{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000458 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000459}
460
Michael Kupersteine45af542015-06-30 13:36:19 +0000461static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000462_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
463{
464 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
465 (__v16si) __b,
466 (__v16si) __src,
467 (__mmask16) __k);
468}
Michael Kupersteine45af542015-06-30 13:36:19 +0000469static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000470_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
471{
472 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
473 (__v16si) __b,
474 (__v16si)
475 _mm512_setzero_si512 (),
476 (__mmask16) __k);
477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000480_mm512_and_epi64(__m512i __a, __m512i __b)
481{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000482 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483}
484
Michael Kupersteine45af542015-06-30 13:36:19 +0000485static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000486_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
487{
488 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
489 (__v8di) __b,
490 (__v8di) __src,
491 (__mmask8) __k);
492}
Michael Kupersteine45af542015-06-30 13:36:19 +0000493static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000494_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
495{
496 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
497 (__v8di) __b,
498 (__v8di)
499 _mm512_setzero_si512 (),
500 (__mmask8) __k);
501}
502
Michael Kupersteine45af542015-06-30 13:36:19 +0000503static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000504_mm512_andnot_si512 (__m512i __A, __m512i __B)
505{
506 return (__m512i)(~(__A) & __B);
507}
508
509static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000510_mm512_andnot_epi32 (__m512i __A, __m512i __B)
511{
512 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
513 (__v16si) __B,
514 (__v16si)
515 _mm512_setzero_si512 (),
516 (__mmask16) -1);
517}
518
Michael Kupersteine45af542015-06-30 13:36:19 +0000519static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000520_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
521{
522 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
523 (__v16si) __B,
524 (__v16si) __W,
525 (__mmask16) __U);
526}
527
Michael Kupersteine45af542015-06-30 13:36:19 +0000528static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000529_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
530{
531 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
532 (__v16si) __B,
533 (__v16si)
534 _mm512_setzero_si512 (),
535 (__mmask16) __U);
536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000539_mm512_andnot_epi64 (__m512i __A, __m512i __B)
540{
541 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
542 (__v8di) __B,
543 (__v8di)
544 _mm512_setzero_si512 (),
545 (__mmask8) -1);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000549_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
550{
551 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
552 (__v8di) __B,
553 (__v8di) __W, __U);
554}
555
Michael Kupersteine45af542015-06-30 13:36:19 +0000556static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000557_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
558{
559 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
560 (__v8di) __B,
561 (__v8di)
562 _mm512_setzero_pd (),
563 __U);
564}
Michael Kupersteine45af542015-06-30 13:36:19 +0000565static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000566_mm512_or_epi32(__m512i __a, __m512i __b)
567{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000568 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000569}
570
Michael Kupersteine45af542015-06-30 13:36:19 +0000571static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000572_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
573{
574 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
575 (__v16si) __b,
576 (__v16si) __src,
577 (__mmask16) __k);
578}
Michael Kupersteine45af542015-06-30 13:36:19 +0000579static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000580_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
581{
582 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
583 (__v16si) __b,
584 (__v16si)
585 _mm512_setzero_si512 (),
586 (__mmask16) __k);
587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000590_mm512_or_epi64(__m512i __a, __m512i __b)
591{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000592 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000593}
594
Michael Kupersteine45af542015-06-30 13:36:19 +0000595static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000596_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
597{
598 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
599 (__v8di) __b,
600 (__v8di) __src,
601 (__mmask8) __k);
602}
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000604_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
605{
606 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
607 (__v8di) __b,
608 (__v8di)
609 _mm512_setzero_si512 (),
610 (__mmask8) __k);
611}
612
Michael Kupersteine45af542015-06-30 13:36:19 +0000613static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614_mm512_xor_epi32(__m512i __a, __m512i __b)
615{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000616 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000617}
618
Michael Kupersteine45af542015-06-30 13:36:19 +0000619static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000620_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
621{
622 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
623 (__v16si) __b,
624 (__v16si) __src,
625 (__mmask16) __k);
626}
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000628_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
629{
630 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
631 (__v16si) __b,
632 (__v16si)
633 _mm512_setzero_si512 (),
634 (__mmask16) __k);
635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000638_mm512_xor_epi64(__m512i __a, __m512i __b)
639{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000640 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000641}
642
Michael Kupersteine45af542015-06-30 13:36:19 +0000643static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000644_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
645{
646 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
647 (__v8di) __b,
648 (__v8di) __src,
649 (__mmask8) __k);
650}
Michael Kupersteine45af542015-06-30 13:36:19 +0000651static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000652_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
653{
654 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
655 (__v8di) __b,
656 (__v8di)
657 _mm512_setzero_si512 (),
658 (__mmask8) __k);
659}
660
Michael Kupersteine45af542015-06-30 13:36:19 +0000661static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000662_mm512_and_si512(__m512i __a, __m512i __b)
663{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000664 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000665}
666
Michael Kupersteine45af542015-06-30 13:36:19 +0000667static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000668_mm512_or_si512(__m512i __a, __m512i __b)
669{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000670 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000671}
672
Michael Kupersteine45af542015-06-30 13:36:19 +0000673static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000674_mm512_xor_si512(__m512i __a, __m512i __b)
675{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000676 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000677}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000678/* Arithmetic */
679
Michael Kupersteine45af542015-06-30 13:36:19 +0000680static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000681_mm512_add_pd(__m512d __a, __m512d __b)
682{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000683 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000684}
685
Michael Kupersteine45af542015-06-30 13:36:19 +0000686static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000687_mm512_add_ps(__m512 __a, __m512 __b)
688{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000689 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000693_mm512_mul_pd(__m512d __a, __m512d __b)
694{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000695 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000699_mm512_mul_ps(__m512 __a, __m512 __b)
700{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000701 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000702}
703
Michael Kupersteine45af542015-06-30 13:36:19 +0000704static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000705_mm512_sub_pd(__m512d __a, __m512d __b)
706{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000707 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000708}
709
Michael Kupersteine45af542015-06-30 13:36:19 +0000710static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000711_mm512_sub_ps(__m512 __a, __m512 __b)
712{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000713 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000714}
715
Michael Kupersteine45af542015-06-30 13:36:19 +0000716static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000717_mm512_add_epi64 (__m512i __A, __m512i __B)
718{
719 return (__m512i) ((__v8di) __A + (__v8di) __B);
720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000723_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
724{
725 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
726 (__v8di) __B,
727 (__v8di) __W,
728 (__mmask8) __U);
729}
730
Michael Kupersteine45af542015-06-30 13:36:19 +0000731static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000732_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
733{
734 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
735 (__v8di) __B,
736 (__v8di)
737 _mm512_setzero_si512 (),
738 (__mmask8) __U);
739}
740
Michael Kupersteine45af542015-06-30 13:36:19 +0000741static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000742_mm512_sub_epi64 (__m512i __A, __m512i __B)
743{
744 return (__m512i) ((__v8di) __A - (__v8di) __B);
745}
746
Michael Kupersteine45af542015-06-30 13:36:19 +0000747static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000748_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
749{
750 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
751 (__v8di) __B,
752 (__v8di) __W,
753 (__mmask8) __U);
754}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000757_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
758{
759 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
760 (__v8di) __B,
761 (__v8di)
762 _mm512_setzero_si512 (),
763 (__mmask8) __U);
764}
765
Michael Kupersteine45af542015-06-30 13:36:19 +0000766static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000767_mm512_add_epi32 (__m512i __A, __m512i __B)
768{
769 return (__m512i) ((__v16si) __A + (__v16si) __B);
770}
771
Michael Kupersteine45af542015-06-30 13:36:19 +0000772static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000773_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
774{
775 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
776 (__v16si) __B,
777 (__v16si) __W,
778 (__mmask16) __U);
779}
780
Michael Kupersteine45af542015-06-30 13:36:19 +0000781static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000782_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
783{
784 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
785 (__v16si) __B,
786 (__v16si)
787 _mm512_setzero_si512 (),
788 (__mmask16) __U);
789}
790
Michael Kupersteine45af542015-06-30 13:36:19 +0000791static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000792_mm512_sub_epi32 (__m512i __A, __m512i __B)
793{
794 return (__m512i) ((__v16si) __A - (__v16si) __B);
795}
796
Michael Kupersteine45af542015-06-30 13:36:19 +0000797static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000798_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
799{
800 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
801 (__v16si) __B,
802 (__v16si) __W,
803 (__mmask16) __U);
804}
805
Michael Kupersteine45af542015-06-30 13:36:19 +0000806static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000807_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
808{
809 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
810 (__v16si) __B,
811 (__v16si)
812 _mm512_setzero_si512 (),
813 (__mmask16) __U);
814}
815
Michael Kupersteine45af542015-06-30 13:36:19 +0000816static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000817_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000818{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000819 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
820 (__v8df) __B,
821 (__v8df)
822 _mm512_setzero_pd (),
823 (__mmask8) -1,
824 _MM_FROUND_CUR_DIRECTION);
825}
826
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000827static __inline__ __m512d __DEFAULT_FN_ATTRS
828_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
829{
830 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
831 (__v8df) __B,
832 (__v8df) __W,
833 (__mmask8) __U,
834 _MM_FROUND_CUR_DIRECTION);
835}
836
837static __inline__ __m512d __DEFAULT_FN_ATTRS
838_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
839{
840 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
841 (__v8df) __B,
842 (__v8df)
843 _mm512_setzero_pd (),
844 (__mmask8) __U,
845 _MM_FROUND_CUR_DIRECTION);
846}
847
Michael Kupersteine45af542015-06-30 13:36:19 +0000848static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000849_mm512_max_ps(__m512 __A, __m512 __B)
850{
851 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
852 (__v16sf) __B,
853 (__v16sf)
854 _mm512_setzero_ps (),
855 (__mmask16) -1,
856 _MM_FROUND_CUR_DIRECTION);
857}
858
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000859static __inline__ __m512 __DEFAULT_FN_ATTRS
860_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
861{
862 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
863 (__v16sf) __B,
864 (__v16sf) __W,
865 (__mmask16) __U,
866 _MM_FROUND_CUR_DIRECTION);
867}
868
869static __inline__ __m512 __DEFAULT_FN_ATTRS
870_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
871{
872 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
873 (__v16sf) __B,
874 (__v16sf)
875 _mm512_setzero_ps (),
876 (__mmask16) __U,
877 _MM_FROUND_CUR_DIRECTION);
878}
879
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000880static __inline__ __m128 __DEFAULT_FN_ATTRS
881_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000882 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000883 (__v4sf) __B,
884 (__v4sf) __W,
885 (__mmask8) __U,
886 _MM_FROUND_CUR_DIRECTION);
887}
888
889static __inline__ __m128 __DEFAULT_FN_ATTRS
890_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000891 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000892 (__v4sf) __B,
893 (__v4sf) _mm_setzero_ps (),
894 (__mmask8) __U,
895 _MM_FROUND_CUR_DIRECTION);
896}
897
Craig Topper8c18e112016-05-17 04:41:50 +0000898#define _mm_max_round_ss(A, B, R) __extension__ ({ \
899 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
900 (__v4sf)(__m128)(B), \
901 (__v4sf)_mm_setzero_ps(), \
902 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000903
Craig Topper8c18e112016-05-17 04:41:50 +0000904#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
905 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
906 (__v4sf)(__m128)(B), \
907 (__v4sf)(__m128)(W), (__mmask8)(U), \
908 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000909
Craig Topper8c18e112016-05-17 04:41:50 +0000910#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
911 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
912 (__v4sf)(__m128)(B), \
913 (__v4sf)_mm_setzero_ps(), \
914 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000915
916static __inline__ __m128d __DEFAULT_FN_ATTRS
917_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000918 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000919 (__v2df) __B,
920 (__v2df) __W,
921 (__mmask8) __U,
922 _MM_FROUND_CUR_DIRECTION);
923}
924
925static __inline__ __m128d __DEFAULT_FN_ATTRS
926_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000927 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000928 (__v2df) __B,
929 (__v2df) _mm_setzero_pd (),
930 (__mmask8) __U,
931 _MM_FROUND_CUR_DIRECTION);
932}
933
Craig Topper8c18e112016-05-17 04:41:50 +0000934#define _mm_max_round_sd(A, B, R) __extension__ ({ \
935 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
936 (__v2df)(__m128d)(B), \
937 (__v2df)_mm_setzero_pd(), \
938 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000939
Craig Topper8c18e112016-05-17 04:41:50 +0000940#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
941 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
942 (__v2df)(__m128d)(B), \
943 (__v2df)(__m128d)(W), \
944 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000945
Craig Topper8c18e112016-05-17 04:41:50 +0000946#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
947 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
948 (__v2df)(__m128d)(B), \
949 (__v2df)_mm_setzero_pd(), \
950 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000951
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +0000952static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000953__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000954_mm512_max_epi32(__m512i __A, __m512i __B)
955{
956 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
957 (__v16si) __B,
958 (__v16si)
959 _mm512_setzero_si512 (),
960 (__mmask16) -1);
961}
962
Michael Zuckermande860e52016-05-10 11:34:19 +0000963static __inline__ __m512i __DEFAULT_FN_ATTRS
964_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
965{
966 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
967 (__v16si) __B,
968 (__v16si) __W, __M);
969}
970
971static __inline__ __m512i __DEFAULT_FN_ATTRS
972_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
973{
974 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
975 (__v16si) __B,
976 (__v16si)
977 _mm512_setzero_si512 (),
978 __M);
979}
980
Michael Kupersteine45af542015-06-30 13:36:19 +0000981static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000982_mm512_max_epu32(__m512i __A, __m512i __B)
983{
984 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
985 (__v16si) __B,
986 (__v16si)
987 _mm512_setzero_si512 (),
988 (__mmask16) -1);
989}
990
Michael Zuckermande860e52016-05-10 11:34:19 +0000991static __inline__ __m512i __DEFAULT_FN_ATTRS
992_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
993{
994 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
995 (__v16si) __B,
996 (__v16si) __W, __M);
997}
998
999static __inline__ __m512i __DEFAULT_FN_ATTRS
1000_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1001{
1002 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1003 (__v16si) __B,
1004 (__v16si)
1005 _mm512_setzero_si512 (),
1006 __M);
1007}
1008
Michael Kupersteine45af542015-06-30 13:36:19 +00001009static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001010_mm512_max_epi64(__m512i __A, __m512i __B)
1011{
1012 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1013 (__v8di) __B,
1014 (__v8di)
1015 _mm512_setzero_si512 (),
1016 (__mmask8) -1);
1017}
1018
Michael Zuckermande860e52016-05-10 11:34:19 +00001019static __inline__ __m512i __DEFAULT_FN_ATTRS
1020_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1021{
1022 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1023 (__v8di) __B,
1024 (__v8di) __W, __M);
1025}
1026
1027static __inline__ __m512i __DEFAULT_FN_ATTRS
1028_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1029{
1030 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1031 (__v8di) __B,
1032 (__v8di)
1033 _mm512_setzero_si512 (),
1034 __M);
1035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001038_mm512_max_epu64(__m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1041 (__v8di) __B,
1042 (__v8di)
1043 _mm512_setzero_si512 (),
1044 (__mmask8) -1);
1045}
1046
Michael Zuckermande860e52016-05-10 11:34:19 +00001047static __inline__ __m512i __DEFAULT_FN_ATTRS
1048_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1049{
1050 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1051 (__v8di) __B,
1052 (__v8di) __W, __M);
1053}
1054
1055static __inline__ __m512i __DEFAULT_FN_ATTRS
1056_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1057{
1058 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1059 (__v8di) __B,
1060 (__v8di)
1061 _mm512_setzero_si512 (),
1062 __M);
1063}
1064
Michael Kupersteine45af542015-06-30 13:36:19 +00001065static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001066_mm512_min_pd(__m512d __A, __m512d __B)
1067{
1068 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1069 (__v8df) __B,
1070 (__v8df)
1071 _mm512_setzero_pd (),
1072 (__mmask8) -1,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001076static __inline__ __m512d __DEFAULT_FN_ATTRS
1077_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1078{
1079 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1080 (__v8df) __B,
1081 (__v8df) __W,
1082 (__mmask8) __U,
1083 _MM_FROUND_CUR_DIRECTION);
1084}
1085
1086static __inline__ __m512d __DEFAULT_FN_ATTRS
1087_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1088{
1089 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1090 (__v8df) __B,
1091 (__v8df)
1092 _mm512_setzero_pd (),
1093 (__mmask8) __U,
1094 _MM_FROUND_CUR_DIRECTION);
1095}
1096
Michael Kupersteine45af542015-06-30 13:36:19 +00001097static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001098_mm512_min_ps(__m512 __A, __m512 __B)
1099{
1100 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1101 (__v16sf) __B,
1102 (__v16sf)
1103 _mm512_setzero_ps (),
1104 (__mmask16) -1,
1105 _MM_FROUND_CUR_DIRECTION);
1106}
1107
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001108static __inline__ __m512 __DEFAULT_FN_ATTRS
1109_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1110{
1111 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1112 (__v16sf) __B,
1113 (__v16sf) __W,
1114 (__mmask16) __U,
1115 _MM_FROUND_CUR_DIRECTION);
1116}
1117
1118static __inline__ __m512 __DEFAULT_FN_ATTRS
1119_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1120{
1121 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1122 (__v16sf) __B,
1123 (__v16sf)
1124 _mm512_setzero_ps (),
1125 (__mmask16) __U,
1126 _MM_FROUND_CUR_DIRECTION);
1127}
1128
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001129static __inline__ __m128 __DEFAULT_FN_ATTRS
1130_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001131 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001132 (__v4sf) __B,
1133 (__v4sf) __W,
1134 (__mmask8) __U,
1135 _MM_FROUND_CUR_DIRECTION);
1136}
1137
1138static __inline__ __m128 __DEFAULT_FN_ATTRS
1139_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001140 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001141 (__v4sf) __B,
1142 (__v4sf) _mm_setzero_ps (),
1143 (__mmask8) __U,
1144 _MM_FROUND_CUR_DIRECTION);
1145}
1146
Craig Topper8c18e112016-05-17 04:41:50 +00001147#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1148 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1149 (__v4sf)(__m128)(B), \
1150 (__v4sf)_mm_setzero_ps(), \
1151 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001152
Craig Topper8c18e112016-05-17 04:41:50 +00001153#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1154 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1155 (__v4sf)(__m128)(B), \
1156 (__v4sf)(__m128)(W), (__mmask8)(U), \
1157 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158
Craig Topper8c18e112016-05-17 04:41:50 +00001159#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1160 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1161 (__v4sf)(__m128)(B), \
1162 (__v4sf)_mm_setzero_ps(), \
1163 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001164
1165static __inline__ __m128d __DEFAULT_FN_ATTRS
1166_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001167 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001168 (__v2df) __B,
1169 (__v2df) __W,
1170 (__mmask8) __U,
1171 _MM_FROUND_CUR_DIRECTION);
1172}
1173
1174static __inline__ __m128d __DEFAULT_FN_ATTRS
1175_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001176 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001177 (__v2df) __B,
1178 (__v2df) _mm_setzero_pd (),
1179 (__mmask8) __U,
1180 _MM_FROUND_CUR_DIRECTION);
1181}
1182
Craig Topper8c18e112016-05-17 04:41:50 +00001183#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1184 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1185 (__v2df)(__m128d)(B), \
1186 (__v2df)_mm_setzero_pd(), \
1187 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001188
Craig Topper8c18e112016-05-17 04:41:50 +00001189#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1190 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1191 (__v2df)(__m128d)(B), \
1192 (__v2df)(__m128d)(W), \
1193 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001194
Craig Topper8c18e112016-05-17 04:41:50 +00001195#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1196 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1197 (__v2df)(__m128d)(B), \
1198 (__v2df)_mm_setzero_pd(), \
1199 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001200
Adam Nemet0d5bb552014-07-28 17:14:40 +00001201static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001202__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001203_mm512_min_epi32(__m512i __A, __m512i __B)
1204{
1205 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1206 (__v16si) __B,
1207 (__v16si)
1208 _mm512_setzero_si512 (),
1209 (__mmask16) -1);
1210}
1211
Michael Zuckermande860e52016-05-10 11:34:19 +00001212static __inline__ __m512i __DEFAULT_FN_ATTRS
1213_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1214{
1215 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1216 (__v16si) __B,
1217 (__v16si) __W, __M);
1218}
1219
1220static __inline__ __m512i __DEFAULT_FN_ATTRS
1221_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1222{
1223 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1224 (__v16si) __B,
1225 (__v16si)
1226 _mm512_setzero_si512 (),
1227 __M);
1228}
1229
Michael Kupersteine45af542015-06-30 13:36:19 +00001230static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001231_mm512_min_epu32(__m512i __A, __m512i __B)
1232{
1233 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1234 (__v16si) __B,
1235 (__v16si)
1236 _mm512_setzero_si512 (),
1237 (__mmask16) -1);
1238}
1239
Michael Zuckermande860e52016-05-10 11:34:19 +00001240static __inline__ __m512i __DEFAULT_FN_ATTRS
1241_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1242{
1243 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1244 (__v16si) __B,
1245 (__v16si) __W, __M);
1246}
1247
1248static __inline__ __m512i __DEFAULT_FN_ATTRS
1249_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1250{
1251 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1252 (__v16si) __B,
1253 (__v16si)
1254 _mm512_setzero_si512 (),
1255 __M);
1256}
1257
Michael Kupersteine45af542015-06-30 13:36:19 +00001258static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001259_mm512_min_epi64(__m512i __A, __m512i __B)
1260{
1261 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1262 (__v8di) __B,
1263 (__v8di)
1264 _mm512_setzero_si512 (),
1265 (__mmask8) -1);
1266}
1267
Michael Zuckermande860e52016-05-10 11:34:19 +00001268static __inline__ __m512i __DEFAULT_FN_ATTRS
1269_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1270{
1271 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1272 (__v8di) __B,
1273 (__v8di) __W, __M);
1274}
1275
1276static __inline__ __m512i __DEFAULT_FN_ATTRS
1277_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1278{
1279 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1280 (__v8di) __B,
1281 (__v8di)
1282 _mm512_setzero_si512 (),
1283 __M);
1284}
1285
Michael Kupersteine45af542015-06-30 13:36:19 +00001286static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001287_mm512_min_epu64(__m512i __A, __m512i __B)
1288{
1289 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1290 (__v8di) __B,
1291 (__v8di)
1292 _mm512_setzero_si512 (),
1293 (__mmask8) -1);
1294}
1295
Michael Zuckermande860e52016-05-10 11:34:19 +00001296static __inline__ __m512i __DEFAULT_FN_ATTRS
1297_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1298{
1299 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1300 (__v8di) __B,
1301 (__v8di) __W, __M);
1302}
1303
1304static __inline__ __m512i __DEFAULT_FN_ATTRS
1305_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1306{
1307 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1308 (__v8di) __B,
1309 (__v8di)
1310 _mm512_setzero_si512 (),
1311 __M);
1312}
1313
Michael Kupersteine45af542015-06-30 13:36:19 +00001314static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001315_mm512_mul_epi32(__m512i __X, __m512i __Y)
1316{
1317 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1318 (__v16si) __Y,
1319 (__v8di)
1320 _mm512_setzero_si512 (),
1321 (__mmask8) -1);
1322}
1323
Michael Kupersteine45af542015-06-30 13:36:19 +00001324static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001325_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1326{
1327 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1328 (__v16si) __Y,
1329 (__v8di) __W, __M);
1330}
1331
Michael Kupersteine45af542015-06-30 13:36:19 +00001332static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001333_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1334{
1335 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1336 (__v16si) __Y,
1337 (__v8di)
1338 _mm512_setzero_si512 (),
1339 __M);
1340}
1341
Michael Kupersteine45af542015-06-30 13:36:19 +00001342static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001343_mm512_mul_epu32(__m512i __X, __m512i __Y)
1344{
1345 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1346 (__v16si) __Y,
1347 (__v8di)
1348 _mm512_setzero_si512 (),
1349 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001350}
1351
Michael Kupersteine45af542015-06-30 13:36:19 +00001352static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001353_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1354{
1355 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1356 (__v16si) __Y,
1357 (__v8di) __W, __M);
1358}
1359
Michael Kupersteine45af542015-06-30 13:36:19 +00001360static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001361_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1362{
1363 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1364 (__v16si) __Y,
1365 (__v8di)
1366 _mm512_setzero_si512 (),
1367 __M);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001371_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1372{
1373 return (__m512i) ((__v16si) __A * (__v16si) __B);
1374}
1375
Michael Kupersteine45af542015-06-30 13:36:19 +00001376static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001377_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1378{
1379 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1380 (__v16si) __B,
1381 (__v16si)
1382 _mm512_setzero_si512 (),
1383 __M);
1384}
1385
Michael Kupersteine45af542015-06-30 13:36:19 +00001386static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001387_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1388{
1389 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1390 (__v16si) __B,
1391 (__v16si) __W, __M);
1392}
1393
Michael Kupersteine45af542015-06-30 13:36:19 +00001394static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001395_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001396{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001397 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001398 (__v8df) _mm512_setzero_pd (),
1399 (__mmask8) -1,
1400 _MM_FROUND_CUR_DIRECTION);
1401}
1402
Michael Zuckermancb856772016-05-16 11:42:01 +00001403static __inline__ __m512d __DEFAULT_FN_ATTRS
1404_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1405{
1406 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1407 (__v8df) __W,
1408 (__mmask8) __U,
1409 _MM_FROUND_CUR_DIRECTION);
1410}
1411
1412static __inline__ __m512d __DEFAULT_FN_ATTRS
1413_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1414{
1415 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1416 (__v8df)
1417 _mm512_setzero_pd (),
1418 (__mmask8) __U,
1419 _MM_FROUND_CUR_DIRECTION);
1420}
1421
Michael Kupersteine45af542015-06-30 13:36:19 +00001422static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001423_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001424{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001425 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001426 (__v16sf) _mm512_setzero_ps (),
1427 (__mmask16) -1,
1428 _MM_FROUND_CUR_DIRECTION);
1429}
1430
Michael Zuckermancb856772016-05-16 11:42:01 +00001431static __inline__ __m512 __DEFAULT_FN_ATTRS
1432_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1433{
1434 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1435 (__v16sf) __W,
1436 (__mmask16) __U,
1437 _MM_FROUND_CUR_DIRECTION);
1438}
1439
1440static __inline__ __m512 __DEFAULT_FN_ATTRS
1441_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1442{
1443 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1444 (__v16sf) _mm512_setzero_ps (),
1445 (__mmask16) __U,
1446 _MM_FROUND_CUR_DIRECTION);
1447}
1448
Michael Kupersteine45af542015-06-30 13:36:19 +00001449static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001450_mm512_rsqrt14_pd(__m512d __A)
1451{
1452 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1453 (__v8df)
1454 _mm512_setzero_pd (),
1455 (__mmask8) -1);}
1456
Michael Zuckermancb856772016-05-16 11:42:01 +00001457static __inline__ __m512d __DEFAULT_FN_ATTRS
1458_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1459{
1460 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1461 (__v8df) __W,
1462 (__mmask8) __U);
1463}
1464
1465static __inline__ __m512d __DEFAULT_FN_ATTRS
1466_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1467{
1468 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1469 (__v8df)
1470 _mm512_setzero_pd (),
1471 (__mmask8) __U);
1472}
1473
Michael Kupersteine45af542015-06-30 13:36:19 +00001474static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001475_mm512_rsqrt14_ps(__m512 __A)
1476{
1477 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1478 (__v16sf)
1479 _mm512_setzero_ps (),
1480 (__mmask16) -1);
1481}
1482
Michael Zuckermancb856772016-05-16 11:42:01 +00001483static __inline__ __m512 __DEFAULT_FN_ATTRS
1484_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1485{
1486 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1487 (__v16sf) __W,
1488 (__mmask16) __U);
1489}
1490
1491static __inline__ __m512 __DEFAULT_FN_ATTRS
1492_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1493{
1494 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1495 (__v16sf)
1496 _mm512_setzero_ps (),
1497 (__mmask16) __U);
1498}
1499
Michael Kupersteine45af542015-06-30 13:36:19 +00001500static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001501_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1502{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001503 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001504 (__v4sf) __B,
1505 (__v4sf)
1506 _mm_setzero_ps (),
1507 (__mmask8) -1);
1508}
1509
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001510static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001511_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001512{
1513 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1514 (__v4sf) __B,
1515 (__v4sf) __W,
1516 (__mmask8) __U);
1517}
1518
1519static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001520_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001521{
1522 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1523 (__v4sf) __B,
1524 (__v4sf) _mm_setzero_ps (),
1525 (__mmask8) __U);
1526}
1527
Michael Kupersteine45af542015-06-30 13:36:19 +00001528static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001529_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1530{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001531 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001532 (__v2df) __B,
1533 (__v2df)
1534 _mm_setzero_pd (),
1535 (__mmask8) -1);
1536}
1537
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001538static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001539_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001540{
1541 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1542 (__v2df) __B,
1543 (__v2df) __W,
1544 (__mmask8) __U);
1545}
1546
1547static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001548_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001549{
1550 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1551 (__v2df) __B,
1552 (__v2df) _mm_setzero_pd (),
1553 (__mmask8) __U);
1554}
1555
Michael Kupersteine45af542015-06-30 13:36:19 +00001556static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001557_mm512_rcp14_pd(__m512d __A)
1558{
1559 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1560 (__v8df)
1561 _mm512_setzero_pd (),
1562 (__mmask8) -1);
1563}
1564
Michael Zuckermancb856772016-05-16 11:42:01 +00001565static __inline__ __m512d __DEFAULT_FN_ATTRS
1566_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1567{
1568 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1569 (__v8df) __W,
1570 (__mmask8) __U);
1571}
1572
1573static __inline__ __m512d __DEFAULT_FN_ATTRS
1574_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1575{
1576 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1577 (__v8df)
1578 _mm512_setzero_pd (),
1579 (__mmask8) __U);
1580}
1581
Michael Kupersteine45af542015-06-30 13:36:19 +00001582static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001583_mm512_rcp14_ps(__m512 __A)
1584{
1585 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1586 (__v16sf)
1587 _mm512_setzero_ps (),
1588 (__mmask16) -1);
1589}
Michael Zuckermancb856772016-05-16 11:42:01 +00001590
1591static __inline__ __m512 __DEFAULT_FN_ATTRS
1592_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1593{
1594 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1595 (__v16sf) __W,
1596 (__mmask16) __U);
1597}
1598
1599static __inline__ __m512 __DEFAULT_FN_ATTRS
1600_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1601{
1602 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1603 (__v16sf)
1604 _mm512_setzero_ps (),
1605 (__mmask16) __U);
1606}
1607
Michael Kupersteine45af542015-06-30 13:36:19 +00001608static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001609_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001610{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001611 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001612 (__v4sf) __B,
1613 (__v4sf)
1614 _mm_setzero_ps (),
1615 (__mmask8) -1);
1616}
1617
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001618static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001619_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001620{
1621 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1622 (__v4sf) __B,
1623 (__v4sf) __W,
1624 (__mmask8) __U);
1625}
1626
1627static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001628_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001629{
1630 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1631 (__v4sf) __B,
1632 (__v4sf) _mm_setzero_ps (),
1633 (__mmask8) __U);
1634}
1635
Michael Kupersteine45af542015-06-30 13:36:19 +00001636static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001637_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001638{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001639 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001640 (__v2df) __B,
1641 (__v2df)
1642 _mm_setzero_pd (),
1643 (__mmask8) -1);
1644}
1645
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001646static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001647_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001648{
1649 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1650 (__v2df) __B,
1651 (__v2df) __W,
1652 (__mmask8) __U);
1653}
1654
1655static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001656_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001657{
1658 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1659 (__v2df) __B,
1660 (__v2df) _mm_setzero_pd (),
1661 (__mmask8) __U);
1662}
1663
Michael Kupersteine45af542015-06-30 13:36:19 +00001664static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001665_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001666{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001667 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1668 _MM_FROUND_FLOOR,
1669 (__v16sf) __A, -1,
1670 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001671}
1672
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001673static __inline__ __m512 __DEFAULT_FN_ATTRS
1674_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1675{
1676 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1677 _MM_FROUND_FLOOR,
1678 (__v16sf) __W, __U,
1679 _MM_FROUND_CUR_DIRECTION);
1680}
1681
1682
Michael Kupersteine45af542015-06-30 13:36:19 +00001683static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001684_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001685{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001686 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1687 _MM_FROUND_FLOOR,
1688 (__v8df) __A, -1,
1689 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001690}
1691
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001692static __inline__ __m512d __DEFAULT_FN_ATTRS
1693_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1694{
1695 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1696 _MM_FROUND_FLOOR,
1697 (__v8df) __W, __U,
1698 _MM_FROUND_CUR_DIRECTION);
1699}
1700
1701
1702static __inline__ __m512 __DEFAULT_FN_ATTRS
1703_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1704{
1705 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1706 _MM_FROUND_CEIL,
1707 (__v16sf) __W, __U,
1708 _MM_FROUND_CUR_DIRECTION);
1709}
1710
Michael Kupersteine45af542015-06-30 13:36:19 +00001711static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001712_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001713{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001714 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1715 _MM_FROUND_CEIL,
1716 (__v16sf) __A, -1,
1717 _MM_FROUND_CUR_DIRECTION);
1718}
1719
Michael Kupersteine45af542015-06-30 13:36:19 +00001720static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001721_mm512_ceil_pd(__m512d __A)
1722{
1723 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1724 _MM_FROUND_CEIL,
1725 (__v8df) __A, -1,
1726 _MM_FROUND_CUR_DIRECTION);
1727}
1728
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001729static __inline__ __m512d __DEFAULT_FN_ATTRS
1730_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1731{
1732 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1733 _MM_FROUND_CEIL,
1734 (__v8df) __W, __U,
1735 _MM_FROUND_CUR_DIRECTION);
1736}
1737
Michael Kupersteine45af542015-06-30 13:36:19 +00001738static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001739_mm512_abs_epi64(__m512i __A)
1740{
1741 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1742 (__v8di)
1743 _mm512_setzero_si512 (),
1744 (__mmask8) -1);
1745}
1746
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001747static __inline__ __m512i __DEFAULT_FN_ATTRS
1748_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1749{
1750 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1751 (__v8di) __W,
1752 (__mmask8) __U);
1753}
1754
1755static __inline__ __m512i __DEFAULT_FN_ATTRS
1756_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1757{
1758 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1759 (__v8di)
1760 _mm512_setzero_si512 (),
1761 (__mmask8) __U);
1762}
1763
Michael Kupersteine45af542015-06-30 13:36:19 +00001764static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001765_mm512_abs_epi32(__m512i __A)
1766{
1767 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1768 (__v16si)
1769 _mm512_setzero_si512 (),
1770 (__mmask16) -1);
1771}
1772
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001773static __inline__ __m512i __DEFAULT_FN_ATTRS
1774_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1775{
1776 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1777 (__v16si) __W,
1778 (__mmask16) __U);
1779}
1780
1781static __inline__ __m512i __DEFAULT_FN_ATTRS
1782_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1783{
1784 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1785 (__v16si)
1786 _mm512_setzero_si512 (),
1787 (__mmask16) __U);
1788}
1789
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001790static __inline__ __m128 __DEFAULT_FN_ATTRS
1791_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001792 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001793 (__v4sf) __B,
1794 (__v4sf) __W,
1795 (__mmask8) __U,
1796 _MM_FROUND_CUR_DIRECTION);
1797}
1798
1799static __inline__ __m128 __DEFAULT_FN_ATTRS
1800_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001801 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001802 (__v4sf) __B,
1803 (__v4sf) _mm_setzero_ps (),
1804 (__mmask8) __U,
1805 _MM_FROUND_CUR_DIRECTION);
1806}
1807
Craig Topper8c18e112016-05-17 04:41:50 +00001808#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1809 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1810 (__v4sf)(__m128)(B), \
1811 (__v4sf)_mm_setzero_ps(), \
1812 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001813
Craig Topper8c18e112016-05-17 04:41:50 +00001814#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1815 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1816 (__v4sf)(__m128)(B), \
1817 (__v4sf)(__m128)(W), (__mmask8)(U), \
1818 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001819
Craig Topper8c18e112016-05-17 04:41:50 +00001820#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1821 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1822 (__v4sf)(__m128)(B), \
1823 (__v4sf)_mm_setzero_ps(), \
1824 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001825
1826static __inline__ __m128d __DEFAULT_FN_ATTRS
1827_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001828 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001829 (__v2df) __B,
1830 (__v2df) __W,
1831 (__mmask8) __U,
1832 _MM_FROUND_CUR_DIRECTION);
1833}
1834
1835static __inline__ __m128d __DEFAULT_FN_ATTRS
1836_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001837 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001838 (__v2df) __B,
1839 (__v2df) _mm_setzero_pd (),
1840 (__mmask8) __U,
1841 _MM_FROUND_CUR_DIRECTION);
1842}
Craig Topper8c18e112016-05-17 04:41:50 +00001843#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1844 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1845 (__v2df)(__m128d)(B), \
1846 (__v2df)_mm_setzero_pd(), \
1847 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001848
Craig Topper8c18e112016-05-17 04:41:50 +00001849#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1850 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1851 (__v2df)(__m128d)(B), \
1852 (__v2df)(__m128d)(W), \
1853 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001854
Craig Topper8c18e112016-05-17 04:41:50 +00001855#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1856 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1857 (__v2df)(__m128d)(B), \
1858 (__v2df)_mm_setzero_pd(), \
1859 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001860
Asaf Badouhffeb6242015-07-21 15:27:28 +00001861static __inline__ __m512d __DEFAULT_FN_ATTRS
1862_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1863 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1864 (__v8df) __B,
1865 (__v8df) __W,
1866 (__mmask8) __U,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
1870static __inline__ __m512d __DEFAULT_FN_ATTRS
1871_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1872 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1873 (__v8df) __B,
1874 (__v8df) _mm512_setzero_pd (),
1875 (__mmask8) __U,
1876 _MM_FROUND_CUR_DIRECTION);
1877}
1878
1879static __inline__ __m512 __DEFAULT_FN_ATTRS
1880_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1881 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1882 (__v16sf) __B,
1883 (__v16sf) __W,
1884 (__mmask16) __U,
1885 _MM_FROUND_CUR_DIRECTION);
1886}
1887
1888static __inline__ __m512 __DEFAULT_FN_ATTRS
1889_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1890 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1891 (__v16sf) __B,
1892 (__v16sf) _mm512_setzero_ps (),
1893 (__mmask16) __U,
1894 _MM_FROUND_CUR_DIRECTION);
1895}
1896
Craig Topper8c18e112016-05-17 04:41:50 +00001897#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1898 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1899 (__v8df)(__m512d)(B), \
1900 (__v8df)_mm512_setzero_pd(), \
1901 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001902
Craig Topper8c18e112016-05-17 04:41:50 +00001903#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1904 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1905 (__v8df)(__m512d)(B), \
1906 (__v8df)(__m512d)(W), (__mmask8)(U), \
1907 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001908
Craig Topper8c18e112016-05-17 04:41:50 +00001909#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1910 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1911 (__v8df)(__m512d)(B), \
1912 (__v8df)_mm512_setzero_pd(), \
1913 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001914
Craig Topper8c18e112016-05-17 04:41:50 +00001915#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1916 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1917 (__v16sf)(__m512)(B), \
1918 (__v16sf)_mm512_setzero_ps(), \
1919 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001920
Craig Topper8c18e112016-05-17 04:41:50 +00001921#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1922 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1923 (__v16sf)(__m512)(B), \
1924 (__v16sf)(__m512)(W), (__mmask16)(U), \
1925 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001926
Craig Topper8c18e112016-05-17 04:41:50 +00001927#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1928 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1929 (__v16sf)(__m512)(B), \
1930 (__v16sf)_mm512_setzero_ps(), \
1931 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001932
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001933static __inline__ __m128 __DEFAULT_FN_ATTRS
1934_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001935 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001936 (__v4sf) __B,
1937 (__v4sf) __W,
1938 (__mmask8) __U,
1939 _MM_FROUND_CUR_DIRECTION);
1940}
1941
1942static __inline__ __m128 __DEFAULT_FN_ATTRS
1943_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001944 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001945 (__v4sf) __B,
1946 (__v4sf) _mm_setzero_ps (),
1947 (__mmask8) __U,
1948 _MM_FROUND_CUR_DIRECTION);
1949}
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)_mm_setzero_ps(), \
1954 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
Craig Topper8c18e112016-05-17 04:41:50 +00001956#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1957 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1958 (__v4sf)(__m128)(B), \
1959 (__v4sf)(__m128)(W), (__mmask8)(U), \
1960 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001961
Craig Topper8c18e112016-05-17 04:41:50 +00001962#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1963 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1964 (__v4sf)(__m128)(B), \
1965 (__v4sf)_mm_setzero_ps(), \
1966 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001967
1968static __inline__ __m128d __DEFAULT_FN_ATTRS
1969_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001970 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001971 (__v2df) __B,
1972 (__v2df) __W,
1973 (__mmask8) __U,
1974 _MM_FROUND_CUR_DIRECTION);
1975}
1976
1977static __inline__ __m128d __DEFAULT_FN_ATTRS
1978_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001979 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001980 (__v2df) __B,
1981 (__v2df) _mm_setzero_pd (),
1982 (__mmask8) __U,
1983 _MM_FROUND_CUR_DIRECTION);
1984}
1985
Craig Topper8c18e112016-05-17 04:41:50 +00001986#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1987 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1988 (__v2df)(__m128d)(B), \
1989 (__v2df)_mm_setzero_pd(), \
1990 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001991
Craig Topper8c18e112016-05-17 04:41:50 +00001992#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1993 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1994 (__v2df)(__m128d)(B), \
1995 (__v2df)(__m128d)(W), \
1996 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001997
Craig Topper8c18e112016-05-17 04:41:50 +00001998#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1999 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2000 (__v2df)(__m128d)(B), \
2001 (__v2df)_mm_setzero_pd(), \
2002 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002003
Asaf Badouhffeb6242015-07-21 15:27:28 +00002004static __inline__ __m512d __DEFAULT_FN_ATTRS
2005_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2006 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2007 (__v8df) __B,
2008 (__v8df) __W,
2009 (__mmask8) __U,
2010 _MM_FROUND_CUR_DIRECTION);
2011}
2012
2013static __inline__ __m512d __DEFAULT_FN_ATTRS
2014_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2015 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2016 (__v8df) __B,
2017 (__v8df)
2018 _mm512_setzero_pd (),
2019 (__mmask8) __U,
2020 _MM_FROUND_CUR_DIRECTION);
2021}
2022
2023static __inline__ __m512 __DEFAULT_FN_ATTRS
2024_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2025 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2026 (__v16sf) __B,
2027 (__v16sf) __W,
2028 (__mmask16) __U,
2029 _MM_FROUND_CUR_DIRECTION);
2030}
2031
2032static __inline__ __m512 __DEFAULT_FN_ATTRS
2033_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2034 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2035 (__v16sf) __B,
2036 (__v16sf)
2037 _mm512_setzero_ps (),
2038 (__mmask16) __U,
2039 _MM_FROUND_CUR_DIRECTION);
2040}
2041
Craig Topper8c18e112016-05-17 04:41:50 +00002042#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2043 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2044 (__v8df)(__m512d)(B), \
2045 (__v8df)_mm512_setzero_pd(), \
2046 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002047
Craig Topper8c18e112016-05-17 04:41:50 +00002048#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2049 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2050 (__v8df)(__m512d)(B), \
2051 (__v8df)(__m512d)(W), (__mmask8)(U), \
2052 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002053
Craig Topper8c18e112016-05-17 04:41:50 +00002054#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2055 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2056 (__v8df)(__m512d)(B), \
2057 (__v8df)_mm512_setzero_pd(), \
2058 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002059
Craig Topper8c18e112016-05-17 04:41:50 +00002060#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2061 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2062 (__v16sf)(__m512)(B), \
2063 (__v16sf)_mm512_setzero_ps(), \
2064 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002065
Craig Topper8c18e112016-05-17 04:41:50 +00002066#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2067 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2068 (__v16sf)(__m512)(B), \
2069 (__v16sf)(__m512)(W), (__mmask16)(U), \
2070 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002071
Craig Topper8c18e112016-05-17 04:41:50 +00002072#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2073 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2074 (__v16sf)(__m512)(B), \
2075 (__v16sf)_mm512_setzero_ps(), \
2076 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002077
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002078static __inline__ __m128 __DEFAULT_FN_ATTRS
2079_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002080 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002081 (__v4sf) __B,
2082 (__v4sf) __W,
2083 (__mmask8) __U,
2084 _MM_FROUND_CUR_DIRECTION);
2085}
2086
2087static __inline__ __m128 __DEFAULT_FN_ATTRS
2088_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002089 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002090 (__v4sf) __B,
2091 (__v4sf) _mm_setzero_ps (),
2092 (__mmask8) __U,
2093 _MM_FROUND_CUR_DIRECTION);
2094}
Craig Topper8c18e112016-05-17 04:41:50 +00002095#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2096 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2097 (__v4sf)(__m128)(B), \
2098 (__v4sf)_mm_setzero_ps(), \
2099 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002100
Craig Topper8c18e112016-05-17 04:41:50 +00002101#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2102 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2103 (__v4sf)(__m128)(B), \
2104 (__v4sf)(__m128)(W), (__mmask8)(U), \
2105 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002106
Craig Topper8c18e112016-05-17 04:41:50 +00002107#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2108 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2109 (__v4sf)(__m128)(B), \
2110 (__v4sf)_mm_setzero_ps(), \
2111 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002112
2113static __inline__ __m128d __DEFAULT_FN_ATTRS
2114_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002115 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002116 (__v2df) __B,
2117 (__v2df) __W,
2118 (__mmask8) __U,
2119 _MM_FROUND_CUR_DIRECTION);
2120}
2121
2122static __inline__ __m128d __DEFAULT_FN_ATTRS
2123_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002124 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002125 (__v2df) __B,
2126 (__v2df) _mm_setzero_pd (),
2127 (__mmask8) __U,
2128 _MM_FROUND_CUR_DIRECTION);
2129}
2130
Craig Topper8c18e112016-05-17 04:41:50 +00002131#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2132 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2133 (__v2df)(__m128d)(B), \
2134 (__v2df)_mm_setzero_pd(), \
2135 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002136
Craig Topper8c18e112016-05-17 04:41:50 +00002137#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2138 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2139 (__v2df)(__m128d)(B), \
2140 (__v2df)(__m128d)(W), \
2141 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002142
Craig Topper8c18e112016-05-17 04:41:50 +00002143#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2144 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2145 (__v2df)(__m128d)(B), \
2146 (__v2df)_mm_setzero_pd(), \
2147 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002148
Asaf Badouhffeb6242015-07-21 15:27:28 +00002149static __inline__ __m512d __DEFAULT_FN_ATTRS
2150_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2151 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2152 (__v8df) __B,
2153 (__v8df) __W,
2154 (__mmask8) __U,
2155 _MM_FROUND_CUR_DIRECTION);
2156}
2157
2158static __inline__ __m512d __DEFAULT_FN_ATTRS
2159_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2160 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2161 (__v8df) __B,
2162 (__v8df)
2163 _mm512_setzero_pd (),
2164 (__mmask8) __U,
2165 _MM_FROUND_CUR_DIRECTION);
2166}
2167
2168static __inline__ __m512 __DEFAULT_FN_ATTRS
2169_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2170 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2171 (__v16sf) __B,
2172 (__v16sf) __W,
2173 (__mmask16) __U,
2174 _MM_FROUND_CUR_DIRECTION);
2175}
2176
2177static __inline__ __m512 __DEFAULT_FN_ATTRS
2178_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2179 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2180 (__v16sf) __B,
2181 (__v16sf)
2182 _mm512_setzero_ps (),
2183 (__mmask16) __U,
2184 _MM_FROUND_CUR_DIRECTION);
2185}
2186
Craig Topper8c18e112016-05-17 04:41:50 +00002187#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2188 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2189 (__v8df)(__m512d)(B), \
2190 (__v8df)_mm512_setzero_pd(), \
2191 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002192
Craig Topper8c18e112016-05-17 04:41:50 +00002193#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2194 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2195 (__v8df)(__m512d)(B), \
2196 (__v8df)(__m512d)(W), (__mmask8)(U), \
2197 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002198
Craig Topper8c18e112016-05-17 04:41:50 +00002199#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2200 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2201 (__v8df)(__m512d)(B), \
2202 (__v8df)_mm512_setzero_pd(), \
2203 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002204
Craig Topper8c18e112016-05-17 04:41:50 +00002205#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2206 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2207 (__v16sf)(__m512)(B), \
2208 (__v16sf)_mm512_setzero_ps(), \
2209 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002210
Craig Topper8c18e112016-05-17 04:41:50 +00002211#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2212 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2213 (__v16sf)(__m512)(B), \
2214 (__v16sf)(__m512)(W), (__mmask16)(U), \
2215 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002216
Craig Topper8c18e112016-05-17 04:41:50 +00002217#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2218 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2219 (__v16sf)(__m512)(B), \
2220 (__v16sf)_mm512_setzero_ps(), \
2221 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002222
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002223static __inline__ __m128 __DEFAULT_FN_ATTRS
2224_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002225 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002226 (__v4sf) __B,
2227 (__v4sf) __W,
2228 (__mmask8) __U,
2229 _MM_FROUND_CUR_DIRECTION);
2230}
2231
2232static __inline__ __m128 __DEFAULT_FN_ATTRS
2233_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002234 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002235 (__v4sf) __B,
2236 (__v4sf) _mm_setzero_ps (),
2237 (__mmask8) __U,
2238 _MM_FROUND_CUR_DIRECTION);
2239}
2240
Craig Topper8c18e112016-05-17 04:41:50 +00002241#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2242 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2243 (__v4sf)(__m128)(B), \
2244 (__v4sf)_mm_setzero_ps(), \
2245 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246
Craig Topper8c18e112016-05-17 04:41:50 +00002247#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2248 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2249 (__v4sf)(__m128)(B), \
2250 (__v4sf)(__m128)(W), (__mmask8)(U), \
2251 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002252
Craig Topper8c18e112016-05-17 04:41:50 +00002253#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2254 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2255 (__v4sf)(__m128)(B), \
2256 (__v4sf)_mm_setzero_ps(), \
2257 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002258
2259static __inline__ __m128d __DEFAULT_FN_ATTRS
2260_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002261 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002262 (__v2df) __B,
2263 (__v2df) __W,
2264 (__mmask8) __U,
2265 _MM_FROUND_CUR_DIRECTION);
2266}
2267
2268static __inline__ __m128d __DEFAULT_FN_ATTRS
2269_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002270 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002271 (__v2df) __B,
2272 (__v2df) _mm_setzero_pd (),
2273 (__mmask8) __U,
2274 _MM_FROUND_CUR_DIRECTION);
2275}
2276
Craig Topper8c18e112016-05-17 04:41:50 +00002277#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2278 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2279 (__v2df)(__m128d)(B), \
2280 (__v2df)_mm_setzero_pd(), \
2281 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002282
Craig Topper8c18e112016-05-17 04:41:50 +00002283#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2284 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2285 (__v2df)(__m128d)(B), \
2286 (__v2df)(__m128d)(W), \
2287 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002288
Craig Topper8c18e112016-05-17 04:41:50 +00002289#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2290 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2291 (__v2df)(__m128d)(B), \
2292 (__v2df)_mm_setzero_pd(), \
2293 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002294
Asaf Badouhffeb6242015-07-21 15:27:28 +00002295static __inline__ __m512d __DEFAULT_FN_ATTRS
2296_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2297 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2298 (__v8df) __B,
2299 (__v8df) __W,
2300 (__mmask8) __U,
2301 _MM_FROUND_CUR_DIRECTION);
2302}
2303
2304static __inline__ __m512d __DEFAULT_FN_ATTRS
2305_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2306 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2307 (__v8df) __B,
2308 (__v8df)
2309 _mm512_setzero_pd (),
2310 (__mmask8) __U,
2311 _MM_FROUND_CUR_DIRECTION);
2312}
2313
2314static __inline__ __m512 __DEFAULT_FN_ATTRS
2315_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2316 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2317 (__v16sf) __B,
2318 (__v16sf) __W,
2319 (__mmask16) __U,
2320 _MM_FROUND_CUR_DIRECTION);
2321}
2322
2323static __inline__ __m512 __DEFAULT_FN_ATTRS
2324_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2325 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2326 (__v16sf) __B,
2327 (__v16sf)
2328 _mm512_setzero_ps (),
2329 (__mmask16) __U,
2330 _MM_FROUND_CUR_DIRECTION);
2331}
2332
Craig Topper8c18e112016-05-17 04:41:50 +00002333#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2334 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2335 (__v8df)(__m512d)(B), \
2336 (__v8df)_mm512_setzero_pd(), \
2337 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002338
Craig Topper8c18e112016-05-17 04:41:50 +00002339#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2340 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2341 (__v8df)(__m512d)(B), \
2342 (__v8df)(__m512d)(W), (__mmask8)(U), \
2343 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002344
Craig Topper8c18e112016-05-17 04:41:50 +00002345#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2346 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2347 (__v8df)(__m512d)(B), \
2348 (__v8df)_mm512_setzero_pd(), \
2349 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002350
Craig Topper8c18e112016-05-17 04:41:50 +00002351#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2352 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2353 (__v16sf)(__m512)(B), \
2354 (__v16sf)_mm512_setzero_ps(), \
2355 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002356
Craig Topper8c18e112016-05-17 04:41:50 +00002357#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2358 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2359 (__v16sf)(__m512)(B), \
2360 (__v16sf)(__m512)(W), (__mmask16)(U), \
2361 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002362
Craig Topper8c18e112016-05-17 04:41:50 +00002363#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2364 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2365 (__v16sf)(__m512)(B), \
2366 (__v16sf)_mm512_setzero_ps(), \
2367 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002368
Craig Topper72c7d512015-02-01 07:35:35 +00002369#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002370 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2371 (__v16sf)(__m512)(A), (__mmask16)-1, \
2372 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002373
Craig Topper8c18e112016-05-17 04:41:50 +00002374#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2375 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2376 (__v16sf)(__m512)(A), (__mmask16)(B), \
2377 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002378
Craig Topper8c18e112016-05-17 04:41:50 +00002379#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2380 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2381 (__v16sf)_mm512_setzero_ps(), \
2382 (__mmask16)(A), \
2383 _MM_FROUND_CUR_DIRECTION); })
2384
Craig Topper72c7d512015-02-01 07:35:35 +00002385#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002386 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2387 (__v8df)(__m512d)(A), (__mmask8)-1, \
2388 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002389
Craig Topper8c18e112016-05-17 04:41:50 +00002390#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2391 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2392 (__v8df)(__m512d)(A), (__mmask8)(B), \
2393 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002394
Craig Topper8c18e112016-05-17 04:41:50 +00002395#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2396 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2397 (__v8df)_mm512_setzero_pd(), \
2398 (__mmask8)(A), \
2399 _MM_FROUND_CUR_DIRECTION); })
2400
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002401#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002402 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2403 (__v8df)(__m512d)(B), \
2404 (__v8df)(__m512d)(C), (__mmask8)-1, \
2405 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002406
2407
2408#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002409 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2410 (__v8df)(__m512d)(B), \
2411 (__v8df)(__m512d)(C), \
2412 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002413
2414
2415#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002416 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2417 (__v8df)(__m512d)(B), \
2418 (__v8df)(__m512d)(C), \
2419 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002420
2421
2422#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002423 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2424 (__v8df)(__m512d)(B), \
2425 (__v8df)(__m512d)(C), \
2426 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002427
2428
2429#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002430 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2431 (__v8df)(__m512d)(B), \
2432 -(__v8df)(__m512d)(C), \
2433 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002434
2435
2436#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002437 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2438 (__v8df)(__m512d)(B), \
2439 -(__v8df)(__m512d)(C), \
2440 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002441
2442
2443#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002444 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2445 (__v8df)(__m512d)(B), \
2446 -(__v8df)(__m512d)(C), \
2447 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002448
2449
2450#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002451 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2452 (__v8df)(__m512d)(B), \
2453 (__v8df)(__m512d)(C), (__mmask8)-1, \
2454 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002455
2456
2457#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002458 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2459 (__v8df)(__m512d)(B), \
2460 (__v8df)(__m512d)(C), \
2461 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002462
2463
2464#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002465 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2466 (__v8df)(__m512d)(B), \
2467 (__v8df)(__m512d)(C), \
2468 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002469
2470
2471#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002472 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2473 (__v8df)(__m512d)(B), \
2474 -(__v8df)(__m512d)(C), \
2475 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002476
2477
2478#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002479 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2480 (__v8df)(__m512d)(B), \
2481 -(__v8df)(__m512d)(C), \
2482 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002483
2484
Michael Kupersteine45af542015-06-30 13:36:19 +00002485static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002486_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2487{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002488 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2489 (__v8df) __B,
2490 (__v8df) __C,
2491 (__mmask8) -1,
2492 _MM_FROUND_CUR_DIRECTION);
2493}
2494
Michael Kupersteine45af542015-06-30 13:36:19 +00002495static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002496_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2497{
2498 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2499 (__v8df) __B,
2500 (__v8df) __C,
2501 (__mmask8) __U,
2502 _MM_FROUND_CUR_DIRECTION);
2503}
2504
Michael Kupersteine45af542015-06-30 13:36:19 +00002505static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002506_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2507{
2508 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2509 (__v8df) __B,
2510 (__v8df) __C,
2511 (__mmask8) __U,
2512 _MM_FROUND_CUR_DIRECTION);
2513}
2514
Michael Kupersteine45af542015-06-30 13:36:19 +00002515static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002516_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2517{
2518 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2519 (__v8df) __B,
2520 (__v8df) __C,
2521 (__mmask8) __U,
2522 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002523}
2524
Michael Kupersteine45af542015-06-30 13:36:19 +00002525static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002526_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2527{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002528 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2529 (__v8df) __B,
2530 -(__v8df) __C,
2531 (__mmask8) -1,
2532 _MM_FROUND_CUR_DIRECTION);
2533}
2534
Michael Kupersteine45af542015-06-30 13:36:19 +00002535static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002536_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2537{
2538 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2539 (__v8df) __B,
2540 -(__v8df) __C,
2541 (__mmask8) __U,
2542 _MM_FROUND_CUR_DIRECTION);
2543}
2544
Michael Kupersteine45af542015-06-30 13:36:19 +00002545static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002546_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2547{
2548 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2549 (__v8df) __B,
2550 -(__v8df) __C,
2551 (__mmask8) __U,
2552 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002553}
2554
Michael Kupersteine45af542015-06-30 13:36:19 +00002555static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002556_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2557{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002558 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2559 (__v8df) __B,
2560 (__v8df) __C,
2561 (__mmask8) -1,
2562 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002563}
2564
Michael Kupersteine45af542015-06-30 13:36:19 +00002565static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002566_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2567{
2568 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2569 (__v8df) __B,
2570 (__v8df) __C,
2571 (__mmask8) __U,
2572 _MM_FROUND_CUR_DIRECTION);
2573}
2574
Michael Kupersteine45af542015-06-30 13:36:19 +00002575static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002576_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2577{
2578 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2579 (__v8df) __B,
2580 (__v8df) __C,
2581 (__mmask8) __U,
2582 _MM_FROUND_CUR_DIRECTION);
2583}
2584
Michael Kupersteine45af542015-06-30 13:36:19 +00002585static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002586_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2587{
2588 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2589 (__v8df) __B,
2590 -(__v8df) __C,
2591 (__mmask8) -1,
2592 _MM_FROUND_CUR_DIRECTION);
2593}
2594
Michael Kupersteine45af542015-06-30 13:36:19 +00002595static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002596_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2597{
2598 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2599 (__v8df) __B,
2600 -(__v8df) __C,
2601 (__mmask8) __U,
2602 _MM_FROUND_CUR_DIRECTION);
2603}
2604
2605#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002606 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2607 (__v16sf)(__m512)(B), \
2608 (__v16sf)(__m512)(C), (__mmask16)-1, \
2609 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002610
2611
2612#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002613 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2614 (__v16sf)(__m512)(B), \
2615 (__v16sf)(__m512)(C), \
2616 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002617
2618
2619#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002620 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2621 (__v16sf)(__m512)(B), \
2622 (__v16sf)(__m512)(C), \
2623 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002624
2625
2626#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002627 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2628 (__v16sf)(__m512)(B), \
2629 (__v16sf)(__m512)(C), \
2630 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002631
2632
2633#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002634 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2635 (__v16sf)(__m512)(B), \
2636 -(__v16sf)(__m512)(C), \
2637 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002638
2639
2640#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002641 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2642 (__v16sf)(__m512)(B), \
2643 -(__v16sf)(__m512)(C), \
2644 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002645
2646
2647#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002648 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2649 (__v16sf)(__m512)(B), \
2650 -(__v16sf)(__m512)(C), \
2651 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002652
2653
2654#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002655 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2656 (__v16sf)(__m512)(B), \
2657 (__v16sf)(__m512)(C), (__mmask16)-1, \
2658 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002659
2660
2661#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002662 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2663 (__v16sf)(__m512)(B), \
2664 (__v16sf)(__m512)(C), \
2665 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002666
2667
2668#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002669 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2670 (__v16sf)(__m512)(B), \
2671 (__v16sf)(__m512)(C), \
2672 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002673
2674
2675#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002676 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2677 (__v16sf)(__m512)(B), \
2678 -(__v16sf)(__m512)(C), \
2679 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002680
2681
2682#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002683 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2684 (__v16sf)(__m512)(B), \
2685 -(__v16sf)(__m512)(C), \
2686 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002687
2688
Michael Kupersteine45af542015-06-30 13:36:19 +00002689static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002690_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2691{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002692 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2693 (__v16sf) __B,
2694 (__v16sf) __C,
2695 (__mmask16) -1,
2696 _MM_FROUND_CUR_DIRECTION);
2697}
2698
Michael Kupersteine45af542015-06-30 13:36:19 +00002699static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002700_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2701{
2702 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2703 (__v16sf) __B,
2704 (__v16sf) __C,
2705 (__mmask16) __U,
2706 _MM_FROUND_CUR_DIRECTION);
2707}
2708
Michael Kupersteine45af542015-06-30 13:36:19 +00002709static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002710_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2711{
2712 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2713 (__v16sf) __B,
2714 (__v16sf) __C,
2715 (__mmask16) __U,
2716 _MM_FROUND_CUR_DIRECTION);
2717}
2718
Michael Kupersteine45af542015-06-30 13:36:19 +00002719static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002720_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2721{
2722 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2723 (__v16sf) __B,
2724 (__v16sf) __C,
2725 (__mmask16) __U,
2726 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002727}
2728
Michael Kupersteine45af542015-06-30 13:36:19 +00002729static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002730_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2731{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002732 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2733 (__v16sf) __B,
2734 -(__v16sf) __C,
2735 (__mmask16) -1,
2736 _MM_FROUND_CUR_DIRECTION);
2737}
2738
Michael Kupersteine45af542015-06-30 13:36:19 +00002739static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002740_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2741{
2742 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2743 (__v16sf) __B,
2744 -(__v16sf) __C,
2745 (__mmask16) __U,
2746 _MM_FROUND_CUR_DIRECTION);
2747}
2748
Michael Kupersteine45af542015-06-30 13:36:19 +00002749static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002750_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2751{
2752 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2753 (__v16sf) __B,
2754 -(__v16sf) __C,
2755 (__mmask16) __U,
2756 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002757}
2758
Michael Kupersteine45af542015-06-30 13:36:19 +00002759static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002760_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2761{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002762 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2763 (__v16sf) __B,
2764 (__v16sf) __C,
2765 (__mmask16) -1,
2766 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002767}
2768
Michael Kupersteine45af542015-06-30 13:36:19 +00002769static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002770_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2771{
2772 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2773 (__v16sf) __B,
2774 (__v16sf) __C,
2775 (__mmask16) __U,
2776 _MM_FROUND_CUR_DIRECTION);
2777}
2778
Michael Kupersteine45af542015-06-30 13:36:19 +00002779static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002780_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2781{
2782 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2783 (__v16sf) __B,
2784 (__v16sf) __C,
2785 (__mmask16) __U,
2786 _MM_FROUND_CUR_DIRECTION);
2787}
2788
Michael Kupersteine45af542015-06-30 13:36:19 +00002789static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002790_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2791{
2792 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2793 (__v16sf) __B,
2794 -(__v16sf) __C,
2795 (__mmask16) -1,
2796 _MM_FROUND_CUR_DIRECTION);
2797}
2798
Michael Kupersteine45af542015-06-30 13:36:19 +00002799static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002800_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2801{
2802 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2803 (__v16sf) __B,
2804 -(__v16sf) __C,
2805 (__mmask16) __U,
2806 _MM_FROUND_CUR_DIRECTION);
2807}
2808
2809#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002810 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2811 (__v8df)(__m512d)(B), \
2812 (__v8df)(__m512d)(C), \
2813 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002814
2815
2816#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002817 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2818 (__v8df)(__m512d)(B), \
2819 (__v8df)(__m512d)(C), \
2820 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002821
2822
2823#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002824 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2825 (__v8df)(__m512d)(B), \
2826 (__v8df)(__m512d)(C), \
2827 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002828
2829
2830#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002831 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2832 (__v8df)(__m512d)(B), \
2833 (__v8df)(__m512d)(C), \
2834 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002835
2836
2837#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002838 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2839 (__v8df)(__m512d)(B), \
2840 -(__v8df)(__m512d)(C), \
2841 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002842
2843
2844#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002845 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2846 (__v8df)(__m512d)(B), \
2847 -(__v8df)(__m512d)(C), \
2848 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002849
2850
2851#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002852 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2853 (__v8df)(__m512d)(B), \
2854 -(__v8df)(__m512d)(C), \
2855 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002856
2857
Michael Kupersteine45af542015-06-30 13:36:19 +00002858static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002859_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2860{
2861 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2862 (__v8df) __B,
2863 (__v8df) __C,
2864 (__mmask8) -1,
2865 _MM_FROUND_CUR_DIRECTION);
2866}
2867
Michael Kupersteine45af542015-06-30 13:36:19 +00002868static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002869_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2870{
2871 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2872 (__v8df) __B,
2873 (__v8df) __C,
2874 (__mmask8) __U,
2875 _MM_FROUND_CUR_DIRECTION);
2876}
2877
Michael Kupersteine45af542015-06-30 13:36:19 +00002878static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002879_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2880{
2881 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2882 (__v8df) __B,
2883 (__v8df) __C,
2884 (__mmask8) __U,
2885 _MM_FROUND_CUR_DIRECTION);
2886}
2887
Michael Kupersteine45af542015-06-30 13:36:19 +00002888static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002889_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2890{
2891 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2892 (__v8df) __B,
2893 (__v8df) __C,
2894 (__mmask8) __U,
2895 _MM_FROUND_CUR_DIRECTION);
2896}
2897
Michael Kupersteine45af542015-06-30 13:36:19 +00002898static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002899_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2900{
2901 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2902 (__v8df) __B,
2903 -(__v8df) __C,
2904 (__mmask8) -1,
2905 _MM_FROUND_CUR_DIRECTION);
2906}
2907
Michael Kupersteine45af542015-06-30 13:36:19 +00002908static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002909_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2910{
2911 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2912 (__v8df) __B,
2913 -(__v8df) __C,
2914 (__mmask8) __U,
2915 _MM_FROUND_CUR_DIRECTION);
2916}
2917
Michael Kupersteine45af542015-06-30 13:36:19 +00002918static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002919_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2920{
2921 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2922 (__v8df) __B,
2923 -(__v8df) __C,
2924 (__mmask8) __U,
2925 _MM_FROUND_CUR_DIRECTION);
2926}
2927
2928#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002929 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2930 (__v16sf)(__m512)(B), \
2931 (__v16sf)(__m512)(C), \
2932 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002933
2934
2935#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002936 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2937 (__v16sf)(__m512)(B), \
2938 (__v16sf)(__m512)(C), \
2939 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002940
2941
2942#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002943 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2944 (__v16sf)(__m512)(B), \
2945 (__v16sf)(__m512)(C), \
2946 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002947
2948
2949#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002950 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2951 (__v16sf)(__m512)(B), \
2952 (__v16sf)(__m512)(C), \
2953 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002954
2955
2956#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002957 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2958 (__v16sf)(__m512)(B), \
2959 -(__v16sf)(__m512)(C), \
2960 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002961
2962
2963#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002964 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2965 (__v16sf)(__m512)(B), \
2966 -(__v16sf)(__m512)(C), \
2967 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002968
2969
2970#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002971 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2972 (__v16sf)(__m512)(B), \
2973 -(__v16sf)(__m512)(C), \
2974 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002975
2976
Michael Kupersteine45af542015-06-30 13:36:19 +00002977static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002978_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2979{
2980 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2981 (__v16sf) __B,
2982 (__v16sf) __C,
2983 (__mmask16) -1,
2984 _MM_FROUND_CUR_DIRECTION);
2985}
2986
Michael Kupersteine45af542015-06-30 13:36:19 +00002987static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002988_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2989{
2990 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2991 (__v16sf) __B,
2992 (__v16sf) __C,
2993 (__mmask16) __U,
2994 _MM_FROUND_CUR_DIRECTION);
2995}
2996
Michael Kupersteine45af542015-06-30 13:36:19 +00002997static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002998_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2999{
3000 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3001 (__v16sf) __B,
3002 (__v16sf) __C,
3003 (__mmask16) __U,
3004 _MM_FROUND_CUR_DIRECTION);
3005}
3006
Michael Kupersteine45af542015-06-30 13:36:19 +00003007static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003008_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3009{
3010 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3011 (__v16sf) __B,
3012 (__v16sf) __C,
3013 (__mmask16) __U,
3014 _MM_FROUND_CUR_DIRECTION);
3015}
3016
Michael Kupersteine45af542015-06-30 13:36:19 +00003017static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003018_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3019{
3020 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3021 (__v16sf) __B,
3022 -(__v16sf) __C,
3023 (__mmask16) -1,
3024 _MM_FROUND_CUR_DIRECTION);
3025}
3026
Michael Kupersteine45af542015-06-30 13:36:19 +00003027static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003028_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3029{
3030 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3031 (__v16sf) __B,
3032 -(__v16sf) __C,
3033 (__mmask16) __U,
3034 _MM_FROUND_CUR_DIRECTION);
3035}
3036
Michael Kupersteine45af542015-06-30 13:36:19 +00003037static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003038_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3039{
3040 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3041 (__v16sf) __B,
3042 -(__v16sf) __C,
3043 (__mmask16) __U,
3044 _MM_FROUND_CUR_DIRECTION);
3045}
3046
3047#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003048 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3049 (__v8df)(__m512d)(B), \
3050 (__v8df)(__m512d)(C), \
3051 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003052
3053
Michael Kupersteine45af542015-06-30 13:36:19 +00003054static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003055_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3056{
3057 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3058 (__v8df) __B,
3059 (__v8df) __C,
3060 (__mmask8) __U,
3061 _MM_FROUND_CUR_DIRECTION);
3062}
3063
3064#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003065 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3066 (__v16sf)(__m512)(B), \
3067 (__v16sf)(__m512)(C), \
3068 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003069
3070
Michael Kupersteine45af542015-06-30 13:36:19 +00003071static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003072_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3073{
3074 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3075 (__v16sf) __B,
3076 (__v16sf) __C,
3077 (__mmask16) __U,
3078 _MM_FROUND_CUR_DIRECTION);
3079}
3080
3081#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003082 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3083 (__v8df)(__m512d)(B), \
3084 (__v8df)(__m512d)(C), \
3085 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003086
3087
Michael Kupersteine45af542015-06-30 13:36:19 +00003088static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003089_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3090{
3091 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3092 (__v8df) __B,
3093 (__v8df) __C,
3094 (__mmask8) __U,
3095 _MM_FROUND_CUR_DIRECTION);
3096}
3097
3098#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003099 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3100 (__v16sf)(__m512)(B), \
3101 (__v16sf)(__m512)(C), \
3102 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003103
3104
Michael Kupersteine45af542015-06-30 13:36:19 +00003105static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003106_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3107{
3108 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3109 (__v16sf) __B,
3110 (__v16sf) __C,
3111 (__mmask16) __U,
3112 _MM_FROUND_CUR_DIRECTION);
3113}
3114
3115#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003116 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3117 (__v8df)(__m512d)(B), \
3118 (__v8df)(__m512d)(C), \
3119 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003120
3121
Michael Kupersteine45af542015-06-30 13:36:19 +00003122static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003123_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3124{
3125 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3126 (__v8df) __B,
3127 (__v8df) __C,
3128 (__mmask8) __U,
3129 _MM_FROUND_CUR_DIRECTION);
3130}
3131
3132#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003133 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3134 (__v16sf)(__m512)(B), \
3135 (__v16sf)(__m512)(C), \
3136 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003137
3138
Michael Kupersteine45af542015-06-30 13:36:19 +00003139static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003140_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3141{
3142 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3143 (__v16sf) __B,
3144 (__v16sf) __C,
3145 (__mmask16) __U,
3146 _MM_FROUND_CUR_DIRECTION);
3147}
3148
3149#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003150 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3151 (__v8df)(__m512d)(B), \
3152 (__v8df)(__m512d)(C), \
3153 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003154
3155
3156#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003157 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3158 (__v8df)(__m512d)(B), \
3159 (__v8df)(__m512d)(C), \
3160 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003161
3162
Michael Kupersteine45af542015-06-30 13:36:19 +00003163static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003164_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3165{
3166 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3167 (__v8df) __B,
3168 (__v8df) __C,
3169 (__mmask8) __U,
3170 _MM_FROUND_CUR_DIRECTION);
3171}
3172
Michael Kupersteine45af542015-06-30 13:36:19 +00003173static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003174_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3175{
3176 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3177 (__v8df) __B,
3178 (__v8df) __C,
3179 (__mmask8) __U,
3180 _MM_FROUND_CUR_DIRECTION);
3181}
3182
3183#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003184 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3185 (__v16sf)(__m512)(B), \
3186 (__v16sf)(__m512)(C), \
3187 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003188
3189
3190#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003191 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3192 (__v16sf)(__m512)(B), \
3193 (__v16sf)(__m512)(C), \
3194 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003195
3196
Michael Kupersteine45af542015-06-30 13:36:19 +00003197static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003198_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3199{
3200 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3201 (__v16sf) __B,
3202 (__v16sf) __C,
3203 (__mmask16) __U,
3204 _MM_FROUND_CUR_DIRECTION);
3205}
3206
Michael Kupersteine45af542015-06-30 13:36:19 +00003207static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003208_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3209{
3210 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3211 (__v16sf) __B,
3212 (__v16sf) __C,
3213 (__mmask16) __U,
3214 _MM_FROUND_CUR_DIRECTION);
3215}
3216
3217
3218
Adam Nemet0d5bb552014-07-28 17:14:40 +00003219/* Vector permutations */
3220
Michael Kupersteine45af542015-06-30 13:36:19 +00003221static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003222_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3223{
3224 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3225 /* idx */ ,
3226 (__v16si) __A,
3227 (__v16si) __B,
3228 (__mmask16) -1);
3229}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003230
3231static __inline__ __m512i __DEFAULT_FN_ATTRS
3232_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3233 __m512i __I, __m512i __B)
3234{
3235 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3236 /* idx */ ,
3237 (__v16si) __A,
3238 (__v16si) __B,
3239 (__mmask16) __U);
3240}
3241
3242static __inline__ __m512i __DEFAULT_FN_ATTRS
3243_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3244 __m512i __I, __m512i __B)
3245{
3246 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3247 /* idx */ ,
3248 (__v16si) __A,
3249 (__v16si) __B,
3250 (__mmask16) __U);
3251}
3252
Michael Kupersteine45af542015-06-30 13:36:19 +00003253static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003254_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3255{
3256 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3257 /* idx */ ,
3258 (__v8di) __A,
3259 (__v8di) __B,
3260 (__mmask8) -1);
3261}
3262
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003263static __inline__ __m512i __DEFAULT_FN_ATTRS
3264_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3265 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003266{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003267 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003268 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003269 (__v8di) __A,
3270 (__v8di) __B,
3271 (__mmask8) __U);
3272}
3273
3274
3275static __inline__ __m512i __DEFAULT_FN_ATTRS
3276_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3277 __m512i __I, __m512i __B)
3278{
3279 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3280 /* idx */ ,
3281 (__v8di) __A,
3282 (__v8di) __B,
3283 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003284}
3285
Craig Topper67826a52015-02-01 07:35:40 +00003286#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3287 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003288 (__v8di)(__m512i)(B), (int)(I), \
3289 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003290 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003291
Craig Topper8c18e112016-05-17 04:41:50 +00003292#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3293 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3294 (__v8di)(__m512i)(B), (int)(imm), \
3295 (__v8di)(__m512i)(W), \
3296 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003297
Craig Topper8c18e112016-05-17 04:41:50 +00003298#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3299 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3300 (__v8di)(__m512i)(B), (int)(imm), \
3301 (__v8di)_mm512_setzero_si512(), \
3302 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003303
Craig Topper67826a52015-02-01 07:35:40 +00003304#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003305 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3306 (__v16si)(__m512i)(B), (int)(I), \
3307 (__v16si)_mm512_setzero_si512(), \
3308 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003309
Craig Topper8c18e112016-05-17 04:41:50 +00003310#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3311 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3312 (__v16si)(__m512i)(B), (int)(imm), \
3313 (__v16si)(__m512i)(W), \
3314 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003315
Craig Topper8c18e112016-05-17 04:41:50 +00003316#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3317 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3318 (__v16si)(__m512i)(B), (int)(imm), \
3319 (__v16si)_mm512_setzero_si512(), \
3320 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003321/* Vector Extract */
3322
3323#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003324 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3325 (__v4df)_mm256_setzero_si256(), \
3326 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003327
Craig Topper8c18e112016-05-17 04:41:50 +00003328#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3329 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3330 (__v4df)(__m256d)(W), \
3331 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003332
Craig Topper8c18e112016-05-17 04:41:50 +00003333#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3334 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3335 (__v4df)_mm256_setzero_pd(), \
3336 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003337
Adam Nemetf893ede2015-01-19 20:12:05 +00003338#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003339 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3340 (__v4sf)_mm_setzero_ps(), \
3341 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003342
Craig Topper8c18e112016-05-17 04:41:50 +00003343#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3344 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3345 (__v4sf)(__m128)(W), \
3346 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003347
Craig Topper8c18e112016-05-17 04:41:50 +00003348#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3349 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3350 (__v4sf)_mm_setzero_ps(), \
3351 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003352/* Vector Blend */
3353
Michael Kupersteine45af542015-06-30 13:36:19 +00003354static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003355_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3356{
3357 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3358 (__v8df) __W,
3359 (__mmask8) __U);
3360}
3361
Michael Kupersteine45af542015-06-30 13:36:19 +00003362static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003363_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3364{
3365 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3366 (__v16sf) __W,
3367 (__mmask16) __U);
3368}
3369
Michael Kupersteine45af542015-06-30 13:36:19 +00003370static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003371_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3372{
3373 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3374 (__v8di) __W,
3375 (__mmask8) __U);
3376}
3377
Michael Kupersteine45af542015-06-30 13:36:19 +00003378static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003379_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3380{
3381 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3382 (__v16si) __W,
3383 (__mmask16) __U);
3384}
3385
3386/* Compare */
3387
Craig Topper53565c62015-02-01 22:27:40 +00003388#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3389 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003390 (__v16sf)(__m512)(B), (int)(P), \
3391 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003392
Craig Topper53565c62015-02-01 22:27:40 +00003393#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3394 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003395 (__v16sf)(__m512)(B), (int)(P), \
3396 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003397
3398#define _mm512_cmp_ps_mask(A, B, P) \
3399 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3400
3401#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3402 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3403
3404#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3405 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003406 (__v8df)(__m512d)(B), (int)(P), \
3407 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003408
3409#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3410 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003411 (__v8df)(__m512d)(B), (int)(P), \
3412 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003413
3414#define _mm512_cmp_pd_mask(A, B, P) \
3415 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3416
3417#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3418 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003419
3420/* Conversion */
3421
Michael Kupersteine45af542015-06-30 13:36:19 +00003422static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003423_mm512_cvttps_epu32(__m512 __A)
3424{
3425 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3426 (__v16si)
3427 _mm512_setzero_si512 (),
3428 (__mmask16) -1,
3429 _MM_FROUND_CUR_DIRECTION);
3430}
3431
Michael Zuckermanf1544752016-05-09 10:32:51 +00003432static __inline__ __m512i __DEFAULT_FN_ATTRS
3433_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3434{
3435 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3436 (__v16si) __W,
3437 (__mmask16) __U,
3438 _MM_FROUND_CUR_DIRECTION);
3439}
3440
3441static __inline__ __m512i __DEFAULT_FN_ATTRS
3442_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3443{
3444 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3445 (__v16si) _mm512_setzero_si512 (),
3446 (__mmask16) __U,
3447 _MM_FROUND_CUR_DIRECTION);
3448}
3449
Craig Topper72c7d512015-02-01 07:35:35 +00003450#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003451 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003452 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003453 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003454
Craig Topper72c7d512015-02-01 07:35:35 +00003455#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003456 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003457 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003458 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003459
Michael Zuckermanf1544752016-05-09 10:32:51 +00003460static __inline__ __m512 __DEFAULT_FN_ATTRS
3461_mm512_cvtepu32_ps (__m512i __A)
3462{
3463 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3464 (__v16sf) _mm512_undefined_ps (),
3465 (__mmask16) -1,
3466 _MM_FROUND_CUR_DIRECTION);
3467}
3468
3469static __inline__ __m512 __DEFAULT_FN_ATTRS
3470_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3471{
3472 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3473 (__v16sf) __W,
3474 (__mmask16) __U,
3475 _MM_FROUND_CUR_DIRECTION);
3476}
3477
3478static __inline__ __m512 __DEFAULT_FN_ATTRS
3479_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3480{
3481 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3482 (__v16sf) _mm512_setzero_ps (),
3483 (__mmask16) __U,
3484 _MM_FROUND_CUR_DIRECTION);
3485}
3486
Michael Kupersteine45af542015-06-30 13:36:19 +00003487static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003488_mm512_cvtepi32_pd(__m256i __A)
3489{
3490 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003491 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003492 _mm512_setzero_pd (),
3493 (__mmask8) -1);
3494}
3495
Michael Zuckermanf1544752016-05-09 10:32:51 +00003496static __inline__ __m512d __DEFAULT_FN_ATTRS
3497_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3498{
3499 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3500 (__v8df) __W,
3501 (__mmask8) __U);
3502}
3503
3504static __inline__ __m512d __DEFAULT_FN_ATTRS
3505_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3506{
3507 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3508 (__v8df) _mm512_setzero_pd (),
3509 (__mmask8) __U);
3510}
3511
3512static __inline__ __m512 __DEFAULT_FN_ATTRS
3513_mm512_cvtepi32_ps (__m512i __A)
3514{
3515 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3516 (__v16sf) _mm512_undefined_ps (),
3517 (__mmask16) -1,
3518 _MM_FROUND_CUR_DIRECTION);
3519}
3520
3521static __inline__ __m512 __DEFAULT_FN_ATTRS
3522_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3523{
3524 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3525 (__v16sf) __W,
3526 (__mmask16) __U,
3527 _MM_FROUND_CUR_DIRECTION);
3528}
3529
3530static __inline__ __m512 __DEFAULT_FN_ATTRS
3531_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3532{
3533 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3534 (__v16sf) _mm512_setzero_ps (),
3535 (__mmask16) __U,
3536 _MM_FROUND_CUR_DIRECTION);
3537}
3538
Michael Kupersteine45af542015-06-30 13:36:19 +00003539static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003540_mm512_cvtepu32_pd(__m256i __A)
3541{
3542 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3543 (__v8df)
3544 _mm512_setzero_pd (),
3545 (__mmask8) -1);
3546}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003547
Michael Zuckermanf1544752016-05-09 10:32:51 +00003548static __inline__ __m512d __DEFAULT_FN_ATTRS
3549_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3550{
3551 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3552 (__v8df) __W,
3553 (__mmask8) __U);
3554}
3555
3556static __inline__ __m512d __DEFAULT_FN_ATTRS
3557_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3558{
3559 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3560 (__v8df) _mm512_setzero_pd (),
3561 (__mmask8) __U);
3562}
3563
Craig Topper72c7d512015-02-01 07:35:35 +00003564#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003565 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003566 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003567 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003568
Michael Zuckermanf1544752016-05-09 10:32:51 +00003569static __inline__ __m256 __DEFAULT_FN_ATTRS
3570_mm512_cvtpd_ps (__m512d __A)
3571{
3572 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3573 (__v8sf) _mm256_undefined_ps (),
3574 (__mmask8) -1,
3575 _MM_FROUND_CUR_DIRECTION);
3576}
3577
3578static __inline__ __m256 __DEFAULT_FN_ATTRS
3579_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3580{
3581 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3582 (__v8sf) __W,
3583 (__mmask8) __U,
3584 _MM_FROUND_CUR_DIRECTION);
3585}
3586
3587static __inline__ __m256 __DEFAULT_FN_ATTRS
3588_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3589{
3590 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3591 (__v8sf) _mm256_setzero_ps (),
3592 (__mmask8) __U,
3593 _MM_FROUND_CUR_DIRECTION);
3594}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003595
Craig Topper72c7d512015-02-01 07:35:35 +00003596#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003597 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003598 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003599 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003600
Craig Topper8c18e112016-05-17 04:41:50 +00003601#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3602 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3603 (__v16hi)(__m256i)(U), \
3604 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003605
Craig Topper8c18e112016-05-17 04:41:50 +00003606#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3607 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3608 (__v16hi)_mm256_setzero_si256(), \
3609 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003610
3611
Michael Kupersteine45af542015-06-30 13:36:19 +00003612static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003613_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003614{
3615 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003616 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003617 _mm512_setzero_ps (),
3618 (__mmask16) -1,
3619 _MM_FROUND_CUR_DIRECTION);
3620}
3621
Michael Zuckermanf1544752016-05-09 10:32:51 +00003622static __inline__ __m512 __DEFAULT_FN_ATTRS
3623_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003624{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003625 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3626 (__v16sf) __W,
3627 (__mmask16) __U,
3628 _MM_FROUND_CUR_DIRECTION);
3629}
3630
3631static __inline__ __m512 __DEFAULT_FN_ATTRS
3632_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3633{
3634 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3635 (__v16sf) _mm512_setzero_ps (),
3636 (__mmask16) __U,
3637 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003638}
3639
Michael Kupersteine45af542015-06-30 13:36:19 +00003640static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003641_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003642{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003643 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003644 (__v8si)_mm256_setzero_si256(),
3645 (__mmask8) -1,
3646 _MM_FROUND_CUR_DIRECTION);
3647}
3648
Michael Zuckermanf1544752016-05-09 10:32:51 +00003649static __inline__ __m256i __DEFAULT_FN_ATTRS
3650_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3651{
3652 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3653 (__v8si) __W,
3654 (__mmask8) __U,
3655 _MM_FROUND_CUR_DIRECTION);
3656}
3657
3658static __inline__ __m256i __DEFAULT_FN_ATTRS
3659_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3660{
3661 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3662 (__v8si) _mm256_setzero_si256 (),
3663 (__mmask8) __U,
3664 _MM_FROUND_CUR_DIRECTION);
3665}
3666
Craig Topper72c7d512015-02-01 07:35:35 +00003667#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003668 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003669 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003670 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003671
Craig Topper72c7d512015-02-01 07:35:35 +00003672#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003673 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003674 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003675 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003676
Michael Zuckermanf1544752016-05-09 10:32:51 +00003677static __inline __m512i __DEFAULT_FN_ATTRS
3678_mm512_cvttps_epi32(__m512 __a)
3679{
3680 return (__m512i)
3681 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3682 (__v16si) _mm512_setzero_si512 (),
3683 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3684}
3685
3686static __inline__ __m512i __DEFAULT_FN_ATTRS
3687_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3688{
3689 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3690 (__v16si) __W,
3691 (__mmask16) __U,
3692 _MM_FROUND_CUR_DIRECTION);
3693}
3694
3695static __inline__ __m512i __DEFAULT_FN_ATTRS
3696_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3697{
3698 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3699 (__v16si) _mm512_setzero_si512 (),
3700 (__mmask16) __U,
3701 _MM_FROUND_CUR_DIRECTION);
3702}
Craig Topper72c7d512015-02-01 07:35:35 +00003703
3704#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003705 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003706 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003707 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003708
Michael Zuckermanf1544752016-05-09 10:32:51 +00003709static __inline__ __m512i __DEFAULT_FN_ATTRS
3710_mm512_cvtps_epi32 (__m512 __A)
3711{
3712 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3713 (__v16si) _mm512_undefined_epi32 (),
3714 (__mmask16) -1,
3715 _MM_FROUND_CUR_DIRECTION);
3716}
3717
3718static __inline__ __m512i __DEFAULT_FN_ATTRS
3719_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3720{
3721 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3722 (__v16si) __W,
3723 (__mmask16) __U,
3724 _MM_FROUND_CUR_DIRECTION);
3725}
3726
3727static __inline__ __m512i __DEFAULT_FN_ATTRS
3728_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3729{
3730 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3731 (__v16si)
3732 _mm512_setzero_si512 (),
3733 (__mmask16) __U,
3734 _MM_FROUND_CUR_DIRECTION);
3735}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003736
Craig Topper72c7d512015-02-01 07:35:35 +00003737#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003738 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003739 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003740 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003741
Michael Zuckermanf1544752016-05-09 10:32:51 +00003742static __inline__ __m256i __DEFAULT_FN_ATTRS
3743_mm512_cvtpd_epi32 (__m512d __A)
3744{
3745 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3746 (__v8si)
3747 _mm256_undefined_si256 (),
3748 (__mmask8) -1,
3749 _MM_FROUND_CUR_DIRECTION);
3750}
3751
3752static __inline__ __m256i __DEFAULT_FN_ATTRS
3753_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3754{
3755 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3756 (__v8si) __W,
3757 (__mmask8) __U,
3758 _MM_FROUND_CUR_DIRECTION);
3759}
3760
3761static __inline__ __m256i __DEFAULT_FN_ATTRS
3762_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3763{
3764 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3765 (__v8si)
3766 _mm256_setzero_si256 (),
3767 (__mmask8) __U,
3768 _MM_FROUND_CUR_DIRECTION);
3769}
3770
Craig Topper72c7d512015-02-01 07:35:35 +00003771#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003772 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003773 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003774 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003775
Michael Zuckermanf1544752016-05-09 10:32:51 +00003776static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003777_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00003778{
3779 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3780 (__v16si)\
3781 _mm512_undefined_epi32 (),\
3782 (__mmask16) -1,\
3783 _MM_FROUND_CUR_DIRECTION);\
3784}
3785
3786static __inline__ __m512i __DEFAULT_FN_ATTRS
3787_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3788{
3789 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3790 (__v16si) __W,
3791 (__mmask16) __U,
3792 _MM_FROUND_CUR_DIRECTION);
3793}
3794
Michael Zuckerman9fcf3552016-05-30 13:22:12 +00003795static __inline__ __m512i __DEFAULT_FN_ATTRS
3796_mm512_maskz_cvtps_epu32 ( __mmask16 __U, __m512 __A)
3797{
3798 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3799 (__v16si)
3800 _mm512_setzero_si512 (),
3801 (__mmask16) __U ,
3802 _MM_FROUND_CUR_DIRECTION);
3803}
3804
Craig Topper72c7d512015-02-01 07:35:35 +00003805#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003806 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003807 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003808 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003809
Michael Zuckermanf1544752016-05-09 10:32:51 +00003810static __inline__ __m256i __DEFAULT_FN_ATTRS
3811_mm512_cvtpd_epu32 (__m512d __A)
3812{
3813 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3814 (__v8si)
3815 _mm256_undefined_si256 (),
3816 (__mmask8) -1,
3817 _MM_FROUND_CUR_DIRECTION);
3818}
3819
3820static __inline__ __m256i __DEFAULT_FN_ATTRS
3821_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3822{
3823 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3824 (__v8si) __W,
3825 (__mmask8) __U,
3826 _MM_FROUND_CUR_DIRECTION);
3827}
3828
3829static __inline__ __m256i __DEFAULT_FN_ATTRS
3830_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3831{
3832 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3833 (__v8si)
3834 _mm256_setzero_si256 (),
3835 (__mmask8) __U,
3836 _MM_FROUND_CUR_DIRECTION);
3837}
Adam Nemet63a951e2015-01-14 01:31:17 +00003838/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003839static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003840_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3841{
3842 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3843}
3844
Michael Kupersteine45af542015-06-30 13:36:19 +00003845static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003846_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3847{
3848 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3849}
3850
Michael Kupersteine45af542015-06-30 13:36:19 +00003851static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003852_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3853{
3854 return __builtin_shufflevector(__a, __b,
3855 2, 18, 3, 19,
3856 2+4, 18+4, 3+4, 19+4,
3857 2+8, 18+8, 3+8, 19+8,
3858 2+12, 18+12, 3+12, 19+12);
3859}
3860
Michael Kupersteine45af542015-06-30 13:36:19 +00003861static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003862_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3863{
3864 return __builtin_shufflevector(__a, __b,
3865 0, 16, 1, 17,
3866 0+4, 16+4, 1+4, 17+4,
3867 0+8, 16+8, 1+8, 17+8,
3868 0+12, 16+12, 1+12, 17+12);
3869}
3870
Adam Nemet0d5bb552014-07-28 17:14:40 +00003871/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003872
Michael Kupersteine45af542015-06-30 13:36:19 +00003873static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003874_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003875{
3876 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3877 (__v16si) __B,
3878 (__mmask16) -1);
3879}
3880
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003881static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3882_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3883{
3884 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3885 (__v16si) __B, __U);
3886}
3887
Michael Kupersteine45af542015-06-30 13:36:19 +00003888static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003889_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003890{
3891 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3892 (__v8di) __B,
3893 (__mmask8) -1);
3894}
3895
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003896static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3897_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3898{
3899 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
3900}
3901
3902
Adam Nemet0d5bb552014-07-28 17:14:40 +00003903/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003904
Michael Kupersteine45af542015-06-30 13:36:19 +00003905static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003906_mm512_loadu_si512 (void const *__P)
3907{
Craig Topper4537ea72016-05-14 06:03:13 +00003908 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003909 (__v16si)
3910 _mm512_setzero_si512 (),
3911 (__mmask16) -1);
3912}
3913
3914static __inline __m512i __DEFAULT_FN_ATTRS
3915_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3916{
Craig Topper4537ea72016-05-14 06:03:13 +00003917 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003918 (__v16si) __W,
3919 (__mmask16) __U);
3920}
3921
3922
3923static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003924_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003925{
Craig Topper4537ea72016-05-14 06:03:13 +00003926 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003927 (__v16si)
3928 _mm512_setzero_si512 (),
3929 (__mmask16) __U);
3930}
3931
Michael Kupersteine45af542015-06-30 13:36:19 +00003932static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003933_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3934{
Craig Topper4537ea72016-05-14 06:03:13 +00003935 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003936 (__v8di) __W,
3937 (__mmask8) __U);
3938}
3939
3940static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003941_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003942{
Craig Topper4537ea72016-05-14 06:03:13 +00003943 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003944 (__v8di)
3945 _mm512_setzero_si512 (),
3946 (__mmask8) __U);
3947}
3948
Michael Kupersteine45af542015-06-30 13:36:19 +00003949static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003950_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
3951{
Craig Topper4537ea72016-05-14 06:03:13 +00003952 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003953 (__v16sf) __W,
3954 (__mmask16) __U);
3955}
3956
3957static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003958_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003959{
Craig Topper4537ea72016-05-14 06:03:13 +00003960 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003961 (__v16sf)
3962 _mm512_setzero_ps (),
3963 (__mmask16) __U);
3964}
3965
Michael Kupersteine45af542015-06-30 13:36:19 +00003966static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003967_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003968{
Craig Topper4537ea72016-05-14 06:03:13 +00003969 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003970 (__v8df) __W,
3971 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00003972}
3973
Michael Kupersteine45af542015-06-30 13:36:19 +00003974static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003975_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00003976{
Craig Topper4537ea72016-05-14 06:03:13 +00003977 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00003978 (__v8df)
3979 _mm512_setzero_pd (),
3980 (__mmask8) __U);
3981}
3982
Michael Kupersteine45af542015-06-30 13:36:19 +00003983static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003984_mm512_loadu_pd(double const *__p)
3985{
3986 struct __loadu_pd {
3987 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003988 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003989 return ((struct __loadu_pd*)__p)->__v;
3990}
3991
Michael Kupersteine45af542015-06-30 13:36:19 +00003992static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003993_mm512_loadu_ps(float const *__p)
3994{
3995 struct __loadu_ps {
3996 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003997 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003998 return ((struct __loadu_ps*)__p)->__v;
3999}
4000
Michael Kupersteine45af542015-06-30 13:36:19 +00004001static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004002_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004003{
4004 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
4005 (__v16sf)
4006 _mm512_setzero_ps (),
4007 (__mmask16) -1);
4008}
4009
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004010static __inline __m512 __DEFAULT_FN_ATTRS
4011_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4012{
4013 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4014 (__v16sf) __W,
4015 (__mmask16) __U);
4016}
4017
4018static __inline __m512 __DEFAULT_FN_ATTRS
4019_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4020{
4021 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4022 (__v16sf)
4023 _mm512_setzero_ps (),
4024 (__mmask16) __U);
4025}
4026
Michael Kupersteine45af542015-06-30 13:36:19 +00004027static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004028_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004029{
4030 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4031 (__v8df)
4032 _mm512_setzero_pd (),
4033 (__mmask8) -1);
4034}
4035
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004036static __inline __m512d __DEFAULT_FN_ATTRS
4037_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4038{
4039 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4040 (__v8df) __W,
4041 (__mmask8) __U);
4042}
4043
4044static __inline __m512d __DEFAULT_FN_ATTRS
4045_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4046{
4047 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4048 (__v8df)
4049 _mm512_setzero_pd (),
4050 (__mmask8) __U);
4051}
4052
4053static __inline __m512i __DEFAULT_FN_ATTRS
4054_mm512_load_si512 (void const *__P)
4055{
4056 return *(__m512i *) __P;
4057}
4058
4059static __inline __m512i __DEFAULT_FN_ATTRS
4060_mm512_load_epi32 (void const *__P)
4061{
4062 return *(__m512i *) __P;
4063}
4064
4065static __inline __m512i __DEFAULT_FN_ATTRS
4066_mm512_load_epi64 (void const *__P)
4067{
4068 return *(__m512i *) __P;
4069}
4070
Adam Nemet0d5bb552014-07-28 17:14:40 +00004071/* SIMD store ops */
4072
Michael Kupersteine45af542015-06-30 13:36:19 +00004073static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004074_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004075{
Craig Topper4537ea72016-05-14 06:03:13 +00004076 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004077 (__mmask8) __U);
4078}
4079
Michael Kupersteine45af542015-06-30 13:36:19 +00004080static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004081_mm512_storeu_si512 (void *__P, __m512i __A)
4082{
Craig Topper4537ea72016-05-14 06:03:13 +00004083 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004084 (__mmask16) -1);
4085}
4086
4087static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004088_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004089{
Craig Topper4537ea72016-05-14 06:03:13 +00004090 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004091 (__mmask16) __U);
4092}
4093
Michael Kupersteine45af542015-06-30 13:36:19 +00004094static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004095_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004096{
Craig Topper4537ea72016-05-14 06:03:13 +00004097 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004098}
4099
Michael Kupersteine45af542015-06-30 13:36:19 +00004100static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004101_mm512_storeu_pd(void *__P, __m512d __A)
4102{
Craig Topper4537ea72016-05-14 06:03:13 +00004103 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004104}
4105
Michael Kupersteine45af542015-06-30 13:36:19 +00004106static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004107_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004108{
Craig Topper4537ea72016-05-14 06:03:13 +00004109 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004110 (__mmask16) __U);
4111}
4112
Michael Kupersteine45af542015-06-30 13:36:19 +00004113static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004114_mm512_storeu_ps(void *__P, __m512 __A)
4115{
Craig Topper4537ea72016-05-14 06:03:13 +00004116 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004117}
4118
Michael Kupersteine45af542015-06-30 13:36:19 +00004119static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004120_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004121{
Adam Nemetc0cff242015-01-16 18:51:50 +00004122 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004123}
4124
Michael Kupersteine45af542015-06-30 13:36:19 +00004125static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004126_mm512_store_pd(void *__P, __m512d __A)
4127{
4128 *(__m512d*)__P = __A;
4129}
4130
Michael Kupersteine45af542015-06-30 13:36:19 +00004131static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004132_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4133{
4134 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4135 (__mmask16) __U);
4136}
4137
Michael Kupersteine45af542015-06-30 13:36:19 +00004138static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004139_mm512_store_ps(void *__P, __m512 __A)
4140{
4141 *(__m512*)__P = __A;
4142}
4143
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004144static __inline void __DEFAULT_FN_ATTRS
4145_mm512_store_si512 (void *__P, __m512i __A)
4146{
4147 *(__m512i *) __P = __A;
4148}
4149
4150static __inline void __DEFAULT_FN_ATTRS
4151_mm512_store_epi32 (void *__P, __m512i __A)
4152{
4153 *(__m512i *) __P = __A;
4154}
4155
4156static __inline void __DEFAULT_FN_ATTRS
4157_mm512_store_epi64 (void *__P, __m512i __A)
4158{
4159 *(__m512i *) __P = __A;
4160}
4161
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004162/* Mask ops */
4163
Michael Kupersteine45af542015-06-30 13:36:19 +00004164static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004165_mm512_knot(__mmask16 __M)
4166{
4167 return __builtin_ia32_knothi(__M);
4168}
4169
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004170/* Integer compare */
4171
Michael Kupersteine45af542015-06-30 13:36:19 +00004172static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004173_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4174 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4175 (__mmask16)-1);
4176}
4177
Michael Kupersteine45af542015-06-30 13:36:19 +00004178static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004179_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4180 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4181 __u);
4182}
4183
Michael Kupersteine45af542015-06-30 13:36:19 +00004184static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004185_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4186 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4187 (__mmask16)-1);
4188}
4189
Michael Kupersteine45af542015-06-30 13:36:19 +00004190static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004191_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4192 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4193 __u);
4194}
4195
Michael Kupersteine45af542015-06-30 13:36:19 +00004196static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004197_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4198 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4199 __u);
4200}
4201
Michael Kupersteine45af542015-06-30 13:36:19 +00004202static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004203_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4204 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4205 (__mmask8)-1);
4206}
4207
Michael Kupersteine45af542015-06-30 13:36:19 +00004208static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004209_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4210 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4211 (__mmask8)-1);
4212}
4213
Michael Kupersteine45af542015-06-30 13:36:19 +00004214static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004215_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4216 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4217 __u);
4218}
4219
Michael Kupersteine45af542015-06-30 13:36:19 +00004220static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004221_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4222 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4223 (__mmask16)-1);
4224}
4225
Michael Kupersteine45af542015-06-30 13:36:19 +00004226static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004227_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4228 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4229 __u);
4230}
4231
Michael Kupersteine45af542015-06-30 13:36:19 +00004232static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004233_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4234 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4235 (__mmask16)-1);
4236}
4237
Michael Kupersteine45af542015-06-30 13:36:19 +00004238static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004239_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4240 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4241 __u);
4242}
4243
Michael Kupersteine45af542015-06-30 13:36:19 +00004244static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004245_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4246 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4247 (__mmask8)-1);
4248}
4249
Michael Kupersteine45af542015-06-30 13:36:19 +00004250static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004251_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4252 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4253 __u);
4254}
4255
Michael Kupersteine45af542015-06-30 13:36:19 +00004256static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004257_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4258 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4259 (__mmask8)-1);
4260}
4261
Michael Kupersteine45af542015-06-30 13:36:19 +00004262static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004263_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4264 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4265 __u);
4266}
4267
Michael Kupersteine45af542015-06-30 13:36:19 +00004268static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004269_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4270 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4271 (__mmask16)-1);
4272}
4273
Michael Kupersteine45af542015-06-30 13:36:19 +00004274static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004275_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4276 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4277 __u);
4278}
4279
Michael Kupersteine45af542015-06-30 13:36:19 +00004280static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004281_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4282 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4283 (__mmask16)-1);
4284}
4285
Michael Kupersteine45af542015-06-30 13:36:19 +00004286static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004287_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4288 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4289 __u);
4290}
4291
Michael Kupersteine45af542015-06-30 13:36:19 +00004292static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004293_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4294 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4295 __u);
4296}
4297
Michael Kupersteine45af542015-06-30 13:36:19 +00004298static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004299_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4300 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4301 (__mmask8)-1);
4302}
4303
Michael Kupersteine45af542015-06-30 13:36:19 +00004304static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004305_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4306 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4307 (__mmask8)-1);
4308}
4309
Michael Kupersteine45af542015-06-30 13:36:19 +00004310static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004311_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4312 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4313 __u);
4314}
4315
Michael Kupersteine45af542015-06-30 13:36:19 +00004316static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004317_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4318 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4319 (__mmask16)-1);
4320}
4321
Michael Kupersteine45af542015-06-30 13:36:19 +00004322static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004323_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4324 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4325 __u);
4326}
4327
Michael Kupersteine45af542015-06-30 13:36:19 +00004328static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004329_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4330 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4331 (__mmask16)-1);
4332}
4333
Michael Kupersteine45af542015-06-30 13:36:19 +00004334static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004335_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4336 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4337 __u);
4338}
4339
Michael Kupersteine45af542015-06-30 13:36:19 +00004340static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004341_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4342 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
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_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4348 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4349 __u);
4350}
4351
Michael Kupersteine45af542015-06-30 13:36:19 +00004352static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004353_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4354 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4355 (__mmask8)-1);
4356}
4357
Michael Kupersteine45af542015-06-30 13:36:19 +00004358static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004359_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4360 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4361 __u);
4362}
4363
Michael Kupersteine45af542015-06-30 13:36:19 +00004364static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004365_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4366 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4367 (__mmask16)-1);
4368}
4369
Michael Kupersteine45af542015-06-30 13:36:19 +00004370static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004371_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4372 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4373 __u);
4374}
4375
Michael Kupersteine45af542015-06-30 13:36:19 +00004376static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004377_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4378 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4379 (__mmask16)-1);
4380}
4381
Michael Kupersteine45af542015-06-30 13:36:19 +00004382static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004383_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4384 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4385 __u);
4386}
4387
Michael Kupersteine45af542015-06-30 13:36:19 +00004388static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004389_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4390 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4391 (__mmask8)-1);
4392}
4393
Michael Kupersteine45af542015-06-30 13:36:19 +00004394static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004395_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4396 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4397 __u);
4398}
4399
Michael Kupersteine45af542015-06-30 13:36:19 +00004400static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004401_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4402 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4403 (__mmask8)-1);
4404}
4405
Michael Kupersteine45af542015-06-30 13:36:19 +00004406static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004407_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4408 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4409 __u);
4410}
4411
Michael Kupersteine45af542015-06-30 13:36:19 +00004412static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004413_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4414 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4415 (__mmask16)-1);
4416}
4417
Michael Kupersteine45af542015-06-30 13:36:19 +00004418static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004419_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4420 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4421 __u);
4422}
4423
Michael Kupersteine45af542015-06-30 13:36:19 +00004424static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004425_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4426 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4427 (__mmask16)-1);
4428}
4429
Michael Kupersteine45af542015-06-30 13:36:19 +00004430static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004431_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4432 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
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_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4438 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
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_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4444 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4445 __u);
4446}
4447
Michael Kupersteine45af542015-06-30 13:36:19 +00004448static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004449_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4450 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4451 (__mmask8)-1);
4452}
4453
Michael Kupersteine45af542015-06-30 13:36:19 +00004454static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004455_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4456 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4457 __u);
4458}
4459
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004460static __inline__ __m512i __DEFAULT_FN_ATTRS
4461_mm512_cvtepi8_epi32 (__m128i __A)
4462{
4463 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4464 (__v16si)
4465 _mm512_setzero_si512 (),
4466 (__mmask16) -1);
4467}
4468
4469static __inline__ __m512i __DEFAULT_FN_ATTRS
4470_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4471{
4472 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4473 (__v16si) __W,
4474 (__mmask16) __U);
4475}
4476
4477static __inline__ __m512i __DEFAULT_FN_ATTRS
4478_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4479{
4480 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4481 (__v16si)
4482 _mm512_setzero_si512 (),
4483 (__mmask16) __U);
4484}
4485
4486static __inline__ __m512i __DEFAULT_FN_ATTRS
4487_mm512_cvtepi8_epi64 (__m128i __A)
4488{
4489 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4490 (__v8di)
4491 _mm512_setzero_si512 (),
4492 (__mmask8) -1);
4493}
4494
4495static __inline__ __m512i __DEFAULT_FN_ATTRS
4496_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4497{
4498 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4499 (__v8di) __W,
4500 (__mmask8) __U);
4501}
4502
4503static __inline__ __m512i __DEFAULT_FN_ATTRS
4504_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4505{
4506 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4507 (__v8di)
4508 _mm512_setzero_si512 (),
4509 (__mmask8) __U);
4510}
4511
4512static __inline__ __m512i __DEFAULT_FN_ATTRS
4513_mm512_cvtepi32_epi64 (__m256i __X)
4514{
4515 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4516 (__v8di)
4517 _mm512_setzero_si512 (),
4518 (__mmask8) -1);
4519}
4520
4521static __inline__ __m512i __DEFAULT_FN_ATTRS
4522_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4523{
4524 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4525 (__v8di) __W,
4526 (__mmask8) __U);
4527}
4528
4529static __inline__ __m512i __DEFAULT_FN_ATTRS
4530_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4531{
4532 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4533 (__v8di)
4534 _mm512_setzero_si512 (),
4535 (__mmask8) __U);
4536}
4537
4538static __inline__ __m512i __DEFAULT_FN_ATTRS
4539_mm512_cvtepi16_epi32 (__m256i __A)
4540{
4541 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4542 (__v16si)
4543 _mm512_setzero_si512 (),
4544 (__mmask16) -1);
4545}
4546
4547static __inline__ __m512i __DEFAULT_FN_ATTRS
4548_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4549{
4550 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4551 (__v16si) __W,
4552 (__mmask16) __U);
4553}
4554
4555static __inline__ __m512i __DEFAULT_FN_ATTRS
4556_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4557{
4558 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4559 (__v16si)
4560 _mm512_setzero_si512 (),
4561 (__mmask16) __U);
4562}
4563
4564static __inline__ __m512i __DEFAULT_FN_ATTRS
4565_mm512_cvtepi16_epi64 (__m128i __A)
4566{
4567 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4568 (__v8di)
4569 _mm512_setzero_si512 (),
4570 (__mmask8) -1);
4571}
4572
4573static __inline__ __m512i __DEFAULT_FN_ATTRS
4574_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4575{
4576 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4577 (__v8di) __W,
4578 (__mmask8) __U);
4579}
4580
4581static __inline__ __m512i __DEFAULT_FN_ATTRS
4582_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4583{
4584 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4585 (__v8di)
4586 _mm512_setzero_si512 (),
4587 (__mmask8) __U);
4588}
4589
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004590static __inline__ __m512i __DEFAULT_FN_ATTRS
4591_mm512_cvtepu8_epi32 (__m128i __A)
4592{
4593 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4594 (__v16si)
4595 _mm512_setzero_si512 (),
4596 (__mmask16) -1);
4597}
4598
4599static __inline__ __m512i __DEFAULT_FN_ATTRS
4600_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4601{
4602 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4603 (__v16si) __W,
4604 (__mmask16) __U);
4605}
4606
4607static __inline__ __m512i __DEFAULT_FN_ATTRS
4608_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4609{
4610 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4611 (__v16si)
4612 _mm512_setzero_si512 (),
4613 (__mmask16) __U);
4614}
4615
4616static __inline__ __m512i __DEFAULT_FN_ATTRS
4617_mm512_cvtepu8_epi64 (__m128i __A)
4618{
4619 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4620 (__v8di)
4621 _mm512_setzero_si512 (),
4622 (__mmask8) -1);
4623}
4624
4625static __inline__ __m512i __DEFAULT_FN_ATTRS
4626_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4627{
4628 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4629 (__v8di) __W,
4630 (__mmask8) __U);
4631}
4632
4633static __inline__ __m512i __DEFAULT_FN_ATTRS
4634_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4635{
4636 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4637 (__v8di)
4638 _mm512_setzero_si512 (),
4639 (__mmask8) __U);
4640}
4641
4642static __inline__ __m512i __DEFAULT_FN_ATTRS
4643_mm512_cvtepu32_epi64 (__m256i __X)
4644{
4645 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4646 (__v8di)
4647 _mm512_setzero_si512 (),
4648 (__mmask8) -1);
4649}
4650
4651static __inline__ __m512i __DEFAULT_FN_ATTRS
4652_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4653{
4654 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4655 (__v8di) __W,
4656 (__mmask8) __U);
4657}
4658
4659static __inline__ __m512i __DEFAULT_FN_ATTRS
4660_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4661{
4662 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4663 (__v8di)
4664 _mm512_setzero_si512 (),
4665 (__mmask8) __U);
4666}
4667
4668static __inline__ __m512i __DEFAULT_FN_ATTRS
4669_mm512_cvtepu16_epi32 (__m256i __A)
4670{
4671 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4672 (__v16si)
4673 _mm512_setzero_si512 (),
4674 (__mmask16) -1);
4675}
4676
4677static __inline__ __m512i __DEFAULT_FN_ATTRS
4678_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4679{
4680 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4681 (__v16si) __W,
4682 (__mmask16) __U);
4683}
4684
4685static __inline__ __m512i __DEFAULT_FN_ATTRS
4686_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4687{
4688 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4689 (__v16si)
4690 _mm512_setzero_si512 (),
4691 (__mmask16) __U);
4692}
4693
4694static __inline__ __m512i __DEFAULT_FN_ATTRS
4695_mm512_cvtepu16_epi64 (__m128i __A)
4696{
4697 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4698 (__v8di)
4699 _mm512_setzero_si512 (),
4700 (__mmask8) -1);
4701}
4702
4703static __inline__ __m512i __DEFAULT_FN_ATTRS
4704_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4705{
4706 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4707 (__v8di) __W,
4708 (__mmask8) __U);
4709}
4710
4711static __inline__ __m512i __DEFAULT_FN_ATTRS
4712_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4713{
4714 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4715 (__v8di)
4716 _mm512_setzero_si512 (),
4717 (__mmask8) __U);
4718}
4719
Michael Zuckermane98cc742016-02-23 15:59:47 +00004720static __inline__ __m512i __DEFAULT_FN_ATTRS
4721_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4722{
4723 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4724 (__v16si) __B,
4725 (__v16si)
4726 _mm512_setzero_si512 (),
4727 (__mmask16) -1);
4728}
4729
4730static __inline__ __m512i __DEFAULT_FN_ATTRS
4731_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4732{
4733 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4734 (__v16si) __B,
4735 (__v16si) __W,
4736 (__mmask16) __U);
4737}
4738
4739static __inline__ __m512i __DEFAULT_FN_ATTRS
4740_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4741{
4742 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4743 (__v16si) __B,
4744 (__v16si)
4745 _mm512_setzero_si512 (),
4746 (__mmask16) __U);
4747}
4748
4749static __inline__ __m512i __DEFAULT_FN_ATTRS
4750_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4751{
4752 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4753 (__v8di) __B,
4754 (__v8di)
4755 _mm512_setzero_si512 (),
4756 (__mmask8) -1);
4757}
4758
4759static __inline__ __m512i __DEFAULT_FN_ATTRS
4760_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4761{
4762 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4763 (__v8di) __B,
4764 (__v8di) __W,
4765 (__mmask8) __U);
4766}
4767
4768static __inline__ __m512i __DEFAULT_FN_ATTRS
4769_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4770{
4771 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4772 (__v8di) __B,
4773 (__v8di)
4774 _mm512_setzero_si512 (),
4775 (__mmask8) __U);
4776}
4777
4778
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004779
Craig Topper4cac1c22015-01-25 23:30:07 +00004780#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004781 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004782 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004783 (__mmask16)-1); })
4784
4785#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004786 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004787 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004788 (__mmask16)-1); })
4789
4790#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004791 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004792 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004793 (__mmask8)-1); })
4794
4795#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004796 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004797 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004798 (__mmask8)-1); })
4799
4800#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004801 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004802 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004803 (__mmask16)(m)); })
4804
4805#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004806 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004807 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004808 (__mmask16)(m)); })
4809
4810#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004811 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004812 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004813 (__mmask8)(m)); })
4814
4815#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004816 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004817 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004818 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004819
Michael Zuckerman38a27272016-02-22 09:05:41 +00004820#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004821 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4822 (__v16si)_mm512_setzero_si512(), \
4823 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004824
4825#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004826 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4827 (__v16si)(__m512i)(W), \
4828 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004829
4830#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004831 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4832 (__v16si)_mm512_setzero_si512(), \
4833 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004834
4835#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004836 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4837 (__v8di)_mm512_setzero_si512(), \
4838 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004839
4840#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004841 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4842 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004843
4844#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004845 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4846 (__v8di)_mm512_setzero_si512(), \
4847 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004848static __inline__ __m512i __DEFAULT_FN_ATTRS
4849_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4850{
4851 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4852 (__v16si) __B,
4853 (__v16si)
4854 _mm512_setzero_si512 (),
4855 (__mmask16) -1);
4856}
4857
4858static __inline__ __m512i __DEFAULT_FN_ATTRS
4859_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4860{
4861 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4862 (__v16si) __B,
4863 (__v16si) __W,
4864 (__mmask16) __U);
4865}
4866
4867static __inline__ __m512i __DEFAULT_FN_ATTRS
4868_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4869{
4870 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4871 (__v16si) __B,
4872 (__v16si)
4873 _mm512_setzero_si512 (),
4874 (__mmask16) __U);
4875}
4876
4877static __inline__ __m512i __DEFAULT_FN_ATTRS
4878_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4879{
4880 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4881 (__v8di) __B,
4882 (__v8di)
4883 _mm512_setzero_si512 (),
4884 (__mmask8) -1);
4885}
4886
4887static __inline__ __m512i __DEFAULT_FN_ATTRS
4888_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4889{
4890 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4891 (__v8di) __B,
4892 (__v8di) __W,
4893 (__mmask8) __U);
4894}
4895
4896static __inline__ __m512i __DEFAULT_FN_ATTRS
4897_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4898{
4899 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4900 (__v8di) __B,
4901 (__v8di)
4902 _mm512_setzero_si512 (),
4903 (__mmask8) __U);
4904}
4905
Craig Topper8c18e112016-05-17 04:41:50 +00004906#define _mm512_ror_epi32(A, B) __extension__ ({ \
4907 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4908 (__v16si)_mm512_setzero_si512(), \
4909 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004910
Craig Topper8c18e112016-05-17 04:41:50 +00004911#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4912 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4913 (__v16si)(__m512i)(W), \
4914 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004915
Craig Topper8c18e112016-05-17 04:41:50 +00004916#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
4917 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4918 (__v16si)_mm512_setzero_si512(), \
4919 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004920
Craig Topper8c18e112016-05-17 04:41:50 +00004921#define _mm512_ror_epi64(A, B) __extension__ ({ \
4922 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4923 (__v8di)_mm512_setzero_si512(), \
4924 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004925
Craig Topper8c18e112016-05-17 04:41:50 +00004926#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4927 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4928 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004929
Craig Topper8c18e112016-05-17 04:41:50 +00004930#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
4931 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4932 (__v8di)_mm512_setzero_si512(), \
4933 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004934
Craig Topper8c18e112016-05-17 04:41:50 +00004935#define _mm512_slli_epi32(A, B) __extension__ ({ \
4936 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4937 (__v16si)_mm512_setzero_si512(), \
4938 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004939
Craig Topper8c18e112016-05-17 04:41:50 +00004940#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
4941 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4942 (__v16si)(__m512i)(W), \
4943 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004944
Craig Topper8c18e112016-05-17 04:41:50 +00004945#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
4946 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4947 (__v16si)_mm512_setzero_si512(), \
4948 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004949
Craig Topper8c18e112016-05-17 04:41:50 +00004950#define _mm512_slli_epi64(A, B) __extension__ ({ \
4951 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4952 (__v8di)_mm512_setzero_si512(), \
4953 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004954
Craig Topper8c18e112016-05-17 04:41:50 +00004955#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
4956 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4957 (__v8di)(__m512i)(W), \
4958 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004959
Craig Topper8c18e112016-05-17 04:41:50 +00004960#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
4961 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4962 (__v8di)_mm512_setzero_si512(), \
4963 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004964
Michael Zuckerman38a27272016-02-22 09:05:41 +00004965
Michael Zuckermand176d742016-03-01 17:49:03 +00004966
Craig Topper8c18e112016-05-17 04:41:50 +00004967#define _mm512_srli_epi32(A, B) __extension__ ({ \
4968 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4969 (__v16si)_mm512_setzero_si512(), \
4970 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004971
Craig Topper8c18e112016-05-17 04:41:50 +00004972#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
4973 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4974 (__v16si)(__m512i)(W), \
4975 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004976
Craig Topper8c18e112016-05-17 04:41:50 +00004977#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
4978 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4979 (__v16si)_mm512_setzero_si512(), \
4980 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004981
Craig Topper8c18e112016-05-17 04:41:50 +00004982#define _mm512_srli_epi64(A, B) __extension__ ({ \
4983 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4984 (__v8di)_mm512_setzero_si512(), \
4985 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004986
Craig Topper8c18e112016-05-17 04:41:50 +00004987#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
4988 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4989 (__v8di)(__m512i)(W), \
4990 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004991
Craig Topper8c18e112016-05-17 04:41:50 +00004992#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
4993 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4994 (__v8di)_mm512_setzero_si512(), \
4995 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004996
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004997static __inline__ __m512i __DEFAULT_FN_ATTRS
4998_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4999{
5000 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5001 (__v16si) __W,
5002 (__mmask16) __U);
5003}
5004
5005static __inline__ __m512i __DEFAULT_FN_ATTRS
5006_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
5007{
5008 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5009 (__v16si)
5010 _mm512_setzero_si512 (),
5011 (__mmask16) __U);
5012}
5013
5014static __inline__ void __DEFAULT_FN_ATTRS
5015_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5016{
5017 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5018 (__mmask16) __U);
5019}
5020
5021static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005022_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5023{
5024 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5025 (__v16si) __W,
5026 (__mmask16) __U);
5027}
5028
5029static __inline__ __m512i __DEFAULT_FN_ATTRS
5030_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5031{
5032 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5033 (__v16si)
5034 _mm512_setzero_si512 (),
5035 (__mmask16) __U);
5036}
5037
5038static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005039_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5040{
5041 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5042 (__v8di) __W,
5043 (__mmask8) __U);
5044}
5045
5046static __inline__ __m512i __DEFAULT_FN_ATTRS
5047_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5048{
5049 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5050 (__v8di)
5051 _mm512_setzero_si512 (),
5052 (__mmask8) __U);
5053}
5054
5055static __inline__ __m512i __DEFAULT_FN_ATTRS
5056_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5057{
5058 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5059 (__v8di) __W,
5060 (__mmask8) __U);
5061}
5062
5063static __inline__ __m512i __DEFAULT_FN_ATTRS
5064_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5065{
5066 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5067 (__v8di)
5068 _mm512_setzero_si512 (),
5069 (__mmask8) __U);
5070}
5071
5072static __inline__ void __DEFAULT_FN_ATTRS
5073_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5074{
5075 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5076 (__mmask8) __U);
5077}
5078
5079
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005080
5081static __inline__ __m512d __DEFAULT_FN_ATTRS
5082_mm512_movedup_pd (__m512d __A)
5083{
5084 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5085 (__v8df)
5086 _mm512_undefined_pd (),
5087 (__mmask8) -1);
5088}
5089
5090static __inline__ __m512d __DEFAULT_FN_ATTRS
5091_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5092{
5093 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5094 (__v8df) __W,
5095 (__mmask8) __U);
5096}
5097
5098static __inline__ __m512d __DEFAULT_FN_ATTRS
5099_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5100{
5101 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5102 (__v8df)
5103 _mm512_setzero_pd (),
5104 (__mmask8) __U);
5105}
5106
Craig Topper8c18e112016-05-17 04:41:50 +00005107#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5108 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5109 (__v8df)(__m512d)(B), \
5110 (__v8di)(__m512i)(C), (int)(imm), \
5111 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005112
Craig Topper8c18e112016-05-17 04:41:50 +00005113#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5114 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5115 (__v8df)(__m512d)(B), \
5116 (__v8di)(__m512i)(C), (int)(imm), \
5117 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005118
Craig Topper8c18e112016-05-17 04:41:50 +00005119#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5120 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5121 (__v8df)(__m512d)(B), \
5122 (__v8di)(__m512i)(C), (int)(imm), \
5123 (__mmask8)-1, \
5124 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005125
Craig Topper8c18e112016-05-17 04:41:50 +00005126#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5127 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5128 (__v8df)(__m512d)(B), \
5129 (__v8di)(__m512i)(C), (int)(imm), \
5130 (__mmask8)(U), \
5131 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005132
Craig Topper8c18e112016-05-17 04:41:50 +00005133#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5134 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5135 (__v8df)(__m512d)(B), \
5136 (__v8di)(__m512i)(C), \
5137 (int)(imm), (__mmask8)(U), \
5138 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005139
Craig Topper8c18e112016-05-17 04:41:50 +00005140#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5141 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5142 (__v8df)(__m512d)(B), \
5143 (__v8di)(__m512i)(C), \
5144 (int)(imm), (__mmask8)(U), \
5145 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005146
Craig Topper8c18e112016-05-17 04:41:50 +00005147#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5148 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5149 (__v16sf)(__m512)(B), \
5150 (__v16si)(__m512i)(C), (int)(imm), \
5151 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005152
Craig Topper8c18e112016-05-17 04:41:50 +00005153#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5154 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5155 (__v16sf)(__m512)(B), \
5156 (__v16si)(__m512i)(C), (int)(imm), \
5157 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005158
Craig Topper8c18e112016-05-17 04:41:50 +00005159#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5160 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5161 (__v16sf)(__m512)(B), \
5162 (__v16si)(__m512i)(C), (int)(imm), \
5163 (__mmask16)-1, \
5164 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005165
Craig Topper8c18e112016-05-17 04:41:50 +00005166#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5167 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5168 (__v16sf)(__m512)(B), \
5169 (__v16si)(__m512i)(C), (int)(imm), \
5170 (__mmask16)(U), \
5171 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005172
Craig Topper8c18e112016-05-17 04:41:50 +00005173#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5174 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5175 (__v16sf)(__m512)(B), \
5176 (__v16si)(__m512i)(C), \
5177 (int)(imm), (__mmask16)(U), \
5178 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005179
Craig Topper8c18e112016-05-17 04:41:50 +00005180#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5181 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5182 (__v16sf)(__m512)(B), \
5183 (__v16si)(__m512i)(C), \
5184 (int)(imm), (__mmask16)(U), \
5185 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005186
Craig Topper8c18e112016-05-17 04:41:50 +00005187#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5188 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5189 (__v2df)(__m128d)(B), \
5190 (__v2di)(__m128i)(C), (int)(imm), \
5191 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005192
Craig Topper8c18e112016-05-17 04:41:50 +00005193#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5194 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5195 (__v2df)(__m128d)(B), \
5196 (__v2di)(__m128i)(C), (int)(imm), \
5197 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005198
Craig Topper8c18e112016-05-17 04:41:50 +00005199#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5200 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5201 (__v2df)(__m128d)(B), \
5202 (__v2di)(__m128i)(C), (int)(imm), \
5203 (__mmask8)-1, \
5204 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005205
Craig Topper8c18e112016-05-17 04:41:50 +00005206#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5207 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5208 (__v2df)(__m128d)(B), \
5209 (__v2di)(__m128i)(C), (int)(imm), \
5210 (__mmask8)(U), \
5211 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005212
Craig Topper8c18e112016-05-17 04:41:50 +00005213#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5214 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5215 (__v2df)(__m128d)(B), \
5216 (__v2di)(__m128i)(C), (int)(imm), \
5217 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005218
Craig Topper8c18e112016-05-17 04:41:50 +00005219#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5220 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5221 (__v2df)(__m128d)(B), \
5222 (__v2di)(__m128i)(C), (int)(imm), \
5223 (__mmask8)(U), \
5224 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005225
Craig Topper8c18e112016-05-17 04:41:50 +00005226#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5227 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5228 (__v4sf)(__m128)(B), \
5229 (__v4si)(__m128i)(C), (int)(imm), \
5230 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005231
Craig Topper8c18e112016-05-17 04:41:50 +00005232#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5233 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5234 (__v4sf)(__m128)(B), \
5235 (__v4si)(__m128i)(C), (int)(imm), \
5236 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005237
Craig Topper8c18e112016-05-17 04:41:50 +00005238#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5239 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5240 (__v4sf)(__m128)(B), \
5241 (__v4si)(__m128i)(C), (int)(imm), \
5242 (__mmask8)-1, \
5243 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005244
Craig Topper8c18e112016-05-17 04:41:50 +00005245#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5246 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5247 (__v4sf)(__m128)(B), \
5248 (__v4si)(__m128i)(C), (int)(imm), \
5249 (__mmask8)(U), \
5250 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005251
Craig Topper8c18e112016-05-17 04:41:50 +00005252#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5253 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5254 (__v4sf)(__m128)(B), \
5255 (__v4si)(__m128i)(C), (int)(imm), \
5256 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005257
Craig Topper8c18e112016-05-17 04:41:50 +00005258#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5259 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5260 (__v4sf)(__m128)(B), \
5261 (__v4si)(__m128i)(C), (int)(imm), \
5262 (__mmask8)(U), \
5263 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005264
Craig Topper8c18e112016-05-17 04:41:50 +00005265#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5266 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5267 (__v2df)(__m128d)(B), \
5268 (__v2df)_mm_setzero_pd(), \
5269 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005270
5271
5272static __inline__ __m128d __DEFAULT_FN_ATTRS
5273_mm_getexp_sd (__m128d __A, __m128d __B)
5274{
5275 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5276 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5277}
5278
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005279static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005280_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005281{
5282 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5283 (__v2df) __B,
5284 (__v2df) __W,
5285 (__mmask8) __U,
5286 _MM_FROUND_CUR_DIRECTION);
5287}
5288
Craig Topper8c18e112016-05-17 04:41:50 +00005289#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5290 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5291 (__v2df)(__m128d)(B), \
5292 (__v2df)(__m128d)(W), \
5293 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005294
5295static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005296_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005297{
5298 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5299 (__v2df) __B,
5300 (__v2df) _mm_setzero_pd (),
5301 (__mmask8) __U,
5302 _MM_FROUND_CUR_DIRECTION);
5303}
5304
Craig Topper8c18e112016-05-17 04:41:50 +00005305#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5306 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5307 (__v2df)(__m128d)(B), \
5308 (__v2df)_mm_setzero_pd(), \
5309 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005310
Craig Topper8c18e112016-05-17 04:41:50 +00005311#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5312 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5313 (__v4sf)(__m128)(B), \
5314 (__v4sf)_mm_setzero_ps(), \
5315 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005316
5317static __inline__ __m128 __DEFAULT_FN_ATTRS
5318_mm_getexp_ss (__m128 __A, __m128 __B)
5319{
5320 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5321 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5322}
5323
Craig Topper58187d32016-05-17 04:41:29 +00005324static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005325_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005326{
Craig Topper58187d32016-05-17 04:41:29 +00005327 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005328 (__v4sf) __B,
5329 (__v4sf) __W,
5330 (__mmask8) __U,
5331 _MM_FROUND_CUR_DIRECTION);
5332}
5333
Craig Topper8c18e112016-05-17 04:41:50 +00005334#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5335 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5336 (__v4sf)(__m128)(B), \
5337 (__v4sf)(__m128)(W), \
5338 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005339
Craig Topper58187d32016-05-17 04:41:29 +00005340static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005341_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005342{
Craig Topper58187d32016-05-17 04:41:29 +00005343 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005344 (__v4sf) __B,
5345 (__v4sf) _mm_setzero_pd (),
5346 (__mmask8) __U,
5347 _MM_FROUND_CUR_DIRECTION);
5348}
5349
Craig Topper8c18e112016-05-17 04:41:50 +00005350#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5351 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5352 (__v4sf)(__m128)(B), \
5353 (__v4sf)_mm_setzero_ps(), \
5354 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005355
Craig Topper8c18e112016-05-17 04:41:50 +00005356#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5357 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5358 (__v2df)(__m128d)(B), \
5359 (int)(((D)<<2) | (C)), \
5360 (__v2df)_mm_setzero_pd(), \
5361 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005362
Craig Topper8c18e112016-05-17 04:41:50 +00005363#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5364 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5365 (__v2df)(__m128d)(B), \
5366 (int)(((D)<<2) | (C)), \
5367 (__v2df)_mm_setzero_pd(), \
5368 (__mmask8)-1, \
5369 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005370
Craig Topper8c18e112016-05-17 04:41:50 +00005371#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5372 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5373 (__v2df)(__m128d)(B), \
5374 (int)(((D)<<2) | (C)), \
5375 (__v2df)(__m128d)(W), \
5376 (__mmask8)(U), \
5377 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005378
Craig Topper8c18e112016-05-17 04:41:50 +00005379#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5380 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5381 (__v2df)(__m128d)(B), \
5382 (int)(((D)<<2) | (C)), \
5383 (__v2df)(__m128d)(W), \
5384 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005385
Craig Topper8c18e112016-05-17 04:41:50 +00005386#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5387 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5388 (__v2df)(__m128d)(B), \
5389 (int)(((D)<<2) | (C)), \
5390 (__v2df)_mm_setzero_pd(), \
5391 (__mmask8)(U), \
5392 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005393
Craig Topper8c18e112016-05-17 04:41:50 +00005394#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5395 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5396 (__v2df)(__m128d)(B), \
5397 (int)(((D)<<2) | (C)), \
5398 (__v2df)_mm_setzero_pd(), \
5399 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005400
Craig Topper8c18e112016-05-17 04:41:50 +00005401#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5402 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5403 (__v4sf)(__m128)(B), \
5404 (int)(((D)<<2) | (C)), \
5405 (__v4sf)_mm_setzero_ps(), \
5406 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005407
Craig Topper8c18e112016-05-17 04:41:50 +00005408#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5409 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5410 (__v4sf)(__m128)(B), \
5411 (int)(((D)<<2) | (C)), \
5412 (__v4sf)_mm_setzero_ps(), \
5413 (__mmask8)-1, \
5414 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005415
Craig Topper8c18e112016-05-17 04:41:50 +00005416#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5417 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5418 (__v4sf)(__m128)(B), \
5419 (int)(((D)<<2) | (C)), \
5420 (__v4sf)(__m128)(W), \
5421 (__mmask8)(U), \
5422 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005423
Craig Topper8c18e112016-05-17 04:41:50 +00005424#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5425 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5426 (__v4sf)(__m128)(B), \
5427 (int)(((D)<<2) | (C)), \
5428 (__v4sf)(__m128)(W), \
5429 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005430
Craig Topper8c18e112016-05-17 04:41:50 +00005431#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5432 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5433 (__v4sf)(__m128)(B), \
5434 (int)(((D)<<2) | (C)), \
5435 (__v4sf)_mm_setzero_pd(), \
5436 (__mmask8)(U), \
5437 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005438
Craig Topper8c18e112016-05-17 04:41:50 +00005439#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5440 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5441 (__v4sf)(__m128)(B), \
5442 (int)(((D)<<2) | (C)), \
5443 (__v4sf)_mm_setzero_ps(), \
5444 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005445
5446static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5447_mm512_kmov (__mmask16 __A)
5448{
5449 return __A;
5450}
5451
Craig Topper8c18e112016-05-17 04:41:50 +00005452#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5453 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5454 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005455
Craig Topper8c18e112016-05-17 04:41:50 +00005456#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5457 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5458 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005459
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005460static __inline__ __m512d __DEFAULT_FN_ATTRS
5461_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5462{
5463 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5464 (__v8df) __B,
5465 (__v8df) __W,
5466 (__mmask8) __U);
5467}
Craig Topper8c18e112016-05-17 04:41:50 +00005468#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5469 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005470static __inline__ __m512i __DEFAULT_FN_ATTRS
5471_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5472 __mmask16 __U, __m512i __B)
5473{
5474 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5475 (__v16si) __I
5476 /* idx */ ,
5477 (__v16si) __B,
5478 (__mmask16) __U);
5479}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005480static __inline__ __m512i __DEFAULT_FN_ATTRS
5481_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5482{
5483 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5484 (__v16si) __B,
5485 (__v16si)
5486 _mm512_setzero_si512 (),
5487 (__mmask16) -1);
5488}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005489
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005490static __inline__ __m512i __DEFAULT_FN_ATTRS
5491_mm512_sll_epi32 (__m512i __A, __m128i __B)
5492{
5493 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5494 (__v4si) __B,
5495 (__v16si)
5496 _mm512_setzero_si512 (),
5497 (__mmask16) -1);
5498}
5499
5500static __inline__ __m512i __DEFAULT_FN_ATTRS
5501_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5502{
5503 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5504 (__v4si) __B,
5505 (__v16si) __W,
5506 (__mmask16) __U);
5507}
5508
5509static __inline__ __m512i __DEFAULT_FN_ATTRS
5510_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5511{
5512 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5513 (__v4si) __B,
5514 (__v16si)
5515 _mm512_setzero_si512 (),
5516 (__mmask16) __U);
5517}
5518
5519static __inline__ __m512i __DEFAULT_FN_ATTRS
5520_mm512_sll_epi64 (__m512i __A, __m128i __B)
5521{
5522 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5523 (__v2di) __B,
5524 (__v8di)
5525 _mm512_setzero_si512 (),
5526 (__mmask8) -1);
5527}
5528
5529static __inline__ __m512i __DEFAULT_FN_ATTRS
5530_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5531{
5532 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5533 (__v2di) __B,
5534 (__v8di) __W,
5535 (__mmask8) __U);
5536}
5537
5538static __inline__ __m512i __DEFAULT_FN_ATTRS
5539_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5540{
5541 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5542 (__v2di) __B,
5543 (__v8di)
5544 _mm512_setzero_si512 (),
5545 (__mmask8) __U);
5546}
5547
5548static __inline__ __m512i __DEFAULT_FN_ATTRS
5549_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5550{
5551 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5552 (__v16si) __Y,
5553 (__v16si)
5554 _mm512_setzero_si512 (),
5555 (__mmask16) -1);
5556}
5557
5558static __inline__ __m512i __DEFAULT_FN_ATTRS
5559_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5560{
5561 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5562 (__v16si) __Y,
5563 (__v16si) __W,
5564 (__mmask16) __U);
5565}
5566
5567static __inline__ __m512i __DEFAULT_FN_ATTRS
5568_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5569{
5570 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5571 (__v16si) __Y,
5572 (__v16si)
5573 _mm512_setzero_si512 (),
5574 (__mmask16) __U);
5575}
5576
5577static __inline__ __m512i __DEFAULT_FN_ATTRS
5578_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5579{
5580 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5581 (__v8di) __Y,
5582 (__v8di)
5583 _mm512_undefined_pd (),
5584 (__mmask8) -1);
5585}
5586
5587static __inline__ __m512i __DEFAULT_FN_ATTRS
5588_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5589{
5590 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5591 (__v8di) __Y,
5592 (__v8di) __W,
5593 (__mmask8) __U);
5594}
5595
5596static __inline__ __m512i __DEFAULT_FN_ATTRS
5597_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5598{
5599 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5600 (__v8di) __Y,
5601 (__v8di)
5602 _mm512_setzero_si512 (),
5603 (__mmask8) __U);
5604}
5605
5606static __inline__ __m512i __DEFAULT_FN_ATTRS
5607_mm512_sra_epi32 (__m512i __A, __m128i __B)
5608{
5609 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5610 (__v4si) __B,
5611 (__v16si)
5612 _mm512_setzero_si512 (),
5613 (__mmask16) -1);
5614}
5615
5616static __inline__ __m512i __DEFAULT_FN_ATTRS
5617_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5618{
5619 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5620 (__v4si) __B,
5621 (__v16si) __W,
5622 (__mmask16) __U);
5623}
5624
5625static __inline__ __m512i __DEFAULT_FN_ATTRS
5626_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5627{
5628 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5629 (__v4si) __B,
5630 (__v16si)
5631 _mm512_setzero_si512 (),
5632 (__mmask16) __U);
5633}
5634
5635static __inline__ __m512i __DEFAULT_FN_ATTRS
5636_mm512_sra_epi64 (__m512i __A, __m128i __B)
5637{
5638 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5639 (__v2di) __B,
5640 (__v8di)
5641 _mm512_setzero_si512 (),
5642 (__mmask8) -1);
5643}
5644
5645static __inline__ __m512i __DEFAULT_FN_ATTRS
5646_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5647{
5648 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5649 (__v2di) __B,
5650 (__v8di) __W,
5651 (__mmask8) __U);
5652}
5653
5654static __inline__ __m512i __DEFAULT_FN_ATTRS
5655_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5656{
5657 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5658 (__v2di) __B,
5659 (__v8di)
5660 _mm512_setzero_si512 (),
5661 (__mmask8) __U);
5662}
5663
5664static __inline__ __m512i __DEFAULT_FN_ATTRS
5665_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5666{
5667 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5668 (__v16si) __Y,
5669 (__v16si)
5670 _mm512_setzero_si512 (),
5671 (__mmask16) -1);
5672}
5673
5674static __inline__ __m512i __DEFAULT_FN_ATTRS
5675_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5676{
5677 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5678 (__v16si) __Y,
5679 (__v16si) __W,
5680 (__mmask16) __U);
5681}
5682
5683static __inline__ __m512i __DEFAULT_FN_ATTRS
5684_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5685{
5686 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5687 (__v16si) __Y,
5688 (__v16si)
5689 _mm512_setzero_si512 (),
5690 (__mmask16) __U);
5691}
5692
5693static __inline__ __m512i __DEFAULT_FN_ATTRS
5694_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5695{
5696 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5697 (__v8di) __Y,
5698 (__v8di)
5699 _mm512_setzero_si512 (),
5700 (__mmask8) -1);
5701}
5702
5703static __inline__ __m512i __DEFAULT_FN_ATTRS
5704_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5705{
5706 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5707 (__v8di) __Y,
5708 (__v8di) __W,
5709 (__mmask8) __U);
5710}
5711
5712static __inline__ __m512i __DEFAULT_FN_ATTRS
5713_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5714{
5715 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5716 (__v8di) __Y,
5717 (__v8di)
5718 _mm512_setzero_si512 (),
5719 (__mmask8) __U);
5720}
5721
5722static __inline__ __m512i __DEFAULT_FN_ATTRS
5723_mm512_srl_epi32 (__m512i __A, __m128i __B)
5724{
5725 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5726 (__v4si) __B,
5727 (__v16si)
5728 _mm512_setzero_si512 (),
5729 (__mmask16) -1);
5730}
5731
5732static __inline__ __m512i __DEFAULT_FN_ATTRS
5733_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5734{
5735 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5736 (__v4si) __B,
5737 (__v16si) __W,
5738 (__mmask16) __U);
5739}
5740
5741static __inline__ __m512i __DEFAULT_FN_ATTRS
5742_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5743{
5744 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5745 (__v4si) __B,
5746 (__v16si)
5747 _mm512_setzero_si512 (),
5748 (__mmask16) __U);
5749}
5750
5751static __inline__ __m512i __DEFAULT_FN_ATTRS
5752_mm512_srl_epi64 (__m512i __A, __m128i __B)
5753{
5754 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5755 (__v2di) __B,
5756 (__v8di)
5757 _mm512_setzero_si512 (),
5758 (__mmask8) -1);
5759}
5760
5761static __inline__ __m512i __DEFAULT_FN_ATTRS
5762_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5763{
5764 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5765 (__v2di) __B,
5766 (__v8di) __W,
5767 (__mmask8) __U);
5768}
5769
5770static __inline__ __m512i __DEFAULT_FN_ATTRS
5771_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5772{
5773 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5774 (__v2di) __B,
5775 (__v8di)
5776 _mm512_setzero_si512 (),
5777 (__mmask8) __U);
5778}
5779
5780static __inline__ __m512i __DEFAULT_FN_ATTRS
5781_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5782{
5783 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5784 (__v16si) __Y,
5785 (__v16si)
5786 _mm512_setzero_si512 (),
5787 (__mmask16) -1);
5788}
5789
5790static __inline__ __m512i __DEFAULT_FN_ATTRS
5791_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5792{
5793 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5794 (__v16si) __Y,
5795 (__v16si) __W,
5796 (__mmask16) __U);
5797}
5798
5799static __inline__ __m512i __DEFAULT_FN_ATTRS
5800_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5801{
5802 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5803 (__v16si) __Y,
5804 (__v16si)
5805 _mm512_setzero_si512 (),
5806 (__mmask16) __U);
5807}
5808
5809static __inline__ __m512i __DEFAULT_FN_ATTRS
5810_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5811{
5812 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5813 (__v8di) __Y,
5814 (__v8di)
5815 _mm512_setzero_si512 (),
5816 (__mmask8) -1);
5817}
5818
5819static __inline__ __m512i __DEFAULT_FN_ATTRS
5820_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5821{
5822 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5823 (__v8di) __Y,
5824 (__v8di) __W,
5825 (__mmask8) __U);
5826}
5827
5828static __inline__ __m512i __DEFAULT_FN_ATTRS
5829_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5830{
5831 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5832 (__v8di) __Y,
5833 (__v8di)
5834 _mm512_setzero_si512 (),
5835 (__mmask8) __U);
5836}
5837
Craig Topper8c18e112016-05-17 04:41:50 +00005838#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5839 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5840 (__v16si)(__m512i)(B), \
5841 (__v16si)(__m512i)(C), (int)(imm), \
5842 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005843
Craig Topper8c18e112016-05-17 04:41:50 +00005844#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5845 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5846 (__v16si)(__m512i)(B), \
5847 (__v16si)(__m512i)(C), (int)(imm), \
5848 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005849
Craig Topper8c18e112016-05-17 04:41:50 +00005850#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5851 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5852 (__v16si)(__m512i)(B), \
5853 (__v16si)(__m512i)(C), \
5854 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005855
Craig Topper8c18e112016-05-17 04:41:50 +00005856#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5857 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5858 (__v8di)(__m512i)(B), \
5859 (__v8di)(__m512i)(C), (int)(imm), \
5860 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005861
Craig Topper8c18e112016-05-17 04:41:50 +00005862#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
5863 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5864 (__v8di)(__m512i)(B), \
5865 (__v8di)(__m512i)(C), (int)(imm), \
5866 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005867
Craig Topper8c18e112016-05-17 04:41:50 +00005868#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
5869 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
5870 (__v8di)(__m512i)(B), \
5871 (__v8di)(__m512i)(C), (int)(imm), \
5872 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005873
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005874static __inline__ __m512d __DEFAULT_FN_ATTRS
5875_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5876{
5877 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5878 (__v8df) __B,
5879 (__v8df)
5880 _mm512_setzero_pd (),
5881 (__mmask8) __U);
5882}
5883
5884static __inline__ __m512 __DEFAULT_FN_ATTRS
5885_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5886{
5887 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5888 (__v16sf) __B,
5889 (__v16sf) __W,
5890 (__mmask16) __U);
5891}
5892
5893static __inline__ __m512 __DEFAULT_FN_ATTRS
5894_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5895{
5896 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5897 (__v16sf) __B,
5898 (__v16sf)
5899 _mm512_setzero_ps (),
5900 (__mmask16) __U);
5901}
5902
5903static __inline__ __m512d __DEFAULT_FN_ATTRS
5904_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5905{
5906 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5907 (__v8df) __B,
5908 (__v8df) __W,
5909 (__mmask8) __U);
5910}
5911
5912static __inline__ __m512d __DEFAULT_FN_ATTRS
5913_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5914{
5915 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5916 (__v8df) __B,
5917 (__v8df)
5918 _mm512_setzero_pd (),
5919 (__mmask8) __U);
5920}
5921
5922static __inline__ __m512 __DEFAULT_FN_ATTRS
5923_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5924{
5925 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5926 (__v16sf) __B,
5927 (__v16sf) __W,
5928 (__mmask16) __U);
5929}
5930
5931static __inline__ __m512 __DEFAULT_FN_ATTRS
5932_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5933{
5934 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5935 (__v16sf) __B,
5936 (__v16sf)
5937 _mm512_setzero_ps (),
5938 (__mmask16) __U);
5939}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005940
Craig Topper8c18e112016-05-17 04:41:50 +00005941#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
5942 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005943
Craig Topper8c18e112016-05-17 04:41:50 +00005944#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
5945 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005946
Craig Topper8c18e112016-05-17 04:41:50 +00005947#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
5948 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005949
Craig Topper8c18e112016-05-17 04:41:50 +00005950#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
5951 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005952
5953static __inline__ unsigned __DEFAULT_FN_ATTRS
5954_mm_cvtsd_u32 (__m128d __A)
5955{
5956 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5957 _MM_FROUND_CUR_DIRECTION);
5958}
5959
Craig Topper8c18e112016-05-17 04:41:50 +00005960#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
5961 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
5962 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005963
5964static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5965_mm_cvtsd_u64 (__m128d __A)
5966{
5967 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5968 __A,
5969 _MM_FROUND_CUR_DIRECTION);
5970}
5971
Craig Topper8c18e112016-05-17 04:41:50 +00005972#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
5973 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005974
Craig Topper8c18e112016-05-17 04:41:50 +00005975#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
5976 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005977
Craig Topper8c18e112016-05-17 04:41:50 +00005978#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
5979 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005980
Craig Topper8c18e112016-05-17 04:41:50 +00005981#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
5982 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005983
Craig Topper8c18e112016-05-17 04:41:50 +00005984#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
5985 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005986
5987static __inline__ unsigned __DEFAULT_FN_ATTRS
5988_mm_cvtss_u32 (__m128 __A)
5989{
5990 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5991 _MM_FROUND_CUR_DIRECTION);
5992}
5993
Craig Topper8c18e112016-05-17 04:41:50 +00005994#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
5995 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
5996 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005997
5998static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5999_mm_cvtss_u64 (__m128 __A)
6000{
6001 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
6002 __A,
6003 _MM_FROUND_CUR_DIRECTION);
6004}
6005
Craig Topper8c18e112016-05-17 04:41:50 +00006006#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
6007 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006008
Craig Topper8c18e112016-05-17 04:41:50 +00006009#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6010 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006011
6012static __inline__ int __DEFAULT_FN_ATTRS
6013_mm_cvttsd_i32 (__m128d __A)
6014{
6015 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6016 _MM_FROUND_CUR_DIRECTION);
6017}
6018
Craig Topper8c18e112016-05-17 04:41:50 +00006019#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6020 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006021
Craig Topper8c18e112016-05-17 04:41:50 +00006022#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6023 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006024
6025static __inline__ long long __DEFAULT_FN_ATTRS
6026_mm_cvttsd_i64 (__m128d __A)
6027{
6028 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6029 _MM_FROUND_CUR_DIRECTION);
6030}
6031
Craig Topper8c18e112016-05-17 04:41:50 +00006032#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6033 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006034
6035static __inline__ unsigned __DEFAULT_FN_ATTRS
6036_mm_cvttsd_u32 (__m128d __A)
6037{
6038 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6039 _MM_FROUND_CUR_DIRECTION);
6040}
6041
Craig Topper8c18e112016-05-17 04:41:50 +00006042#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6043 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6044 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006045
6046static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6047_mm_cvttsd_u64 (__m128d __A)
6048{
6049 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6050 __A,
6051 _MM_FROUND_CUR_DIRECTION);
6052}
6053
Craig Topper8c18e112016-05-17 04:41:50 +00006054#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6055 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006056
Craig Topper8c18e112016-05-17 04:41:50 +00006057#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6058 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006059
6060static __inline__ int __DEFAULT_FN_ATTRS
6061_mm_cvttss_i32 (__m128 __A)
6062{
6063 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6064 _MM_FROUND_CUR_DIRECTION);
6065}
6066
Craig Topper8c18e112016-05-17 04:41:50 +00006067#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6068 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006069
Craig Topper8c18e112016-05-17 04:41:50 +00006070#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6071 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006072
6073static __inline__ long long __DEFAULT_FN_ATTRS
6074_mm_cvttss_i64 (__m128 __A)
6075{
6076 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6077 _MM_FROUND_CUR_DIRECTION);
6078}
6079
Craig Topper8c18e112016-05-17 04:41:50 +00006080#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6081 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006082
6083static __inline__ unsigned __DEFAULT_FN_ATTRS
6084_mm_cvttss_u32 (__m128 __A)
6085{
6086 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6087 _MM_FROUND_CUR_DIRECTION);
6088}
6089
Craig Topper8c18e112016-05-17 04:41:50 +00006090#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6091 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6092 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006093
6094static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6095_mm_cvttss_u64 (__m128 __A)
6096{
6097 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6098 __A,
6099 _MM_FROUND_CUR_DIRECTION);
6100}
6101
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006102static __inline__ __m512d __DEFAULT_FN_ATTRS
6103_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6104 __m512d __B)
6105{
6106 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6107 (__v8di) __I
6108 /* idx */ ,
6109 (__v8df) __B,
6110 (__mmask8) __U);
6111}
6112
6113static __inline__ __m512 __DEFAULT_FN_ATTRS
6114_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6115 __m512 __B)
6116{
6117 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6118 (__v16si) __I
6119 /* idx */ ,
6120 (__v16sf) __B,
6121 (__mmask16) __U);
6122}
6123
6124static __inline__ __m512i __DEFAULT_FN_ATTRS
6125_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6126 __mmask8 __U, __m512i __B)
6127{
6128 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6129 (__v8di) __I
6130 /* idx */ ,
6131 (__v8di) __B,
6132 (__mmask8) __U);
6133}
6134
Craig Topper8c18e112016-05-17 04:41:50 +00006135#define _mm512_permute_pd(X, C) __extension__ ({ \
6136 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6137 (__v8df)_mm512_undefined_pd(), \
6138 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006139
Craig Topper8c18e112016-05-17 04:41:50 +00006140#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6141 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6142 (__v8df)(__m512d)(W), \
6143 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006144
Craig Topper8c18e112016-05-17 04:41:50 +00006145#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6146 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6147 (__v8df)_mm512_setzero_pd(), \
6148 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006149
Craig Topper8c18e112016-05-17 04:41:50 +00006150#define _mm512_permute_ps(X, C) __extension__ ({ \
6151 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6152 (__v16sf)_mm512_undefined_ps(), \
6153 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006154
Craig Topper8c18e112016-05-17 04:41:50 +00006155#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6156 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6157 (__v16sf)(__m512)(W), \
6158 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006159
Craig Topper8c18e112016-05-17 04:41:50 +00006160#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6161 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6162 (__v16sf)_mm512_setzero_ps(), \
6163 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006164
6165static __inline__ __m512d __DEFAULT_FN_ATTRS
6166_mm512_permutevar_pd (__m512d __A, __m512i __C)
6167{
6168 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6169 (__v8di) __C,
6170 (__v8df)
6171 _mm512_undefined_pd (),
6172 (__mmask8) -1);
6173}
6174
6175static __inline__ __m512d __DEFAULT_FN_ATTRS
6176_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6177{
6178 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6179 (__v8di) __C,
6180 (__v8df) __W,
6181 (__mmask8) __U);
6182}
6183
6184static __inline__ __m512d __DEFAULT_FN_ATTRS
6185_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6186{
6187 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6188 (__v8di) __C,
6189 (__v8df)
6190 _mm512_setzero_pd (),
6191 (__mmask8) __U);
6192}
6193
6194static __inline__ __m512 __DEFAULT_FN_ATTRS
6195_mm512_permutevar_ps (__m512 __A, __m512i __C)
6196{
6197 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6198 (__v16si) __C,
6199 (__v16sf)
6200 _mm512_undefined_ps (),
6201 (__mmask16) -1);
6202}
6203
6204static __inline__ __m512 __DEFAULT_FN_ATTRS
6205_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6206{
6207 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6208 (__v16si) __C,
6209 (__v16sf) __W,
6210 (__mmask16) __U);
6211}
6212
6213static __inline__ __m512 __DEFAULT_FN_ATTRS
6214_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6215{
6216 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6217 (__v16si) __C,
6218 (__v16sf)
6219 _mm512_setzero_ps (),
6220 (__mmask16) __U);
6221}
6222
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006223static __inline __m512d __DEFAULT_FN_ATTRS
6224_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006225{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006226 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6227 /* idx */ ,
6228 (__v8df) __A,
6229 (__v8df) __B,
6230 (__mmask8) -1);
6231}
6232
6233static __inline__ __m512d __DEFAULT_FN_ATTRS
6234_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6235{
6236 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6237 /* idx */ ,
6238 (__v8df) __A,
6239 (__v8df) __B,
6240 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006241}
6242
6243static __inline__ __m512d __DEFAULT_FN_ATTRS
6244_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6245 __m512d __B)
6246{
6247 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006248 /* idx */ ,
6249 (__v8df) __A,
6250 (__v8df) __B,
6251 (__mmask8) __U);
6252}
6253
6254static __inline __m512 __DEFAULT_FN_ATTRS
6255_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6256{
6257 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6258 /* idx */ ,
6259 (__v16sf) __A,
6260 (__v16sf) __B,
6261 (__mmask16) -1);
6262}
6263
6264static __inline__ __m512 __DEFAULT_FN_ATTRS
6265_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6266{
6267 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6268 /* idx */ ,
6269 (__v16sf) __A,
6270 (__v16sf) __B,
6271 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006272}
6273
6274static __inline__ __m512 __DEFAULT_FN_ATTRS
6275_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6276 __m512 __B)
6277{
6278 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006279 /* idx */ ,
6280 (__v16sf) __A,
6281 (__v16sf) __B,
6282 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006283}
6284
Michael Zuckerman07525092016-04-11 10:22:07 +00006285static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6286_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6287{
6288 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6289 (__v16si) __B,
6290 (__mmask16) -1);
6291}
6292
6293static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6294_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6295{
6296 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6297 (__v16si) __B, __U);
6298}
6299
6300static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6301_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6302{
6303 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6304 (__v8di) __B,
6305 (__mmask8) -1);
6306}
6307
6308static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6309_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6310{
6311 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6312 (__v8di) __B, __U);
6313}
6314
Craig Topper8c18e112016-05-17 04:41:50 +00006315#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6316 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6317 (__v8si)_mm256_undefined_si256(), \
6318 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006319
Craig Topper8c18e112016-05-17 04:41:50 +00006320#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6321 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6322 (__v8si)(__m256i)(W), \
6323 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006324
Craig Topper8c18e112016-05-17 04:41:50 +00006325#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6326 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6327 (__v8si)_mm256_setzero_si256(), \
6328 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006329
6330static __inline__ __m256i __DEFAULT_FN_ATTRS
6331_mm512_cvttpd_epu32 (__m512d __A)
6332{
6333 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6334 (__v8si)
6335 _mm256_undefined_si256 (),
6336 (__mmask8) -1,
6337 _MM_FROUND_CUR_DIRECTION);
6338}
6339
6340static __inline__ __m256i __DEFAULT_FN_ATTRS
6341_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6342{
6343 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6344 (__v8si) __W,
6345 (__mmask8) __U,
6346 _MM_FROUND_CUR_DIRECTION);
6347}
6348
6349static __inline__ __m256i __DEFAULT_FN_ATTRS
6350_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6351{
6352 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6353 (__v8si)
6354 _mm256_setzero_si256 (),
6355 (__mmask8) __U,
6356 _MM_FROUND_CUR_DIRECTION);
6357}
Michael Zuckerman07525092016-04-11 10:22:07 +00006358
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006359static __inline__ __m512i __DEFAULT_FN_ATTRS
6360_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6361 __m512i __B)
6362{
6363 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6364 (__v16si) __B,
6365 (__v16si) __W,
6366 (__mmask16) __U);
6367}
6368
6369static __inline__ __m512i __DEFAULT_FN_ATTRS
6370_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6371{
6372 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6373 (__v16si) __B,
6374 (__v16si)
6375 _mm512_setzero_si512 (),
6376 (__mmask16) __U);
6377}
6378
6379static __inline__ __m512i __DEFAULT_FN_ATTRS
6380_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6381{
6382 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6383 (__v8di) __B,
6384 (__v8di)
6385 _mm512_setzero_si512 (),
6386 (__mmask8) -1);
6387}
6388
6389static __inline__ __m512i __DEFAULT_FN_ATTRS
6390_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6391{
6392 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6393 (__v8di) __B,
6394 (__v8di) __W,
6395 (__mmask8) __U);
6396}
6397
6398static __inline__ __m512i __DEFAULT_FN_ATTRS
6399_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6400{
6401 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6402 (__v8di) __B,
6403 (__v8di)
6404 _mm512_setzero_si512 (),
6405 (__mmask8) __U);
6406}
6407
6408static __inline__ __m512i __DEFAULT_FN_ATTRS
6409_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6410{
6411 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6412 (__v16si) __B,
6413 (__v16si)
6414 _mm512_setzero_si512 (),
6415 (__mmask16) -1);
6416}
6417
6418static __inline__ __m512i __DEFAULT_FN_ATTRS
6419_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6420 __m512i __B)
6421{
6422 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6423 (__v16si) __B,
6424 (__v16si) __W,
6425 (__mmask16) __U);
6426}
6427
6428static __inline__ __m512i __DEFAULT_FN_ATTRS
6429_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6430{
6431 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6432 (__v16si) __B,
6433 (__v16si)
6434 _mm512_setzero_si512 (),
6435 (__mmask16) __U);
6436}
6437
6438static __inline__ __m512i __DEFAULT_FN_ATTRS
6439_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6440{
6441 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6442 (__v8di) __B,
6443 (__v8di)
6444 _mm512_setzero_si512 (),
6445 (__mmask8) -1);
6446}
6447
6448static __inline__ __m512i __DEFAULT_FN_ATTRS
6449_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6450{
6451 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6452 (__v8di) __B,
6453 (__v8di) __W,
6454 (__mmask8) __U);
6455}
6456
6457static __inline__ __m512i __DEFAULT_FN_ATTRS
6458_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6459{
6460 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6461 (__v8di) __B,
6462 (__v8di)
6463 _mm512_setzero_si512 (),
6464 (__mmask8) __U);
6465}
6466
Craig Topper8c18e112016-05-17 04:41:50 +00006467#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6468 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6469 (__v2df)(__m128d)(B), \
6470 (__v2df)_mm_setzero_pd(), \
6471 (__mmask8)-1, (int)(imm), \
6472 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006473
Craig Topper8c18e112016-05-17 04:41:50 +00006474#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6475 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6476 (__v2df)(__m128d)(B), \
6477 (__v2df)_mm_setzero_pd(), \
6478 (__mmask8)-1, (int)(imm), \
6479 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006480
Craig Topper8c18e112016-05-17 04:41:50 +00006481#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6482 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6483 (__v2df)(__m128d)(B), \
6484 (__v2df)(__m128d)(W), \
6485 (__mmask8)(U), (int)(imm), \
6486 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006487
Craig Topper8c18e112016-05-17 04:41:50 +00006488#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6489 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6490 (__v2df)(__m128d)(B), \
6491 (__v2df)(__m128d)(W), \
6492 (__mmask8)(U), (int)(I), \
6493 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006494
Craig Topper8c18e112016-05-17 04:41:50 +00006495#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6496 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6497 (__v2df)(__m128d)(B), \
6498 (__v2df)_mm_setzero_pd(), \
6499 (__mmask8)(U), (int)(I), \
6500 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006501
Craig Topper8c18e112016-05-17 04:41:50 +00006502#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6503 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6504 (__v2df)(__m128d)(B), \
6505 (__v2df)_mm_setzero_pd(), \
6506 (__mmask8)(U), (int)(I), \
6507 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006508
Craig Topper8c18e112016-05-17 04:41:50 +00006509#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6510 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6511 (__v4sf)(__m128)(B), \
6512 (__v4sf)_mm_setzero_ps(), \
6513 (__mmask8)-1, (int)(imm), \
6514 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006515
Craig Topper8c18e112016-05-17 04:41:50 +00006516#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6517 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6518 (__v4sf)(__m128)(B), \
6519 (__v4sf)_mm_setzero_ps(), \
6520 (__mmask8)-1, (int)(imm), \
6521 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006522
Craig Topper8c18e112016-05-17 04:41:50 +00006523#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6524 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6525 (__v4sf)(__m128)(B), \
6526 (__v4sf)(__m128)(W), \
6527 (__mmask8)(U), (int)(I), \
6528 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006529
Craig Topper8c18e112016-05-17 04:41:50 +00006530#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6531 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6532 (__v4sf)(__m128)(B), \
6533 (__v4sf)(__m128)(W), \
6534 (__mmask8)(U), (int)(I), \
6535 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006536
Craig Topper8c18e112016-05-17 04:41:50 +00006537#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6538 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6539 (__v4sf)(__m128)(B), \
6540 (__v4sf)_mm_setzero_ps(), \
6541 (__mmask8)(U), (int)(I), \
6542 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006543
Craig Topper8c18e112016-05-17 04:41:50 +00006544#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6545 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6546 (__v4sf)(__m128)(B), \
6547 (__v4sf)_mm_setzero_ps(), \
6548 (__mmask8)(U), (int)(I), \
6549 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006550
Craig Topper8c18e112016-05-17 04:41:50 +00006551#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6552 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6553 (__v8df)(__m512d)(B), \
6554 (__v8df)_mm512_undefined_pd(), \
6555 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006556
Craig Topper8c18e112016-05-17 04:41:50 +00006557#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6558 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6559 (__v8df)(__m512d)(B), \
6560 (__v8df)(__m512d)(W), \
6561 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006562
Craig Topper8c18e112016-05-17 04:41:50 +00006563#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6564 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6565 (__v8df)(__m512d)(B), \
6566 (__v8df)_mm512_setzero_pd(), \
6567 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006568
6569static __inline__ __m512d __DEFAULT_FN_ATTRS
6570_mm512_scalef_pd (__m512d __A, __m512d __B)
6571{
6572 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6573 (__v8df) __B,
6574 (__v8df)
6575 _mm512_undefined_pd (),
6576 (__mmask8) -1,
6577 _MM_FROUND_CUR_DIRECTION);
6578}
6579
6580static __inline__ __m512d __DEFAULT_FN_ATTRS
6581_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6582{
6583 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6584 (__v8df) __B,
6585 (__v8df) __W,
6586 (__mmask8) __U,
6587 _MM_FROUND_CUR_DIRECTION);
6588}
6589
6590static __inline__ __m512d __DEFAULT_FN_ATTRS
6591_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6592{
6593 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6594 (__v8df) __B,
6595 (__v8df)
6596 _mm512_setzero_pd (),
6597 (__mmask8) __U,
6598 _MM_FROUND_CUR_DIRECTION);
6599}
6600
Craig Topper8c18e112016-05-17 04:41:50 +00006601#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6602 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6603 (__v16sf)(__m512)(B), \
6604 (__v16sf)_mm512_undefined_ps(), \
6605 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006606
Craig Topper8c18e112016-05-17 04:41:50 +00006607#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6608 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6609 (__v16sf)(__m512)(B), \
6610 (__v16sf)(__m512)(W), \
6611 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006612
Craig Topper8c18e112016-05-17 04:41:50 +00006613#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6614 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6615 (__v16sf)(__m512)(B), \
6616 (__v16sf)_mm512_setzero_ps(), \
6617 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006618
6619static __inline__ __m512 __DEFAULT_FN_ATTRS
6620_mm512_scalef_ps (__m512 __A, __m512 __B)
6621{
6622 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6623 (__v16sf) __B,
6624 (__v16sf)
6625 _mm512_undefined_ps (),
6626 (__mmask16) -1,
6627 _MM_FROUND_CUR_DIRECTION);
6628}
6629
6630static __inline__ __m512 __DEFAULT_FN_ATTRS
6631_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6632{
6633 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6634 (__v16sf) __B,
6635 (__v16sf) __W,
6636 (__mmask16) __U,
6637 _MM_FROUND_CUR_DIRECTION);
6638}
6639
6640static __inline__ __m512 __DEFAULT_FN_ATTRS
6641_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6642{
6643 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6644 (__v16sf) __B,
6645 (__v16sf)
6646 _mm512_setzero_ps (),
6647 (__mmask16) __U,
6648 _MM_FROUND_CUR_DIRECTION);
6649}
6650
Craig Topper8c18e112016-05-17 04:41:50 +00006651#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6652 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6653 (__v2df)(__m128d)(B), \
6654 (__v2df)_mm_setzero_pd(), \
6655 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006656
6657static __inline__ __m128d __DEFAULT_FN_ATTRS
6658_mm_scalef_sd (__m128d __A, __m128d __B)
6659{
6660 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6661 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6662 (__mmask8) -1,
6663 _MM_FROUND_CUR_DIRECTION);
6664}
6665
6666static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006667_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006668{
6669 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6670 (__v2df) __B,
6671 (__v2df) __W,
6672 (__mmask8) __U,
6673 _MM_FROUND_CUR_DIRECTION);
6674}
6675
Craig Topper8c18e112016-05-17 04:41:50 +00006676#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6677 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6678 (__v2df)(__m128d)(B), \
6679 (__v2df)(__m128d)(W), \
6680 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006681
6682static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006683_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006684{
6685 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6686 (__v2df) __B,
6687 (__v2df) _mm_setzero_pd (),
6688 (__mmask8) __U,
6689 _MM_FROUND_CUR_DIRECTION);
6690}
6691
Craig Topper8c18e112016-05-17 04:41:50 +00006692#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6693 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6694 (__v2df)(__m128d)(B), \
6695 (__v2df)_mm_setzero_pd(), \
6696 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006697
Craig Topper8c18e112016-05-17 04:41:50 +00006698#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6699 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6700 (__v4sf)(__m128)(B), \
6701 (__v4sf)_mm_setzero_ps(), \
6702 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006703
6704static __inline__ __m128 __DEFAULT_FN_ATTRS
6705_mm_scalef_ss (__m128 __A, __m128 __B)
6706{
6707 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6708 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6709 (__mmask8) -1,
6710 _MM_FROUND_CUR_DIRECTION);
6711}
6712
6713static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006714_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006715{
6716 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6717 (__v4sf) __B,
6718 (__v4sf) __W,
6719 (__mmask8) __U,
6720 _MM_FROUND_CUR_DIRECTION);
6721}
6722
Craig Topper8c18e112016-05-17 04:41:50 +00006723#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6724 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6725 (__v4sf)(__m128)(B), \
6726 (__v4sf)(__m128)(W), \
6727 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006728
6729static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006730_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006731{
6732 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6733 (__v4sf) __B,
6734 (__v4sf) _mm_setzero_ps (),
6735 (__mmask8) __U,
6736 _MM_FROUND_CUR_DIRECTION);
6737}
6738
Craig Topper8c18e112016-05-17 04:41:50 +00006739#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6740 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6741 (__v4sf)(__m128)(B), \
6742 (__v4sf)_mm_setzero_ps(), \
6743 (__mmask8)(U), \
6744 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006745
Craig Topper79d05c92016-05-15 20:10:06 +00006746#define _mm512_srai_epi32(A, B) __extension__ ({ \
6747 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6748 (__v16si)_mm512_setzero_si512(), \
6749 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006750
Craig Topper8c18e112016-05-17 04:41:50 +00006751#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6752 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6753 (__v16si)(__m512i)(W), \
6754 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006755
Craig Topper8c18e112016-05-17 04:41:50 +00006756#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6757 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6758 (__v16si)_mm512_setzero_si512(), \
6759 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006760
Craig Topper8c18e112016-05-17 04:41:50 +00006761#define _mm512_srai_epi64(A, B) __extension__ ({ \
6762 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6763 (__v8di)_mm512_setzero_si512(), \
6764 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006765
Craig Topper8c18e112016-05-17 04:41:50 +00006766#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6767 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6768 (__v8di)(__m512i)(W), \
6769 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006770
Craig Topper8c18e112016-05-17 04:41:50 +00006771#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6772 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6773 (__v8di)_mm512_setzero_si512(), \
6774 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006775
Craig Topper8c18e112016-05-17 04:41:50 +00006776#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6777 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6778 (__v16sf)(__m512)(B), (int)(imm), \
6779 (__v16sf)_mm512_undefined_ps(), \
6780 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006781
Craig Topper8c18e112016-05-17 04:41:50 +00006782#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6783 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6784 (__v16sf)(__m512)(B), (int)(imm), \
6785 (__v16sf)(__m512)(W), \
6786 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006787
Craig Topper8c18e112016-05-17 04:41:50 +00006788#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6789 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6790 (__v16sf)(__m512)(B), (int)(imm), \
6791 (__v16sf)_mm512_setzero_ps(), \
6792 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006793
Craig Topper8c18e112016-05-17 04:41:50 +00006794#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6795 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6796 (__v8df)(__m512d)(B), (int)(imm), \
6797 (__v8df)_mm512_undefined_pd(), \
6798 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006799
Craig Topper8c18e112016-05-17 04:41:50 +00006800#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6801 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6802 (__v8df)(__m512d)(B), (int)(imm), \
6803 (__v8df)(__m512d)(W), \
6804 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006805
Craig Topper8c18e112016-05-17 04:41:50 +00006806#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6807 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6808 (__v8df)(__m512d)(B), (int)(imm), \
6809 (__v8df)_mm512_setzero_pd(), \
6810 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006811
Craig Topper8c18e112016-05-17 04:41:50 +00006812#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6813 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6814 (__v16si)(__m512i)(B), (int)(imm), \
6815 (__v16si)_mm512_setzero_si512(), \
6816 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006817
Craig Topper8c18e112016-05-17 04:41:50 +00006818#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6819 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6820 (__v16si)(__m512i)(B), (int)(imm), \
6821 (__v16si)(__m512i)(W), \
6822 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006823
Craig Topper8c18e112016-05-17 04:41:50 +00006824#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6825 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6826 (__v16si)(__m512i)(B), (int)(imm), \
6827 (__v16si)_mm512_setzero_si512(), \
6828 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006829
Craig Topper8c18e112016-05-17 04:41:50 +00006830#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6831 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6832 (__v8di)(__m512i)(B), (int)(imm), \
6833 (__v8di)_mm512_setzero_si512(), \
6834 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006835
Craig Topper8c18e112016-05-17 04:41:50 +00006836#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6837 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6838 (__v8di)(__m512i)(B), (int)(imm), \
6839 (__v8di)(__m512i)(W), \
6840 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006841
Craig Topper8c18e112016-05-17 04:41:50 +00006842#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6843 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6844 (__v8di)(__m512i)(B), (int)(imm), \
6845 (__v8di)_mm512_setzero_si512(), \
6846 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006847
Craig Topper8c18e112016-05-17 04:41:50 +00006848#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6849 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6850 (__v8df)(__m512d)(V), (int)(imm), \
6851 (__v8df)_mm512_undefined_pd(), \
6852 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006853
Craig Topper8c18e112016-05-17 04:41:50 +00006854#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6855 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6856 (__v8df)(__m512d)(V), (int)(imm), \
6857 (__v8df)(__m512d)(W), \
6858 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006859
Craig Topper8c18e112016-05-17 04:41:50 +00006860#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6861 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6862 (__v8df)(__m512d)(V), (int)(imm), \
6863 (__v8df)_mm512_setzero_pd(), \
6864 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006865
Craig Topper8c18e112016-05-17 04:41:50 +00006866#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
6867 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6868 (__v16sf)(__m512)(V), (int)(imm), \
6869 (__v16sf)_mm512_undefined_ps(), \
6870 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006871
Craig Topper8c18e112016-05-17 04:41:50 +00006872#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
6873 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6874 (__v16sf)(__m512)(V), (int)(imm), \
6875 (__v16sf)(__m512)(W), \
6876 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006877
Craig Topper8c18e112016-05-17 04:41:50 +00006878#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
6879 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6880 (__v16sf)(__m512)(V), (int)(imm), \
6881 (__v16sf)_mm512_setzero_ps(), \
6882 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006883
Craig Topper8c18e112016-05-17 04:41:50 +00006884#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
6885 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6886 (__v2df)(__m128d)(A), \
6887 (__v2df)_mm_setzero_pd(), \
6888 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006889
6890static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006891_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006892{
6893 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6894 (__v2df) __A,
6895 (__v2df) __W,
6896 (__mmask8) __U,
6897 _MM_FROUND_CUR_DIRECTION);
6898}
6899
Craig Topper8c18e112016-05-17 04:41:50 +00006900#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
6901 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6902 (__v2df)(__m128d)(A), \
6903 (__v2df)(__m128d)(W), \
6904 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006905
6906static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006907_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006908{
6909 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6910 (__v2df) __A,
6911 (__v2df) _mm_setzero_pd (),
6912 (__mmask8) __U,
6913 _MM_FROUND_CUR_DIRECTION);
6914}
6915
Craig Topper8c18e112016-05-17 04:41:50 +00006916#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
6917 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6918 (__v2df)(__m128d)(A), \
6919 (__v2df)_mm_setzero_pd(), \
6920 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006921
Craig Topper8c18e112016-05-17 04:41:50 +00006922#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
6923 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6924 (__v4sf)(__m128)(A), \
6925 (__v4sf)_mm_setzero_ps(), \
6926 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006927
6928static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006929_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006930{
6931 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6932 (__v4sf) __A,
6933 (__v4sf) __W,
6934 (__mmask8) __U,
6935 _MM_FROUND_CUR_DIRECTION);
6936}
6937
Craig Topper8c18e112016-05-17 04:41:50 +00006938#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
6939 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6940 (__v4sf)(__m128)(A), \
6941 (__v4sf)(__m128)(W), (__mmask8)(U), \
6942 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006943
6944static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006945_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006946{
6947 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6948 (__v4sf) __B,
6949 (__v4sf) _mm_setzero_ps (),
6950 (__mmask8) __U,
6951 _MM_FROUND_CUR_DIRECTION);
6952}
6953
Craig Topper8c18e112016-05-17 04:41:50 +00006954#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
6955 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6956 (__v4sf)(__m128)(A), \
6957 (__v4sf)_mm_setzero_ps(), \
6958 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006959
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006960static __inline__ __m512 __DEFAULT_FN_ATTRS
6961_mm512_broadcast_f32x4 (__m128 __A)
6962{
6963 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6964 (__v16sf)
6965 _mm512_undefined_ps (),
6966 (__mmask16) -1);
6967}
6968
6969static __inline__ __m512 __DEFAULT_FN_ATTRS
6970_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6971{
6972 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6973 (__v16sf) __O,
6974 __M);
6975}
6976
6977static __inline__ __m512 __DEFAULT_FN_ATTRS
6978_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6979{
6980 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6981 (__v16sf)
6982 _mm512_setzero_ps (),
6983 __M);
6984}
6985
6986static __inline__ __m512d __DEFAULT_FN_ATTRS
6987_mm512_broadcast_f64x4 (__m256d __A)
6988{
6989 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6990 (__v8df)
6991 _mm512_undefined_pd (),
6992 (__mmask8) -1);
6993}
6994
6995static __inline__ __m512d __DEFAULT_FN_ATTRS
6996_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6997{
6998 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6999 (__v8df) __O,
7000 __M);
7001}
7002
7003static __inline__ __m512d __DEFAULT_FN_ATTRS
7004_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
7005{
7006 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7007 (__v8df)
7008 _mm512_setzero_pd (),
7009 __M);
7010}
7011
7012static __inline__ __m512i __DEFAULT_FN_ATTRS
7013_mm512_broadcast_i32x4 (__m128i __A)
7014{
7015 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7016 (__v16si)
7017 _mm512_undefined_epi32 (),
7018 (__mmask16) -1);
7019}
7020
7021static __inline__ __m512i __DEFAULT_FN_ATTRS
7022_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7023{
7024 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7025 (__v16si) __O,
7026 __M);
7027}
7028
7029static __inline__ __m512i __DEFAULT_FN_ATTRS
7030_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7031{
7032 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7033 (__v16si)
7034 _mm512_setzero_si512 (),
7035 __M);
7036}
7037
7038static __inline__ __m512i __DEFAULT_FN_ATTRS
7039_mm512_broadcast_i64x4 (__m256i __A)
7040{
7041 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7042 (__v8di)
7043 _mm512_undefined_epi32 (),
7044 (__mmask8) -1);
7045}
7046
7047static __inline__ __m512i __DEFAULT_FN_ATTRS
7048_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7049{
7050 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7051 (__v8di) __O,
7052 __M);
7053}
7054
7055static __inline__ __m512i __DEFAULT_FN_ATTRS
7056_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7057{
7058 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7059 (__v8di)
7060 _mm512_setzero_si512 (),
7061 __M);
7062}
7063
7064static __inline__ __m512d __DEFAULT_FN_ATTRS
7065_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7066{
7067 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7068 (__v8df) __O, __M);
7069}
7070
7071static __inline__ __m512d __DEFAULT_FN_ATTRS
7072_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7073{
7074 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7075 (__v8df)
7076 _mm512_setzero_pd (),
7077 __M);
7078}
7079
7080static __inline__ __m512 __DEFAULT_FN_ATTRS
7081_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7082{
7083 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7084 (__v16sf) __O, __M);
7085}
7086
7087static __inline__ __m512 __DEFAULT_FN_ATTRS
7088_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7089{
7090 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7091 (__v16sf)
7092 _mm512_setzero_ps (),
7093 __M);
7094}
7095
Michael Zuckermane1680612016-04-13 15:02:04 +00007096static __inline__ __m128i __DEFAULT_FN_ATTRS
7097_mm512_cvtsepi32_epi8 (__m512i __A)
7098{
7099 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7100 (__v16qi) _mm_undefined_si128 (),
7101 (__mmask16) -1);
7102}
7103
7104static __inline__ __m128i __DEFAULT_FN_ATTRS
7105_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7106{
7107 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7108 (__v16qi) __O, __M);
7109}
7110
7111static __inline__ __m128i __DEFAULT_FN_ATTRS
7112_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7113{
7114 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7115 (__v16qi) _mm_setzero_si128 (),
7116 __M);
7117}
7118
7119static __inline__ void __DEFAULT_FN_ATTRS
7120_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7121{
7122 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7123}
7124
7125static __inline__ __m256i __DEFAULT_FN_ATTRS
7126_mm512_cvtsepi32_epi16 (__m512i __A)
7127{
7128 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7129 (__v16hi) _mm256_undefined_si256 (),
7130 (__mmask16) -1);
7131}
7132
7133static __inline__ __m256i __DEFAULT_FN_ATTRS
7134_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7135{
7136 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7137 (__v16hi) __O, __M);
7138}
7139
7140static __inline__ __m256i __DEFAULT_FN_ATTRS
7141_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7142{
7143 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7144 (__v16hi) _mm256_setzero_si256 (),
7145 __M);
7146}
7147
7148static __inline__ void __DEFAULT_FN_ATTRS
7149_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7150{
7151 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7152}
7153
7154static __inline__ __m128i __DEFAULT_FN_ATTRS
7155_mm512_cvtsepi64_epi8 (__m512i __A)
7156{
7157 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7158 (__v16qi) _mm_undefined_si128 (),
7159 (__mmask8) -1);
7160}
7161
7162static __inline__ __m128i __DEFAULT_FN_ATTRS
7163_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7164{
7165 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7166 (__v16qi) __O, __M);
7167}
7168
7169static __inline__ __m128i __DEFAULT_FN_ATTRS
7170_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7171{
7172 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7173 (__v16qi) _mm_setzero_si128 (),
7174 __M);
7175}
7176
7177static __inline__ void __DEFAULT_FN_ATTRS
7178_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7179{
7180 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7181}
7182
7183static __inline__ __m256i __DEFAULT_FN_ATTRS
7184_mm512_cvtsepi64_epi32 (__m512i __A)
7185{
7186 __v8si __O;
7187 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7188 (__v8si) _mm256_undefined_si256 (),
7189 (__mmask8) -1);
7190}
7191
7192static __inline__ __m256i __DEFAULT_FN_ATTRS
7193_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7194{
7195 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7196 (__v8si) __O, __M);
7197}
7198
7199static __inline__ __m256i __DEFAULT_FN_ATTRS
7200_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7201{
7202 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7203 (__v8si) _mm256_setzero_si256 (),
7204 __M);
7205}
7206
7207static __inline__ void __DEFAULT_FN_ATTRS
7208_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7209{
7210 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7211}
7212
7213static __inline__ __m128i __DEFAULT_FN_ATTRS
7214_mm512_cvtsepi64_epi16 (__m512i __A)
7215{
7216 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7217 (__v8hi) _mm_undefined_si128 (),
7218 (__mmask8) -1);
7219}
7220
7221static __inline__ __m128i __DEFAULT_FN_ATTRS
7222_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7223{
7224 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7225 (__v8hi) __O, __M);
7226}
7227
7228static __inline__ __m128i __DEFAULT_FN_ATTRS
7229_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7230{
7231 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7232 (__v8hi) _mm_setzero_si128 (),
7233 __M);
7234}
7235
7236static __inline__ void __DEFAULT_FN_ATTRS
7237_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7238{
7239 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7240}
7241
Michael Zuckermand8715312016-04-14 06:48:09 +00007242static __inline__ __m128i __DEFAULT_FN_ATTRS
7243_mm512_cvtusepi32_epi8 (__m512i __A)
7244{
7245 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7246 (__v16qi) _mm_undefined_si128 (),
7247 (__mmask16) -1);
7248}
7249
7250static __inline__ __m128i __DEFAULT_FN_ATTRS
7251_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7252{
7253 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7254 (__v16qi) __O,
7255 __M);
7256}
7257
7258static __inline__ __m128i __DEFAULT_FN_ATTRS
7259_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7260{
7261 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7262 (__v16qi) _mm_setzero_si128 (),
7263 __M);
7264}
7265
7266static __inline__ void __DEFAULT_FN_ATTRS
7267_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7268{
7269 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7270}
7271
7272static __inline__ __m256i __DEFAULT_FN_ATTRS
7273_mm512_cvtusepi32_epi16 (__m512i __A)
7274{
7275 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7276 (__v16hi) _mm256_undefined_si256 (),
7277 (__mmask16) -1);
7278}
7279
7280static __inline__ __m256i __DEFAULT_FN_ATTRS
7281_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7282{
7283 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7284 (__v16hi) __O,
7285 __M);
7286}
7287
7288static __inline__ __m256i __DEFAULT_FN_ATTRS
7289_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7290{
7291 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7292 (__v16hi) _mm256_setzero_si256 (),
7293 __M);
7294}
7295
7296static __inline__ void __DEFAULT_FN_ATTRS
7297_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7298{
7299 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7300}
7301
7302static __inline__ __m128i __DEFAULT_FN_ATTRS
7303_mm512_cvtusepi64_epi8 (__m512i __A)
7304{
7305 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7306 (__v16qi) _mm_undefined_si128 (),
7307 (__mmask8) -1);
7308}
7309
7310static __inline__ __m128i __DEFAULT_FN_ATTRS
7311_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7312{
7313 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7314 (__v16qi) __O,
7315 __M);
7316}
7317
7318static __inline__ __m128i __DEFAULT_FN_ATTRS
7319_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7320{
7321 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7322 (__v16qi) _mm_setzero_si128 (),
7323 __M);
7324}
7325
7326static __inline__ void __DEFAULT_FN_ATTRS
7327_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7328{
7329 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7330}
7331
7332static __inline__ __m256i __DEFAULT_FN_ATTRS
7333_mm512_cvtusepi64_epi32 (__m512i __A)
7334{
7335 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7336 (__v8si) _mm256_undefined_si256 (),
7337 (__mmask8) -1);
7338}
7339
7340static __inline__ __m256i __DEFAULT_FN_ATTRS
7341_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7342{
7343 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7344 (__v8si) __O, __M);
7345}
7346
7347static __inline__ __m256i __DEFAULT_FN_ATTRS
7348_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7349{
7350 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7351 (__v8si) _mm256_setzero_si256 (),
7352 __M);
7353}
7354
7355static __inline__ void __DEFAULT_FN_ATTRS
7356_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7357{
7358 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7359}
7360
7361static __inline__ __m128i __DEFAULT_FN_ATTRS
7362_mm512_cvtusepi64_epi16 (__m512i __A)
7363{
7364 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7365 (__v8hi) _mm_undefined_si128 (),
7366 (__mmask8) -1);
7367}
7368
7369static __inline__ __m128i __DEFAULT_FN_ATTRS
7370_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7371{
7372 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7373 (__v8hi) __O, __M);
7374}
7375
7376static __inline__ __m128i __DEFAULT_FN_ATTRS
7377_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7378{
7379 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7380 (__v8hi) _mm_setzero_si128 (),
7381 __M);
7382}
7383
7384static __inline__ void __DEFAULT_FN_ATTRS
7385_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7386{
7387 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7388}
7389
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007390static __inline__ __m128i __DEFAULT_FN_ATTRS
7391_mm512_cvtepi32_epi8 (__m512i __A)
7392{
7393 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7394 (__v16qi) _mm_undefined_si128 (),
7395 (__mmask16) -1);
7396}
7397
7398static __inline__ __m128i __DEFAULT_FN_ATTRS
7399_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7400{
7401 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7402 (__v16qi) __O, __M);
7403}
7404
7405static __inline__ __m128i __DEFAULT_FN_ATTRS
7406_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7407{
7408 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7409 (__v16qi) _mm_setzero_si128 (),
7410 __M);
7411}
7412
7413static __inline__ void __DEFAULT_FN_ATTRS
7414_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7415{
7416 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7417}
7418
7419static __inline__ __m256i __DEFAULT_FN_ATTRS
7420_mm512_cvtepi32_epi16 (__m512i __A)
7421{
7422 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7423 (__v16hi) _mm256_undefined_si256 (),
7424 (__mmask16) -1);
7425}
7426
7427static __inline__ __m256i __DEFAULT_FN_ATTRS
7428_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7429{
7430 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7431 (__v16hi) __O, __M);
7432}
7433
7434static __inline__ __m256i __DEFAULT_FN_ATTRS
7435_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7436{
7437 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7438 (__v16hi) _mm256_setzero_si256 (),
7439 __M);
7440}
7441
7442static __inline__ void __DEFAULT_FN_ATTRS
7443_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7444{
7445 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7446}
7447
7448static __inline__ __m128i __DEFAULT_FN_ATTRS
7449_mm512_cvtepi64_epi8 (__m512i __A)
7450{
7451 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7452 (__v16qi) _mm_undefined_si128 (),
7453 (__mmask8) -1);
7454}
7455
7456static __inline__ __m128i __DEFAULT_FN_ATTRS
7457_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7458{
7459 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7460 (__v16qi) __O, __M);
7461}
7462
7463static __inline__ __m128i __DEFAULT_FN_ATTRS
7464_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7465{
7466 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7467 (__v16qi) _mm_setzero_si128 (),
7468 __M);
7469}
7470
7471static __inline__ void __DEFAULT_FN_ATTRS
7472_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7473{
7474 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7475}
7476
7477static __inline__ __m256i __DEFAULT_FN_ATTRS
7478_mm512_cvtepi64_epi32 (__m512i __A)
7479{
7480 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7481 (__v8si) _mm256_undefined_si256 (),
7482 (__mmask8) -1);
7483}
7484
7485static __inline__ __m256i __DEFAULT_FN_ATTRS
7486_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7487{
7488 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7489 (__v8si) __O, __M);
7490}
7491
7492static __inline__ __m256i __DEFAULT_FN_ATTRS
7493_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7494{
7495 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7496 (__v8si) _mm256_setzero_si256 (),
7497 __M);
7498}
7499
7500static __inline__ void __DEFAULT_FN_ATTRS
7501_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7502{
7503 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7504}
7505
7506static __inline__ __m128i __DEFAULT_FN_ATTRS
7507_mm512_cvtepi64_epi16 (__m512i __A)
7508{
7509 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7510 (__v8hi) _mm_undefined_si128 (),
7511 (__mmask8) -1);
7512}
7513
7514static __inline__ __m128i __DEFAULT_FN_ATTRS
7515_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7516{
7517 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7518 (__v8hi) __O, __M);
7519}
7520
7521static __inline__ __m128i __DEFAULT_FN_ATTRS
7522_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7523{
7524 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7525 (__v8hi) _mm_setzero_si128 (),
7526 __M);
7527}
7528
7529static __inline__ void __DEFAULT_FN_ATTRS
7530_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7531{
7532 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7533}
7534
Craig Topper8c18e112016-05-17 04:41:50 +00007535#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7536 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7537 (__v4si)_mm_undefined_si128(), \
7538 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007539
Craig Topper8c18e112016-05-17 04:41:50 +00007540#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7541 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7542 (__v4si)(__m128i)(W), \
7543 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007544
Craig Topper8c18e112016-05-17 04:41:50 +00007545#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7546 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7547 (__v4si)_mm_setzero_si128(), \
7548 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007549
Craig Topper8c18e112016-05-17 04:41:50 +00007550#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7551 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7552 (__v4di)_mm256_undefined_si256(), \
7553 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007554
Craig Topper8c18e112016-05-17 04:41:50 +00007555#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7556 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7557 (__v4di)(__m256i)(W), \
7558 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007559
Craig Topper8c18e112016-05-17 04:41:50 +00007560#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7561 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7562 (__v4di)_mm256_setzero_si256(), \
7563 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007564
Craig Topper8c18e112016-05-17 04:41:50 +00007565#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7566 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7567 (__v4df)(__m256d)(B), (int)(imm), \
7568 (__v8df)_mm512_undefined_pd(), \
7569 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007570
Craig Topper8c18e112016-05-17 04:41:50 +00007571#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7572 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7573 (__v4df)(__m256d)(B), (int)(imm), \
7574 (__v8df)(__m512d)(W), \
7575 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007576
Craig Topper8c18e112016-05-17 04:41:50 +00007577#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7578 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7579 (__v4df)(__m256d)(B), (int)(imm), \
7580 (__v8df)_mm512_setzero_pd(), \
7581 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007582
Craig Topper8c18e112016-05-17 04:41:50 +00007583#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7584 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7585 (__v4di)(__m256i)(B), (int)(imm), \
7586 (__v8di)_mm512_setzero_si512(), \
7587 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007588
Craig Topper8c18e112016-05-17 04:41:50 +00007589#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7590 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7591 (__v4di)(__m256i)(B), (int)(imm), \
7592 (__v8di)(__m512i)(W), \
7593 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007594
Craig Topper8c18e112016-05-17 04:41:50 +00007595#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7596 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7597 (__v4di)(__m256i)(B), (int)(imm), \
7598 (__v8di)_mm512_setzero_si512(), \
7599 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007600
Craig Topper8c18e112016-05-17 04:41:50 +00007601#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7602 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7603 (__v4sf)(__m128)(B), (int)(imm), \
7604 (__v16sf)_mm512_undefined_ps(), \
7605 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007606
Craig Topper8c18e112016-05-17 04:41:50 +00007607#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7608 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7609 (__v4sf)(__m128)(B), (int)(imm), \
7610 (__v16sf)(__m512)(W), \
7611 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007612
Craig Topper8c18e112016-05-17 04:41:50 +00007613#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7614 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7615 (__v4sf)(__m128)(B), (int)(imm), \
7616 (__v16sf)_mm512_setzero_ps(), \
7617 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007618
Craig Topper8c18e112016-05-17 04:41:50 +00007619#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7620 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7621 (__v4si)(__m128i)(B), (int)(imm), \
7622 (__v16si)_mm512_setzero_si512(), \
7623 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007624
Craig Topper8c18e112016-05-17 04:41:50 +00007625#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7626 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7627 (__v4si)(__m128i)(B), (int)(imm), \
7628 (__v16si)(__m512i)(W), \
7629 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007630
Craig Topper8c18e112016-05-17 04:41:50 +00007631#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7632 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7633 (__v4si)(__m128i)(B), (int)(imm), \
7634 (__v16si)_mm512_setzero_si512(), \
7635 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007636
Craig Topper8c18e112016-05-17 04:41:50 +00007637#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7638 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7639 (int)(((C)<<2) | (B)), \
7640 (__v8df)_mm512_undefined_pd(), \
7641 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007642
Craig Topper8c18e112016-05-17 04:41:50 +00007643#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7644 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7645 (int)(((C)<<2) | (B)), \
7646 (__v8df)(__m512d)(W), \
7647 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007648
Craig Topper8c18e112016-05-17 04:41:50 +00007649#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7650 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7651 (int)(((C)<<2) | (B)), \
7652 (__v8df)_mm512_setzero_pd(), \
7653 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007654
Craig Topper8c18e112016-05-17 04:41:50 +00007655#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7656 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7657 (int)(((C)<<2) | (B)), \
7658 (__v8df)_mm512_setzero_pd(), \
7659 (__mmask8)-1, \
7660 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007661
Craig Topper8c18e112016-05-17 04:41:50 +00007662#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7663 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7664 (int)(((C)<<2) | (B)), \
7665 (__v8df)(__m512d)(W), \
7666 (__mmask8)(U), \
7667 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007668
Craig Topper8c18e112016-05-17 04:41:50 +00007669#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7670 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7671 (int)(((C)<<2) | (B)), \
7672 (__v8df)_mm512_setzero_pd(), \
7673 (__mmask8)(U), \
7674 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007675
Craig Topper8c18e112016-05-17 04:41:50 +00007676#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7677 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7678 (int)(((C)<<2) | (B)), \
7679 (__v16sf)_mm512_undefined_ps(), \
7680 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007681
Craig Topper8c18e112016-05-17 04:41:50 +00007682#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7683 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7684 (int)(((C)<<2) | (B)), \
7685 (__v16sf)(__m512)(W), \
7686 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007687
Craig Topper8c18e112016-05-17 04:41:50 +00007688#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7689 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7690 (int)(((C)<<2) | (B)), \
7691 (__v16sf)_mm512_setzero_ps(), \
7692 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007693
Craig Topper8c18e112016-05-17 04:41:50 +00007694#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7695 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7696 (int)(((C)<<2)|(B)), \
7697 (__v16sf)_mm512_undefined_ps(), \
7698 (__mmask16)-1, \
7699 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007700
Craig Topper8c18e112016-05-17 04:41:50 +00007701#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7702 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7703 (int)(((C)<<2)|(B)), \
7704 (__v16sf)(__m512)(W), \
7705 (__mmask16)(U), \
7706 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007707
Craig Topper8c18e112016-05-17 04:41:50 +00007708#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7709 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7710 (int)(((C)<<2)|(B)), \
7711 (__v16sf)_mm512_setzero_ps(), \
7712 (__mmask16)(U), \
7713 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007714
Craig Topper8c18e112016-05-17 04:41:50 +00007715#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7716 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7717 (__v8df)_mm512_undefined_pd(), \
7718 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007719
Craig Topper8c18e112016-05-17 04:41:50 +00007720#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7721 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7722 (__v8df)(__m512d)(W), \
7723 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007724
Craig Topper8c18e112016-05-17 04:41:50 +00007725#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7726 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7727 (__v8df)_mm512_setzero_pd(), \
7728 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007729
7730static __inline__ __m512d __DEFAULT_FN_ATTRS
7731_mm512_getexp_pd (__m512d __A)
7732{
7733 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7734 (__v8df) _mm512_undefined_pd (),
7735 (__mmask8) -1,
7736 _MM_FROUND_CUR_DIRECTION);
7737}
7738
7739static __inline__ __m512d __DEFAULT_FN_ATTRS
7740_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7741{
7742 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7743 (__v8df) __W,
7744 (__mmask8) __U,
7745 _MM_FROUND_CUR_DIRECTION);
7746}
7747
7748static __inline__ __m512d __DEFAULT_FN_ATTRS
7749_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7750{
7751 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7752 (__v8df) _mm512_setzero_pd (),
7753 (__mmask8) __U,
7754 _MM_FROUND_CUR_DIRECTION);
7755}
7756
Craig Topper8c18e112016-05-17 04:41:50 +00007757#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7758 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7759 (__v16sf)_mm512_undefined_ps(), \
7760 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007761
Craig Topper8c18e112016-05-17 04:41:50 +00007762#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7763 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7764 (__v16sf)(__m512)(W), \
7765 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007766
Craig Topper8c18e112016-05-17 04:41:50 +00007767#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7768 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7769 (__v16sf)_mm512_setzero_ps(), \
7770 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007771
7772static __inline__ __m512 __DEFAULT_FN_ATTRS
7773_mm512_getexp_ps (__m512 __A)
7774{
7775 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7776 (__v16sf) _mm512_undefined_ps (),
7777 (__mmask16) -1,
7778 _MM_FROUND_CUR_DIRECTION);
7779}
7780
7781static __inline__ __m512 __DEFAULT_FN_ATTRS
7782_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7783{
7784 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7785 (__v16sf) __W,
7786 (__mmask16) __U,
7787 _MM_FROUND_CUR_DIRECTION);
7788}
7789
7790static __inline__ __m512 __DEFAULT_FN_ATTRS
7791_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7792{
7793 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7794 (__v16sf) _mm512_setzero_ps (),
7795 (__mmask16) __U,
7796 _MM_FROUND_CUR_DIRECTION);
7797}
7798
Craig Topper8c18e112016-05-17 04:41:50 +00007799#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7800 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7801 (float const *)(addr), \
7802 (__v8di)(__m512i)(index), (__mmask8)-1, \
7803 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007804
7805#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7806 __addr, __scale) __extension__({\
7807__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7808 __addr,(__v8di) __index, __mask, __scale);\
7809})
7810
Craig Topper8c18e112016-05-17 04:41:50 +00007811#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7812 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7813 (int const *)(addr), \
7814 (__v8di)(__m512i)(index), \
7815 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007816
Craig Topper8c18e112016-05-17 04:41:50 +00007817#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7818 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7819 (int const *)(addr), \
7820 (__v8di)(__m512i)(index), \
7821 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007822
Craig Topper8c18e112016-05-17 04:41:50 +00007823#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7824 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7825 (double const *)(addr), \
7826 (__v8di)(__m512i)(index), (__mmask8)-1, \
7827 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007828
Craig Topper8c18e112016-05-17 04:41:50 +00007829#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7830 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7831 (double const *)(addr), \
7832 (__v8di)(__m512i)(index), \
7833 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007834
Craig Topper8c18e112016-05-17 04:41:50 +00007835#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7836 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7837 (long long const *)(addr), \
7838 (__v8di)(__m512i)(index), (__mmask8)-1, \
7839 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007840
Craig Topper8c18e112016-05-17 04:41:50 +00007841#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7842 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7843 (long long const *)(addr), \
7844 (__v8di)(__m512i)(index), \
7845 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007846
Craig Topper8c18e112016-05-17 04:41:50 +00007847#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7848 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7849 (float const *)(addr), \
7850 (__v16sf)(__m512)(index), \
7851 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007852
Craig Topper8c18e112016-05-17 04:41:50 +00007853#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7854 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7855 (float const *)(addr), \
7856 (__v16sf)(__m512)(index), \
7857 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007858
Craig Topper8c18e112016-05-17 04:41:50 +00007859#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7860 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7861 (int const *)(addr), \
7862 (__v16si)(__m512i)(index), \
7863 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007864
Craig Topper8c18e112016-05-17 04:41:50 +00007865#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7866 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
7867 (int const *)(addr), \
7868 (__v16si)(__m512i)(index), \
7869 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007870
Craig Topper8c18e112016-05-17 04:41:50 +00007871#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
7872 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
7873 (double const *)(addr), \
7874 (__v8si)(__m256i)(index), (__mmask8)-1, \
7875 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007876
Craig Topper8c18e112016-05-17 04:41:50 +00007877#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7878 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
7879 (double const *)(addr), \
7880 (__v8si)(__m256i)(index), \
7881 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007882
Craig Topper8c18e112016-05-17 04:41:50 +00007883#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
7884 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
7885 (long long const *)(addr), \
7886 (__v8si)(__m256i)(index), (__mmask8)-1, \
7887 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007888
Craig Topper8c18e112016-05-17 04:41:50 +00007889#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7890 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
7891 (long long const *)(addr), \
7892 (__v8si)(__m256i)(index), \
7893 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007894
Craig Topper8c18e112016-05-17 04:41:50 +00007895#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
7896 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
7897 (__v8di)(__m512i)(index), \
7898 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007899
Craig Topper8c18e112016-05-17 04:41:50 +00007900#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7901 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
7902 (__v8di)(__m512i)(index), \
7903 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007904
Craig Topper8c18e112016-05-17 04:41:50 +00007905#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
7906 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
7907 (__v8di)(__m512i)(index), \
7908 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007909
Craig Topper8c18e112016-05-17 04:41:50 +00007910#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7911 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
7912 (__v8di)(__m512i)(index), \
7913 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007914
Craig Topper8c18e112016-05-17 04:41:50 +00007915#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
7916 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
7917 (__v8di)(__m512i)(index), \
7918 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007919
Craig Topper8c18e112016-05-17 04:41:50 +00007920#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7921 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
7922 (__v8di)(__m512i)(index), \
7923 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007924
Craig Topper8c18e112016-05-17 04:41:50 +00007925#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
7926 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
7927 (__v8di)(__m512i)(index), \
7928 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007929
Craig Topper8c18e112016-05-17 04:41:50 +00007930#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7931 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
7932 (__v8di)(__m512i)(index), \
7933 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007934
Craig Topper8c18e112016-05-17 04:41:50 +00007935#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
7936 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
7937 (__v16si)(__m512i)(index), \
7938 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007939
Craig Topper8c18e112016-05-17 04:41:50 +00007940#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7941 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
7942 (__v16si)(__m512i)(index), \
7943 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007944
Craig Topper8c18e112016-05-17 04:41:50 +00007945#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
7946 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
7947 (__v16si)(__m512i)(index), \
7948 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007949
Craig Topper8c18e112016-05-17 04:41:50 +00007950#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7951 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
7952 (__v16si)(__m512i)(index), \
7953 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007954
Craig Topper8c18e112016-05-17 04:41:50 +00007955#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
7956 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
7957 (__v8si)(__m256i)(index), \
7958 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007959
Craig Topper8c18e112016-05-17 04:41:50 +00007960#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7961 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
7962 (__v8si)(__m256i)(index), \
7963 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007964
Craig Topper8c18e112016-05-17 04:41:50 +00007965#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
7966 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
7967 (__v8si)(__m256i)(index), \
7968 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007969
Craig Topper8c18e112016-05-17 04:41:50 +00007970#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7971 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
7972 (__v8si)(__m256i)(index), \
7973 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007974
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007975static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007976_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007977{
7978 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7979 (__v4sf) __B,
7980 (__v4sf) __W,
7981 (__mmask8) __U,
7982 _MM_FROUND_CUR_DIRECTION);
7983}
7984
Craig Topper8c18e112016-05-17 04:41:50 +00007985#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
7986 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7987 (__v4sf)(__m128)(B), \
7988 (__v4sf)(__m128)(W), (__mmask8)(U), \
7989 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007990
7991static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007992_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007993{
7994 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7995 (__v4sf) __B,
7996 (__v4sf) __C,
7997 (__mmask8) __U,
7998 _MM_FROUND_CUR_DIRECTION);
7999}
8000
Craig Topper8c18e112016-05-17 04:41:50 +00008001#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
8002 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8003 (__v4sf)(__m128)(B), \
8004 (__v4sf)(__m128)(C), (__mmask8)(U), \
8005 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008006
8007static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008008_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008009{
8010 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8011 (__v4sf) __X,
8012 (__v4sf) __Y,
8013 (__mmask8) __U,
8014 _MM_FROUND_CUR_DIRECTION);
8015}
8016
Craig Topper8c18e112016-05-17 04:41:50 +00008017#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8018 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8019 (__v4sf)(__m128)(X), \
8020 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8021 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008022
8023static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008024_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008025{
8026 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008027 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008028 (__v4sf) __W,
8029 (__mmask8) __U,
8030 _MM_FROUND_CUR_DIRECTION);
8031}
8032
Craig Topper8c18e112016-05-17 04:41:50 +00008033#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8034 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8035 -(__v4sf)(__m128)(B), \
8036 (__v4sf)(__m128)(W), (__mmask8)(U), \
8037 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008038
8039static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008040_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008041{
8042 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8043 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008044 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008045 (__mmask8) __U,
8046 _MM_FROUND_CUR_DIRECTION);
8047}
8048
Craig Topper8c18e112016-05-17 04:41:50 +00008049#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8050 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8051 (__v4sf)(__m128)(B), \
8052 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8053 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008054
8055static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008056_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008057{
8058 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8059 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008060 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008061 (__mmask8) __U,
8062 _MM_FROUND_CUR_DIRECTION);
8063}
8064
Craig Topper8c18e112016-05-17 04:41:50 +00008065#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8066 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8067 (__v4sf)(__m128)(X), \
8068 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8069 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008070
8071static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008072_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008073{
Craig Topper9864c592016-05-15 20:10:03 +00008074 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008075 (__v4sf) __B,
8076 (__v4sf) __W,
8077 (__mmask8) __U,
8078 _MM_FROUND_CUR_DIRECTION);
8079}
8080
Craig Topper8c18e112016-05-17 04:41:50 +00008081#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8082 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8083 (__v4sf)(__m128)(B), \
8084 (__v4sf)(__m128)(W), (__mmask8)(U), \
8085 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008086
8087static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008088_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008089{
Craig Topper9864c592016-05-15 20:10:03 +00008090 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008091 (__v4sf) __B,
8092 (__v4sf) __C,
8093 (__mmask8) __U,
8094 _MM_FROUND_CUR_DIRECTION);
8095}
8096
Craig Topper8c18e112016-05-17 04:41:50 +00008097#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8098 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8099 (__v4sf)(__m128)(B), \
8100 (__v4sf)(__m128)(C), (__mmask8)(U), \
8101 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008102
8103static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008104_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008105{
Craig Topper9864c592016-05-15 20:10:03 +00008106 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008107 (__v4sf) __X,
8108 (__v4sf) __Y,
8109 (__mmask8) __U,
8110 _MM_FROUND_CUR_DIRECTION);
8111}
8112
Craig Topper8c18e112016-05-17 04:41:50 +00008113#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8114 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8115 (__v4sf)(__m128)(X), \
8116 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8117 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008118
8119static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008120_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008121{
Craig Topper9864c592016-05-15 20:10:03 +00008122 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8123 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008124 (__v4sf) __W,
8125 (__mmask8) __U,
8126 _MM_FROUND_CUR_DIRECTION);
8127}
8128
Craig Topper8c18e112016-05-17 04:41:50 +00008129#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8130 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8131 -(__v4sf)(__m128)(B), \
8132 (__v4sf)(__m128)(W), (__mmask8)(U), \
8133 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008134
8135static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008136_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008137{
Craig Topper9864c592016-05-15 20:10:03 +00008138 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008139 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008140 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008141 (__mmask8) __U,
8142 _MM_FROUND_CUR_DIRECTION);
8143}
8144
Craig Topper8c18e112016-05-17 04:41:50 +00008145#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8146 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8147 (__v4sf)(__m128)(B), \
8148 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8149 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008150
8151static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008152_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008153{
Craig Topper9864c592016-05-15 20:10:03 +00008154 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008155 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008156 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008157 (__mmask8) __U,
8158 _MM_FROUND_CUR_DIRECTION);
8159}
8160
Craig Topper8c18e112016-05-17 04:41:50 +00008161#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8162 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8163 (__v4sf)(__m128)(X), \
8164 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8165 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008166
Craig Topper58187d32016-05-17 04:41:29 +00008167static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008168_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008169{
Craig Topper58187d32016-05-17 04:41:29 +00008170 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008171 (__v2df) __B,
8172 (__v2df) __W,
8173 (__mmask8) __U,
8174 _MM_FROUND_CUR_DIRECTION);
8175}
8176
Craig Topper8c18e112016-05-17 04:41:50 +00008177#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8178 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8179 (__v2df)(__m128d)(B), \
8180 (__v2df)(__m128d)(W), (__mmask8)(U), \
8181 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008182
Craig Topper58187d32016-05-17 04:41:29 +00008183static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008184_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008185{
Craig Topper58187d32016-05-17 04:41:29 +00008186 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008187 (__v2df) __B,
8188 (__v2df) __C,
8189 (__mmask8) __U,
8190 _MM_FROUND_CUR_DIRECTION);
8191}
8192
Craig Topper8c18e112016-05-17 04:41:50 +00008193#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8194 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8195 (__v2df)(__m128d)(B), \
8196 (__v2df)(__m128d)(C), (__mmask8)(U), \
8197 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008198
Craig Topper58187d32016-05-17 04:41:29 +00008199static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008200_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008201{
Craig Topper58187d32016-05-17 04:41:29 +00008202 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008203 (__v2df) __X,
8204 (__v2df) __Y,
8205 (__mmask8) __U,
8206 _MM_FROUND_CUR_DIRECTION);
8207}
8208
Craig Topper8c18e112016-05-17 04:41:50 +00008209#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8210 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8211 (__v2df)(__m128d)(X), \
8212 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8213 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008214
Craig Topper58187d32016-05-17 04:41:29 +00008215static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008216_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008217{
Craig Topper58187d32016-05-17 04:41:29 +00008218 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008219 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008220 (__v2df) __W,
8221 (__mmask8) __U,
8222 _MM_FROUND_CUR_DIRECTION);
8223}
8224
Craig Topper8c18e112016-05-17 04:41:50 +00008225#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8226 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8227 -(__v2df)(__m128d)(B), \
8228 (__v2df)(__m128d)(W), (__mmask8)(U), \
8229 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008230
Craig Topper58187d32016-05-17 04:41:29 +00008231static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008232_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008233{
Craig Topper58187d32016-05-17 04:41:29 +00008234 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008235 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008236 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008237 (__mmask8) __U,
8238 _MM_FROUND_CUR_DIRECTION);
8239}
8240
Craig Topper8c18e112016-05-17 04:41:50 +00008241#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8242 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8243 (__v2df)(__m128d)(B), \
8244 -(__v2df)(__m128d)(C), \
8245 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008246
Craig Topper58187d32016-05-17 04:41:29 +00008247static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008248_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008249{
Craig Topper58187d32016-05-17 04:41:29 +00008250 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008251 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008252 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008253 (__mmask8) __U,
8254 _MM_FROUND_CUR_DIRECTION);
8255}
8256
Craig Topper8c18e112016-05-17 04:41:50 +00008257#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8258 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8259 (__v2df)(__m128d)(X), \
8260 -(__v2df)(__m128d)(Y), \
8261 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008262
Craig Topper58187d32016-05-17 04:41:29 +00008263static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008264_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008265{
Craig Topper58187d32016-05-17 04:41:29 +00008266 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008267 (__v2df) __B,
8268 (__v2df) __W,
8269 (__mmask8) __U,
8270 _MM_FROUND_CUR_DIRECTION);
8271}
8272
Craig Topper8c18e112016-05-17 04:41:50 +00008273#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8274 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8275 (__v2df)(__m128d)(B), \
8276 (__v2df)(__m128d)(W), (__mmask8)(U), \
8277 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008278
Craig Topper58187d32016-05-17 04:41:29 +00008279static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008280_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008281{
Craig Topper58187d32016-05-17 04:41:29 +00008282 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008283 (__v2df) __B,
8284 (__v2df) __C,
8285 (__mmask8) __U,
8286 _MM_FROUND_CUR_DIRECTION);
8287}
8288
Craig Topper8c18e112016-05-17 04:41:50 +00008289#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8290 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8291 (__v2df)(__m128d)(B), \
8292 (__v2df)(__m128d)(C), (__mmask8)(U), \
8293 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008294
Craig Topper58187d32016-05-17 04:41:29 +00008295static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008296_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008297{
Craig Topper58187d32016-05-17 04:41:29 +00008298 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008299 (__v2df) __X,
8300 (__v2df) __Y,
8301 (__mmask8) __U,
8302 _MM_FROUND_CUR_DIRECTION);
8303}
8304
Craig Topper8c18e112016-05-17 04:41:50 +00008305#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8306 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8307 (__v2df)(__m128d)(X), \
8308 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8309 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008310
Craig Topper58187d32016-05-17 04:41:29 +00008311static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008312_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008313{
Craig Topper58187d32016-05-17 04:41:29 +00008314 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008315 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008316 (__v2df) __W,
8317 (__mmask8) __U,
8318 _MM_FROUND_CUR_DIRECTION);
8319}
8320
Craig Topper8c18e112016-05-17 04:41:50 +00008321#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8322 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8323 -(__v2df)(__m128d)(B), \
8324 (__v2df)(__m128d)(W), (__mmask8)(U), \
8325 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008326
Craig Topper58187d32016-05-17 04:41:29 +00008327static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008328_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008329{
Craig Topper58187d32016-05-17 04:41:29 +00008330 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008331 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008332 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008333 (__mmask8) __U,
8334 _MM_FROUND_CUR_DIRECTION);
8335}
8336
Craig Topper8c18e112016-05-17 04:41:50 +00008337#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8338 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8339 (__v2df)(__m128d)(B), \
8340 -(__v2df)(__m128d)(C), \
8341 (__mmask8)(U), \
8342 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008343
Craig Topper58187d32016-05-17 04:41:29 +00008344static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008345_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008346{
Craig Topper58187d32016-05-17 04:41:29 +00008347 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008348 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008349 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008350 (__mmask8) __U,
8351 _MM_FROUND_CUR_DIRECTION);
8352}
8353
Craig Topper8c18e112016-05-17 04:41:50 +00008354#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8355 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8356 (__v2df)(__m128d)(X), \
8357 -(__v2df)(__m128d)(Y), \
8358 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008359
Craig Topper8c18e112016-05-17 04:41:50 +00008360#define _mm512_permutex_pd(X, M) __extension__ ({ \
8361 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8362 (__v8df)_mm512_undefined_pd(), \
8363 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008364
Craig Topper8c18e112016-05-17 04:41:50 +00008365#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8366 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8367 (__v8df)(__m512d)(W), \
8368 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008369
Craig Topper8c18e112016-05-17 04:41:50 +00008370#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8371 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8372 (__v8df)_mm512_setzero_pd(), \
8373 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008374
Craig Topper8c18e112016-05-17 04:41:50 +00008375#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8376 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8377 (__v8di)_mm512_undefined_epi32(), \
8378 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008379
Craig Topper8c18e112016-05-17 04:41:50 +00008380#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8381 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8382 (__v8di)(__m512i)(W), \
8383 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008384
Craig Topper8c18e112016-05-17 04:41:50 +00008385#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8386 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8387 (__v8di)_mm512_setzero_si512(), \
8388 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008389
8390static __inline__ __m512d __DEFAULT_FN_ATTRS
8391_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8392{
8393 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8394 (__v8di) __X,
8395 (__v8df) _mm512_undefined_pd (),
8396 (__mmask8) -1);
8397}
8398
8399static __inline__ __m512d __DEFAULT_FN_ATTRS
8400_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8401{
8402 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8403 (__v8di) __X,
8404 (__v8df) __W,
8405 (__mmask8) __U);
8406}
8407
8408static __inline__ __m512d __DEFAULT_FN_ATTRS
8409_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8410{
8411 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8412 (__v8di) __X,
8413 (__v8df) _mm512_setzero_pd (),
8414 (__mmask8) __U);
8415}
8416
8417static __inline__ __m512i __DEFAULT_FN_ATTRS
8418_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8419{
8420 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8421 (__v8di) __X,
8422 (__v8di) _mm512_setzero_si512 (),
8423 __M);
8424}
8425
8426static __inline__ __m512i __DEFAULT_FN_ATTRS
8427_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8428{
8429 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8430 (__v8di) __X,
8431 (__v8di) _mm512_undefined_epi32 (),
8432 (__mmask8) -1);
8433}
8434
8435static __inline__ __m512i __DEFAULT_FN_ATTRS
8436_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8437 __m512i __Y)
8438{
8439 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8440 (__v8di) __X,
8441 (__v8di) __W,
8442 __M);
8443}
8444
8445static __inline__ __m512 __DEFAULT_FN_ATTRS
8446_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8447{
8448 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8449 (__v16si) __X,
8450 (__v16sf) _mm512_undefined_ps (),
8451 (__mmask16) -1);
8452}
8453
8454static __inline__ __m512 __DEFAULT_FN_ATTRS
8455_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8456{
8457 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8458 (__v16si) __X,
8459 (__v16sf) __W,
8460 (__mmask16) __U);
8461}
8462
8463static __inline__ __m512 __DEFAULT_FN_ATTRS
8464_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8465{
8466 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8467 (__v16si) __X,
8468 (__v16sf) _mm512_setzero_ps (),
8469 (__mmask16) __U);
8470}
8471
8472static __inline__ __m512i __DEFAULT_FN_ATTRS
8473_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8474{
8475 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8476 (__v16si) __X,
8477 (__v16si) _mm512_setzero_si512 (),
8478 __M);
8479}
8480
8481static __inline__ __m512i __DEFAULT_FN_ATTRS
8482_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8483{
8484 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8485 (__v16si) __X,
8486 (__v16si) _mm512_undefined_epi32 (),
8487 (__mmask16) -1);
8488}
8489
8490static __inline__ __m512i __DEFAULT_FN_ATTRS
8491_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8492 __m512i __Y)
8493{
8494 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8495 (__v16si) __X,
8496 (__v16si) __W,
8497 __M);
8498}
8499
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008500static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8501_mm512_kand (__mmask16 __A, __mmask16 __B)
8502{
8503 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8504}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008505
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008506static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8507_mm512_kandn (__mmask16 __A, __mmask16 __B)
8508{
8509 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8510}
8511
8512static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8513_mm512_kor (__mmask16 __A, __mmask16 __B)
8514{
8515 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8516}
8517
8518static __inline__ int __DEFAULT_FN_ATTRS
8519_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8520{
Craig Topper91f23d92016-05-16 01:09:16 +00008521 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008522}
8523
8524static __inline__ int __DEFAULT_FN_ATTRS
8525_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8526{
Craig Topper91f23d92016-05-16 01:09:16 +00008527 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008528}
8529
8530static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8531_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8532{
8533 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8534}
8535
8536static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8537_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8538{
8539 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8540}
8541
8542static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8543_mm512_kxor (__mmask16 __A, __mmask16 __B)
8544{
8545 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8546}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008547
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008548static __inline__ void __DEFAULT_FN_ATTRS
8549_mm512_stream_si512 (__m512i * __P, __m512i __A)
8550{
8551 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8552}
8553
8554static __inline__ __m512i __DEFAULT_FN_ATTRS
8555_mm512_stream_load_si512 (void *__P)
8556{
8557 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8558}
8559
8560static __inline__ void __DEFAULT_FN_ATTRS
8561_mm512_stream_pd (double *__P, __m512d __A)
8562{
8563 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8564}
8565
8566static __inline__ void __DEFAULT_FN_ATTRS
8567_mm512_stream_ps (float *__P, __m512 __A)
8568{
8569 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8570}
8571
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008572static __inline__ __m512d __DEFAULT_FN_ATTRS
8573_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8574{
8575 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8576 (__v8df) __W,
8577 (__mmask8) __U);
8578}
8579
8580static __inline__ __m512d __DEFAULT_FN_ATTRS
8581_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8582{
8583 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8584 (__v8df)
8585 _mm512_setzero_pd (),
8586 (__mmask8) __U);
8587}
8588
8589static __inline__ __m512i __DEFAULT_FN_ATTRS
8590_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8591{
8592 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8593 (__v8di) __W,
8594 (__mmask8) __U);
8595}
8596
8597static __inline__ __m512i __DEFAULT_FN_ATTRS
8598_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8599{
8600 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8601 (__v8di)
8602 _mm512_setzero_si512 (),
8603 (__mmask8) __U);
8604}
8605
8606static __inline__ __m512 __DEFAULT_FN_ATTRS
8607_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8608{
8609 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8610 (__v16sf) __W,
8611 (__mmask16) __U);
8612}
8613
8614static __inline__ __m512 __DEFAULT_FN_ATTRS
8615_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8616{
8617 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8618 (__v16sf)
8619 _mm512_setzero_ps (),
8620 (__mmask16) __U);
8621}
8622
8623static __inline__ __m512i __DEFAULT_FN_ATTRS
8624_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8625{
8626 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8627 (__v16si) __W,
8628 (__mmask16) __U);
8629}
8630
8631static __inline__ __m512i __DEFAULT_FN_ATTRS
8632_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8633{
8634 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8635 (__v16si)
8636 _mm512_setzero_si512 (),
8637 (__mmask16) __U);
8638}
8639
Craig Topper8c18e112016-05-17 04:41:50 +00008640#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8641 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8642 (__v4sf)(__m128)(Y), (int)(P), \
8643 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008644
Craig Topper8c18e112016-05-17 04:41:50 +00008645#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8646 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8647 (__v4sf)(__m128)(Y), (int)(P), \
8648 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008649
Craig Topper8c18e112016-05-17 04:41:50 +00008650#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8651 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8652 (__v4sf)(__m128)(Y), (int)(P), \
8653 (__mmask8)-1, \
8654 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008655
Craig Topper8c18e112016-05-17 04:41:50 +00008656#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8657 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8658 (__v4sf)(__m128)(Y), (int)(P), \
8659 (__mmask8)(M), \
8660 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008661
Craig Topper8c18e112016-05-17 04:41:50 +00008662#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8663 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8664 (__v2df)(__m128d)(Y), (int)(P), \
8665 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008666
Craig Topper8c18e112016-05-17 04:41:50 +00008667#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8668 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8669 (__v2df)(__m128d)(Y), (int)(P), \
8670 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008671
Craig Topper8c18e112016-05-17 04:41:50 +00008672#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8673 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8674 (__v2df)(__m128d)(Y), (int)(P), \
8675 (__mmask8)-1, \
8676 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008677
Craig Topper8c18e112016-05-17 04:41:50 +00008678#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8679 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8680 (__v2df)(__m128d)(Y), (int)(P), \
8681 (__mmask8)(M), \
8682 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008683
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008684static __inline__ __m512 __DEFAULT_FN_ATTRS
8685_mm512_movehdup_ps (__m512 __A)
8686{
8687 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8688 (__v16sf)
8689 _mm512_undefined_ps (),
8690 (__mmask16) -1);
8691}
8692
8693static __inline__ __m512 __DEFAULT_FN_ATTRS
8694_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8695{
8696 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8697 (__v16sf) __W,
8698 (__mmask16) __U);
8699}
8700
8701static __inline__ __m512 __DEFAULT_FN_ATTRS
8702_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8703{
8704 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8705 (__v16sf)
8706 _mm512_setzero_ps (),
8707 (__mmask16) __U);
8708}
8709
8710static __inline__ __m512 __DEFAULT_FN_ATTRS
8711_mm512_moveldup_ps (__m512 __A)
8712{
8713 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8714 (__v16sf)
8715 _mm512_undefined_ps (),
8716 (__mmask16) -1);
8717}
8718
8719static __inline__ __m512 __DEFAULT_FN_ATTRS
8720_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8721{
8722 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8723 (__v16sf) __W,
8724 (__mmask16) __U);
8725}
8726
8727static __inline__ __m512 __DEFAULT_FN_ATTRS
8728_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8729{
8730 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8731 (__v16sf)
8732 _mm512_setzero_ps (),
8733 (__mmask16) __U);
8734}
8735
Craig Topper8c18e112016-05-17 04:41:50 +00008736#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8737 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8738 (__v16si)_mm512_undefined_epi32(), \
8739 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008740
Craig Topper8c18e112016-05-17 04:41:50 +00008741#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8742 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8743 (__v16si)(__m512i)(W), \
8744 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008745
Craig Topper8c18e112016-05-17 04:41:50 +00008746#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8747 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8748 (__v16si)_mm512_setzero_si512(), \
8749 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008750
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008751static __inline__ __m512d __DEFAULT_FN_ATTRS
8752_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8753{
8754 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8755 (__v8df) __W,
8756 (__mmask8) __U);
8757}
8758
8759static __inline__ __m512d __DEFAULT_FN_ATTRS
8760_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8761{
8762 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8763 (__v8df) _mm512_setzero_pd (),
8764 (__mmask8) __U);
8765}
8766
8767static __inline__ __m512i __DEFAULT_FN_ATTRS
8768_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8769{
8770 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8771 (__v8di) __W,
8772 (__mmask8) __U);
8773}
8774
8775static __inline__ __m512i __DEFAULT_FN_ATTRS
8776_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8777{
8778 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8779 (__v8di) _mm512_setzero_pd (),
8780 (__mmask8) __U);
8781}
8782
8783static __inline__ __m512d __DEFAULT_FN_ATTRS
8784_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8785{
8786 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8787 (__v8df) __W,
8788 (__mmask8) __U);
8789}
8790
8791static __inline__ __m512d __DEFAULT_FN_ATTRS
8792_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8793{
8794 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8795 (__v8df) _mm512_setzero_pd(),
8796 (__mmask8) __U);
8797}
8798
8799static __inline__ __m512i __DEFAULT_FN_ATTRS
8800_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8801{
8802 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8803 (__v8di) __W,
8804 (__mmask8) __U);
8805}
8806
8807static __inline__ __m512i __DEFAULT_FN_ATTRS
8808_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8809{
8810 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8811 (__v8di) _mm512_setzero_pd(),
8812 (__mmask8) __U);
8813}
8814
8815static __inline__ __m512 __DEFAULT_FN_ATTRS
8816_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8817{
8818 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8819 (__v16sf) __W,
8820 (__mmask16) __U);
8821}
8822
8823static __inline__ __m512 __DEFAULT_FN_ATTRS
8824_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8825{
8826 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8827 (__v16sf) _mm512_setzero_ps(),
8828 (__mmask16) __U);
8829}
8830
8831static __inline__ __m512i __DEFAULT_FN_ATTRS
8832_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8833{
8834 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8835 (__v16si) __W,
8836 (__mmask16) __U);
8837}
8838
8839static __inline__ __m512i __DEFAULT_FN_ATTRS
8840_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8841{
8842 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8843 (__v16si) _mm512_setzero_ps(),
8844 (__mmask16) __U);
8845}
8846
8847static __inline__ __m512 __DEFAULT_FN_ATTRS
8848_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8849{
8850 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8851 (__v16sf) __W,
8852 (__mmask16) __U);
8853}
8854
8855static __inline__ __m512 __DEFAULT_FN_ATTRS
8856_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8857{
8858 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8859 (__v16sf) _mm512_setzero_ps(),
8860 (__mmask16) __U);
8861}
8862
8863static __inline__ __m512i __DEFAULT_FN_ATTRS
8864_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8865{
8866 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8867 (__v16si) __W,
8868 (__mmask16) __U);
8869}
8870
8871static __inline__ __m512i __DEFAULT_FN_ATTRS
8872_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8873{
8874 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8875 (__v16si) _mm512_setzero_ps(),
8876 (__mmask16) __U);
8877}
8878
Craig Topper8c18e112016-05-17 04:41:50 +00008879#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
8880 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8881 (__v8df)_mm512_undefined_pd(), \
8882 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008883
Craig Topper8c18e112016-05-17 04:41:50 +00008884#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
8885 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8886 (__v8df)(__m512d)(W), \
8887 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008888
Craig Topper8c18e112016-05-17 04:41:50 +00008889#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
8890 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8891 (__v8df)_mm512_setzero_pd(), \
8892 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008893
8894static __inline__ __m512d __DEFAULT_FN_ATTRS
8895_mm512_cvtps_pd (__m256 __A)
8896{
8897 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8898 (__v8df)
8899 _mm512_undefined_pd (),
8900 (__mmask8) -1,
8901 _MM_FROUND_CUR_DIRECTION);
8902}
8903
8904static __inline__ __m512d __DEFAULT_FN_ATTRS
8905_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8906{
8907 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8908 (__v8df) __W,
8909 (__mmask8) __U,
8910 _MM_FROUND_CUR_DIRECTION);
8911}
8912
8913static __inline__ __m512d __DEFAULT_FN_ATTRS
8914_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8915{
8916 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8917 (__v8df)
8918 _mm512_setzero_pd (),
8919 (__mmask8) __U,
8920 _MM_FROUND_CUR_DIRECTION);
8921}
8922
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008923static __inline__ __m512d __DEFAULT_FN_ATTRS
8924_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8925{
8926 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8927 (__v8df) __W,
8928 (__mmask8) __U);
8929}
8930
8931static __inline__ __m512d __DEFAULT_FN_ATTRS
8932_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8933{
8934 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8935 (__v8df)
8936 _mm512_setzero_pd (),
8937 (__mmask8) __U);
8938}
8939
8940static __inline__ __m512 __DEFAULT_FN_ATTRS
8941_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8942{
8943 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8944 (__v16sf) __W,
8945 (__mmask16) __U);
8946}
8947
8948static __inline__ __m512 __DEFAULT_FN_ATTRS
8949_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8950{
8951 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8952 (__v16sf)
8953 _mm512_setzero_ps (),
8954 (__mmask16) __U);
8955}
8956
Michael Zuckerman708e7592016-05-03 10:42:46 +00008957static __inline__ void __DEFAULT_FN_ATTRS
8958_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8959{
8960 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8961 (__mmask8) __U);
8962}
8963
8964static __inline__ void __DEFAULT_FN_ATTRS
8965_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8966{
8967 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8968 (__mmask8) __U);
8969}
8970
8971static __inline__ void __DEFAULT_FN_ATTRS
8972_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8973{
8974 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8975 (__mmask16) __U);
8976}
8977
8978static __inline__ void __DEFAULT_FN_ATTRS
8979_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8980{
8981 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8982 (__mmask16) __U);
8983}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008984
Craig Topper8c18e112016-05-17 04:41:50 +00008985#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
8986 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8987 (__v2df)(__m128d)(B), \
8988 (__v4sf)_mm_undefined_ps(), \
8989 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008990
Craig Topper8c18e112016-05-17 04:41:50 +00008991#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
8992 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8993 (__v2df)(__m128d)(B), \
8994 (__v4sf)(__m128)(W), \
8995 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008996
Craig Topper8c18e112016-05-17 04:41:50 +00008997#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
8998 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8999 (__v2df)(__m128d)(B), \
9000 (__v4sf)_mm_setzero_ps(), \
9001 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009002
Craig Topper8c18e112016-05-17 04:41:50 +00009003#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
9004 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9005 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009006
Craig Topper8c18e112016-05-17 04:41:50 +00009007#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
9008 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9009 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009010
Craig Topper8c18e112016-05-17 04:41:50 +00009011#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9012 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009013
Craig Topper8c18e112016-05-17 04:41:50 +00009014#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9015 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009016
Craig Topper8c18e112016-05-17 04:41:50 +00009017#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9018 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9019 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009020
Craig Topper8c18e112016-05-17 04:41:50 +00009021#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9022 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9023 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009024
Craig Topper8c18e112016-05-17 04:41:50 +00009025#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9026 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9027 (__v4sf)(__m128)(B), \
9028 (__v2df)_mm_undefined_pd(), \
9029 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009030
Craig Topper8c18e112016-05-17 04:41:50 +00009031#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9032 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9033 (__v4sf)(__m128)(B), \
9034 (__v2df)(__m128d)(W), \
9035 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009036
Craig Topper8c18e112016-05-17 04:41:50 +00009037#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9038 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9039 (__v4sf)(__m128)(B), \
9040 (__v2df)_mm_setzero_pd(), \
9041 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009042
9043static __inline__ __m128d __DEFAULT_FN_ATTRS
9044_mm_cvtu32_sd (__m128d __A, unsigned __B)
9045{
9046 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9047}
9048
Craig Topper8c18e112016-05-17 04:41:50 +00009049#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9050 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9051 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009052
9053static __inline__ __m128d __DEFAULT_FN_ATTRS
9054_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9055{
9056 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9057 _MM_FROUND_CUR_DIRECTION);
9058}
9059
Craig Topper8c18e112016-05-17 04:41:50 +00009060#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9061 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9062 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009063
9064static __inline__ __m128 __DEFAULT_FN_ATTRS
9065_mm_cvtu32_ss (__m128 __A, unsigned __B)
9066{
9067 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9068 _MM_FROUND_CUR_DIRECTION);
9069}
9070
Craig Topper8c18e112016-05-17 04:41:50 +00009071#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9072 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9073 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009074
9075static __inline__ __m128 __DEFAULT_FN_ATTRS
9076_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9077{
9078 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9079 _MM_FROUND_CUR_DIRECTION);
9080}
9081
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009082static __inline__ __m512i __DEFAULT_FN_ATTRS
9083_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9084{
9085 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9086 __M);
9087}
9088
9089static __inline__ __m512i __DEFAULT_FN_ATTRS
9090_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9091{
9092 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9093 __M);
9094}
9095
Michael Zuckerman178113e2016-05-19 12:07:49 +00009096static __inline __m512i __DEFAULT_FN_ATTRS
9097_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9098 int __E, int __F, int __G, int __H,
9099 int __I, int __J, int __K, int __L,
9100 int __M, int __N, int __O, int __P)
9101{
9102 return __extension__ (__m512i)(__v16si)
9103 { __P, __O, __N, __M, __L, __K, __J, __I,
9104 __H, __G, __F, __E, __D, __C, __B, __A };
9105}
9106
9107#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9108 e8,e9,e10,e11,e12,e13,e14,e15) \
9109 _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 +00009110
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009111static __inline__ __m512i __DEFAULT_FN_ATTRS
9112_mm512_set_epi64 (long long __A, long long __B, long long __C,
9113 long long __D, long long __E, long long __F,
9114 long long __G, long long __H)
9115{
9116 return __extension__ (__m512i) (__v8di)
9117 { __H, __G, __F, __E, __D, __C, __B, __A };
9118}
9119
Michael Zuckerman178113e2016-05-19 12:07:49 +00009120#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9121 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9122
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009123static __inline__ __m512d __DEFAULT_FN_ATTRS
9124_mm512_set_pd (double __A, double __B, double __C, double __D,
9125 double __E, double __F, double __G, double __H)
9126{
9127 return __extension__ (__m512d)
9128 { __H, __G, __F, __E, __D, __C, __B, __A };
9129}
9130
Michael Zuckerman178113e2016-05-19 12:07:49 +00009131#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9132 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9133
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009134static __inline__ __m512 __DEFAULT_FN_ATTRS
9135_mm512_set_ps (float __A, float __B, float __C, float __D,
9136 float __E, float __F, float __G, float __H,
9137 float __I, float __J, float __K, float __L,
9138 float __M, float __N, float __O, float __P)
9139{
9140 return __extension__ (__m512)
9141 { __P, __O, __N, __M, __L, __K, __J, __I,
9142 __H, __G, __F, __E, __D, __C, __B, __A };
9143}
9144
Michael Zuckerman178113e2016-05-19 12:07:49 +00009145#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9146 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9147
Michael Kupersteine45af542015-06-30 13:36:19 +00009148#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009149
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009150#endif // __AVX512FINTRIN_H