blob: 297c9b873dcab0370fb65ff9bbe06f8ec9cefd68 [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
30typedef double __v8df __attribute__((__vector_size__(64)));
31typedef float __v16sf __attribute__((__vector_size__(64)));
32typedef long long __v8di __attribute__((__vector_size__(64)));
33typedef int __v16si __attribute__((__vector_size__(64)));
34
35typedef float __m512 __attribute__((__vector_size__(64)));
36typedef double __m512d __attribute__((__vector_size__(64)));
37typedef long long __m512i __attribute__((__vector_size__(64)));
38
39typedef unsigned char __mmask8;
40typedef unsigned short __mmask16;
41
42/* Rounding mode macros. */
43#define _MM_FROUND_TO_NEAREST_INT 0x00
44#define _MM_FROUND_TO_NEG_INF 0x01
45#define _MM_FROUND_TO_POS_INF 0x02
46#define _MM_FROUND_TO_ZERO 0x03
47#define _MM_FROUND_CUR_DIRECTION 0x04
48
Michael Zuckermandef78752016-03-28 12:23:09 +000049typedef enum
50{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000051 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
52 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
53 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
54 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
55 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
56 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
57 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
58 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
59 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
60 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
61 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
62 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
63 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
64 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
65 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
66 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
67 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
68 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
69 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
70 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
71 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
72 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
73 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
74 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
75 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
76 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
77 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
78 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
79 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
80 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
81 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
82 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
83 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
84 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
85 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
86 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
87 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
88 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
89 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
90 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
91 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
92 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
93 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
94 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
95 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
96 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
97 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
98 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
99 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
100 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
101 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
102 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
103 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
104 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
105 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
106 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
107 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
108 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
109 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
110 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
111 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
112 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
113 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
114 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
115 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
116 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
117 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
118 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
119 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
120 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
121 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
122 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
123 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
124 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
125 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
126 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
127 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
128 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
129 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
130 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
131 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
132 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
133 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
134 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
135 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
136 _MM_PERM_DDDD = 0xFF
137} _MM_PERM_ENUM;
138
139typedef enum
140{
Michael Zuckermandef78752016-03-28 12:23:09 +0000141 _MM_MANT_NORM_1_2, /* interval [1, 2) */
142 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
143 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
144 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
145} _MM_MANTISSA_NORM_ENUM;
146
147typedef enum
148{
149 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
150 _MM_MANT_SIGN_zero, /* sign = 0 */
151 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
152} _MM_MANTISSA_SIGN_ENUM;
153
Eric Christopher4d1851682015-06-17 07:09:20 +0000154/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000155#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000156
Adam Nemet0d5bb552014-07-28 17:14:40 +0000157/* Create vectors with repeated elements */
158
Michael Kupersteine45af542015-06-30 13:36:19 +0000159static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000160_mm512_setzero_si512(void)
161{
162 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
163}
164
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000165static __inline__ __m512d __DEFAULT_FN_ATTRS
166_mm512_undefined_pd()
167{
168 return (__m512d)__builtin_ia32_undef512();
169}
170
171static __inline__ __m512 __DEFAULT_FN_ATTRS
172_mm512_undefined()
173{
174 return (__m512)__builtin_ia32_undef512();
175}
176
177static __inline__ __m512 __DEFAULT_FN_ATTRS
178_mm512_undefined_ps()
179{
180 return (__m512)__builtin_ia32_undef512();
181}
182
183static __inline__ __m512i __DEFAULT_FN_ATTRS
184_mm512_undefined_epi32()
185{
186 return (__m512i)__builtin_ia32_undef512();
187}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000188static __inline__ __m512i __DEFAULT_FN_ATTRS
189_mm512_broadcastd_epi32 (__m128i __A)
190{
191 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
192 (__v16si)
193 _mm512_undefined_epi32 (),
194 (__mmask16) -1);
195}
196
197static __inline__ __m512i __DEFAULT_FN_ATTRS
198_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
199{
200 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
201 (__v16si) __O, __M);
202}
203
204static __inline__ __m512i __DEFAULT_FN_ATTRS
205_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
206{
207 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
208 (__v16si)
209 _mm512_setzero_si512 (),
210 __M);
211}
212
213static __inline__ __m512i __DEFAULT_FN_ATTRS
214_mm512_broadcastq_epi64 (__m128i __A)
215{
216 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
217 (__v8di)
218 _mm512_undefined_pd (),
219 (__mmask8) -1);
220}
221
222static __inline__ __m512i __DEFAULT_FN_ATTRS
223_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
224{
225 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
226 (__v8di) __O, __M);
227}
228
229static __inline__ __m512i __DEFAULT_FN_ATTRS
230_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
231{
232 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
233 (__v8di)
234 _mm512_setzero_si512 (),
235 __M);
236}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000237
Michael Kupersteine45af542015-06-30 13:36:19 +0000238static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000239_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
240{
241 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
242 (__v16si)
243 _mm512_setzero_si512 (),
244 __M);
245}
246
Michael Kupersteine45af542015-06-30 13:36:19 +0000247static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000248_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
249{
250#ifdef __x86_64__
251 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
252 (__v8di)
253 _mm512_setzero_si512 (),
254 __M);
255#else
256 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
257 (__v8di)
258 _mm512_setzero_si512 (),
259 __M);
260#endif
261}
262
Michael Kupersteine45af542015-06-30 13:36:19 +0000263static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000264_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000265{
266 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
267 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
268}
Michael Kupersteine45af542015-06-30 13:36:19 +0000269static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000270_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000271{
272 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
273}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000276_mm512_set1_ps(float __w)
277{
278 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
279 __w, __w, __w, __w, __w, __w, __w, __w };
280}
281
Michael Kupersteine45af542015-06-30 13:36:19 +0000282static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000283_mm512_set1_pd(double __w)
284{
285 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
286}
287
Michael Kupersteine45af542015-06-30 13:36:19 +0000288static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000289_mm512_set1_epi32(int __s)
290{
291 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
292 __s, __s, __s, __s, __s, __s, __s, __s };
293}
294
Michael Kupersteine45af542015-06-30 13:36:19 +0000295static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000296_mm512_set1_epi64(long long __d)
297{
298 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
299}
300
Michael Kupersteine45af542015-06-30 13:36:19 +0000301static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000302_mm512_broadcastss_ps(__m128 __X)
303{
304 float __f = __X[0];
305 return (__v16sf){ __f, __f, __f, __f,
306 __f, __f, __f, __f,
307 __f, __f, __f, __f,
308 __f, __f, __f, __f };
309}
310
Michael Kupersteine45af542015-06-30 13:36:19 +0000311static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000312_mm512_broadcastsd_pd(__m128d __X)
313{
314 double __d = __X[0];
315 return (__v8df){ __d, __d, __d, __d,
316 __d, __d, __d, __d };
317}
318
Adam Nemetc871ff92014-07-30 16:51:24 +0000319/* Cast between vector types */
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000322_mm512_castpd256_pd512(__m256d __a)
323{
324 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
325}
326
Michael Kupersteine45af542015-06-30 13:36:19 +0000327static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000328_mm512_castps256_ps512(__m256 __a)
329{
330 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
331 -1, -1, -1, -1, -1, -1, -1, -1);
332}
333
Michael Kupersteine45af542015-06-30 13:36:19 +0000334static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000335_mm512_castpd512_pd128(__m512d __a)
336{
337 return __builtin_shufflevector(__a, __a, 0, 1);
338}
339
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000340static __inline __m256d __DEFAULT_FN_ATTRS
341_mm512_castpd512_pd256 (__m512d __A)
342{
343 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
344}
345
Michael Kupersteine45af542015-06-30 13:36:19 +0000346static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000347_mm512_castps512_ps128(__m512 __a)
348{
349 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
350}
351
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000352static __inline __m256 __DEFAULT_FN_ATTRS
353_mm512_castps512_ps256 (__m512 __A)
354{
355 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
356}
357
358static __inline __m512 __DEFAULT_FN_ATTRS
359_mm512_castpd_ps (__m512d __A)
360{
361 return (__m512) (__A);
362}
363
364static __inline __m512i __DEFAULT_FN_ATTRS
365_mm512_castpd_si512 (__m512d __A)
366{
367 return (__m512i) (__A);
368}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000369
370static __inline__ __m512d __DEFAULT_FN_ATTRS
371_mm512_castpd128_pd512 (__m128d __A)
372{
373 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
374}
375
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000376static __inline __m512d __DEFAULT_FN_ATTRS
377_mm512_castps_pd (__m512 __A)
378{
379 return (__m512d) (__A);
380}
381
382static __inline __m512i __DEFAULT_FN_ATTRS
383_mm512_castps_si512 (__m512 __A)
384{
385 return (__m512i) (__A);
386}
387
Michael Zuckermanc6677032016-05-03 14:26:52 +0000388static __inline__ __m512 __DEFAULT_FN_ATTRS
389_mm512_castps128_ps512 (__m128 __A)
390{
391 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
392}
393
394static __inline__ __m512i __DEFAULT_FN_ATTRS
395_mm512_castsi128_si512 (__m128i __A)
396{
397 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
398}
399
400static __inline__ __m512i __DEFAULT_FN_ATTRS
401_mm512_castsi256_si512 (__m256i __A)
402{
403 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
404}
405
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000406static __inline __m512 __DEFAULT_FN_ATTRS
407_mm512_castsi512_ps (__m512i __A)
408{
409 return (__m512) (__A);
410}
411
412static __inline __m512d __DEFAULT_FN_ATTRS
413_mm512_castsi512_pd (__m512i __A)
414{
415 return (__m512d) (__A);
416}
417
418static __inline __m128i __DEFAULT_FN_ATTRS
419_mm512_castsi512_si128 (__m512i __A)
420{
421 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
422}
423
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000424/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000425static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000426_mm512_and_epi32(__m512i __a, __m512i __b)
427{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000428 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000429}
430
Michael Kupersteine45af542015-06-30 13:36:19 +0000431static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000432_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
433{
434 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
435 (__v16si) __b,
436 (__v16si) __src,
437 (__mmask16) __k);
438}
Michael Kupersteine45af542015-06-30 13:36:19 +0000439static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000440_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
441{
442 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
443 (__v16si) __b,
444 (__v16si)
445 _mm512_setzero_si512 (),
446 (__mmask16) __k);
447}
448
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000450_mm512_and_epi64(__m512i __a, __m512i __b)
451{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000452 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000453}
454
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000456_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
457{
458 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
459 (__v8di) __b,
460 (__v8di) __src,
461 (__mmask8) __k);
462}
Michael Kupersteine45af542015-06-30 13:36:19 +0000463static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000464_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
465{
466 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
467 (__v8di) __b,
468 (__v8di)
469 _mm512_setzero_si512 (),
470 (__mmask8) __k);
471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000474_mm512_andnot_si512 (__m512i __A, __m512i __B)
475{
476 return (__m512i)(~(__A) & __B);
477}
478
479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000480_mm512_andnot_epi32 (__m512i __A, __m512i __B)
481{
482 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
483 (__v16si) __B,
484 (__v16si)
485 _mm512_setzero_si512 (),
486 (__mmask16) -1);
487}
488
Michael Kupersteine45af542015-06-30 13:36:19 +0000489static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000490_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
491{
492 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
493 (__v16si) __B,
494 (__v16si) __W,
495 (__mmask16) __U);
496}
497
Michael Kupersteine45af542015-06-30 13:36:19 +0000498static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000499_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
500{
501 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
502 (__v16si) __B,
503 (__v16si)
504 _mm512_setzero_si512 (),
505 (__mmask16) __U);
506}
507
Michael Kupersteine45af542015-06-30 13:36:19 +0000508static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000509_mm512_andnot_epi64 (__m512i __A, __m512i __B)
510{
511 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
512 (__v8di) __B,
513 (__v8di)
514 _mm512_setzero_si512 (),
515 (__mmask8) -1);
516}
517
Michael Kupersteine45af542015-06-30 13:36:19 +0000518static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000519_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
520{
521 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
522 (__v8di) __B,
523 (__v8di) __W, __U);
524}
525
Michael Kupersteine45af542015-06-30 13:36:19 +0000526static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000527_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
528{
529 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
530 (__v8di) __B,
531 (__v8di)
532 _mm512_setzero_pd (),
533 __U);
534}
Michael Kupersteine45af542015-06-30 13:36:19 +0000535static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000536_mm512_or_epi32(__m512i __a, __m512i __b)
537{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000538 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000539}
540
Michael Kupersteine45af542015-06-30 13:36:19 +0000541static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000542_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
543{
544 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
545 (__v16si) __b,
546 (__v16si) __src,
547 (__mmask16) __k);
548}
Michael Kupersteine45af542015-06-30 13:36:19 +0000549static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000550_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
551{
552 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
553 (__v16si) __b,
554 (__v16si)
555 _mm512_setzero_si512 (),
556 (__mmask16) __k);
557}
558
Michael Kupersteine45af542015-06-30 13:36:19 +0000559static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000560_mm512_or_epi64(__m512i __a, __m512i __b)
561{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000562 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000563}
564
Michael Kupersteine45af542015-06-30 13:36:19 +0000565static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000566_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
567{
568 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
569 (__v8di) __b,
570 (__v8di) __src,
571 (__mmask8) __k);
572}
Michael Kupersteine45af542015-06-30 13:36:19 +0000573static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000574_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
575{
576 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
577 (__v8di) __b,
578 (__v8di)
579 _mm512_setzero_si512 (),
580 (__mmask8) __k);
581}
582
Michael Kupersteine45af542015-06-30 13:36:19 +0000583static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000584_mm512_xor_epi32(__m512i __a, __m512i __b)
585{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000586 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000590_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
591{
592 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
593 (__v16si) __b,
594 (__v16si) __src,
595 (__mmask16) __k);
596}
Michael Kupersteine45af542015-06-30 13:36:19 +0000597static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000598_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
599{
600 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
601 (__v16si) __b,
602 (__v16si)
603 _mm512_setzero_si512 (),
604 (__mmask16) __k);
605}
606
Michael Kupersteine45af542015-06-30 13:36:19 +0000607static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000608_mm512_xor_epi64(__m512i __a, __m512i __b)
609{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000610 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000611}
612
Michael Kupersteine45af542015-06-30 13:36:19 +0000613static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
615{
616 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
617 (__v8di) __b,
618 (__v8di) __src,
619 (__mmask8) __k);
620}
Michael Kupersteine45af542015-06-30 13:36:19 +0000621static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000622_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
623{
624 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
625 (__v8di) __b,
626 (__v8di)
627 _mm512_setzero_si512 (),
628 (__mmask8) __k);
629}
630
Michael Kupersteine45af542015-06-30 13:36:19 +0000631static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000632_mm512_and_si512(__m512i __a, __m512i __b)
633{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000634 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000638_mm512_or_si512(__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_xor_si512(__m512i __a, __m512i __b)
645{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000646 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000647}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000648/* Arithmetic */
649
Michael Kupersteine45af542015-06-30 13:36:19 +0000650static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000651_mm512_add_pd(__m512d __a, __m512d __b)
652{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000653 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000654}
655
Michael Kupersteine45af542015-06-30 13:36:19 +0000656static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000657_mm512_add_ps(__m512 __a, __m512 __b)
658{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000659 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000660}
661
Michael Kupersteine45af542015-06-30 13:36:19 +0000662static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000663_mm512_mul_pd(__m512d __a, __m512d __b)
664{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000665 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000666}
667
Michael Kupersteine45af542015-06-30 13:36:19 +0000668static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000669_mm512_mul_ps(__m512 __a, __m512 __b)
670{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000671 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000672}
673
Michael Kupersteine45af542015-06-30 13:36:19 +0000674static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000675_mm512_sub_pd(__m512d __a, __m512d __b)
676{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000677 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000678}
679
Michael Kupersteine45af542015-06-30 13:36:19 +0000680static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000681_mm512_sub_ps(__m512 __a, __m512 __b)
682{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000683 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000684}
685
Michael Kupersteine45af542015-06-30 13:36:19 +0000686static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000687_mm512_add_epi64 (__m512i __A, __m512i __B)
688{
689 return (__m512i) ((__v8di) __A + (__v8di) __B);
690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000693_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
694{
695 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
696 (__v8di) __B,
697 (__v8di) __W,
698 (__mmask8) __U);
699}
700
Michael Kupersteine45af542015-06-30 13:36:19 +0000701static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000702_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
703{
704 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
705 (__v8di) __B,
706 (__v8di)
707 _mm512_setzero_si512 (),
708 (__mmask8) __U);
709}
710
Michael Kupersteine45af542015-06-30 13:36:19 +0000711static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000712_mm512_sub_epi64 (__m512i __A, __m512i __B)
713{
714 return (__m512i) ((__v8di) __A - (__v8di) __B);
715}
716
Michael Kupersteine45af542015-06-30 13:36:19 +0000717static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000718_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
719{
720 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
721 (__v8di) __B,
722 (__v8di) __W,
723 (__mmask8) __U);
724}
725
Michael Kupersteine45af542015-06-30 13:36:19 +0000726static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000727_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
728{
729 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
730 (__v8di) __B,
731 (__v8di)
732 _mm512_setzero_si512 (),
733 (__mmask8) __U);
734}
735
Michael Kupersteine45af542015-06-30 13:36:19 +0000736static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000737_mm512_add_epi32 (__m512i __A, __m512i __B)
738{
739 return (__m512i) ((__v16si) __A + (__v16si) __B);
740}
741
Michael Kupersteine45af542015-06-30 13:36:19 +0000742static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000743_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
744{
745 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
746 (__v16si) __B,
747 (__v16si) __W,
748 (__mmask16) __U);
749}
750
Michael Kupersteine45af542015-06-30 13:36:19 +0000751static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000752_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
753{
754 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
755 (__v16si) __B,
756 (__v16si)
757 _mm512_setzero_si512 (),
758 (__mmask16) __U);
759}
760
Michael Kupersteine45af542015-06-30 13:36:19 +0000761static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000762_mm512_sub_epi32 (__m512i __A, __m512i __B)
763{
764 return (__m512i) ((__v16si) __A - (__v16si) __B);
765}
766
Michael Kupersteine45af542015-06-30 13:36:19 +0000767static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000768_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
769{
770 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
771 (__v16si) __B,
772 (__v16si) __W,
773 (__mmask16) __U);
774}
775
Michael Kupersteine45af542015-06-30 13:36:19 +0000776static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000777_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
778{
779 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
780 (__v16si) __B,
781 (__v16si)
782 _mm512_setzero_si512 (),
783 (__mmask16) __U);
784}
785
Michael Kupersteine45af542015-06-30 13:36:19 +0000786static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000787_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000788{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000789 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
790 (__v8df) __B,
791 (__v8df)
792 _mm512_setzero_pd (),
793 (__mmask8) -1,
794 _MM_FROUND_CUR_DIRECTION);
795}
796
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000797static __inline__ __m512d __DEFAULT_FN_ATTRS
798_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
799{
800 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
801 (__v8df) __B,
802 (__v8df) __W,
803 (__mmask8) __U,
804 _MM_FROUND_CUR_DIRECTION);
805}
806
807static __inline__ __m512d __DEFAULT_FN_ATTRS
808_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
809{
810 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
811 (__v8df) __B,
812 (__v8df)
813 _mm512_setzero_pd (),
814 (__mmask8) __U,
815 _MM_FROUND_CUR_DIRECTION);
816}
817
Michael Kupersteine45af542015-06-30 13:36:19 +0000818static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000819_mm512_max_ps(__m512 __A, __m512 __B)
820{
821 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
822 (__v16sf) __B,
823 (__v16sf)
824 _mm512_setzero_ps (),
825 (__mmask16) -1,
826 _MM_FROUND_CUR_DIRECTION);
827}
828
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000829static __inline__ __m512 __DEFAULT_FN_ATTRS
830_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
831{
832 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
833 (__v16sf) __B,
834 (__v16sf) __W,
835 (__mmask16) __U,
836 _MM_FROUND_CUR_DIRECTION);
837}
838
839static __inline__ __m512 __DEFAULT_FN_ATTRS
840_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
841{
842 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
843 (__v16sf) __B,
844 (__v16sf)
845 _mm512_setzero_ps (),
846 (__mmask16) __U,
847 _MM_FROUND_CUR_DIRECTION);
848}
849
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000850static __inline__ __m128 __DEFAULT_FN_ATTRS
851_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000852 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000853 (__v4sf) __B,
854 (__v4sf) __W,
855 (__mmask8) __U,
856 _MM_FROUND_CUR_DIRECTION);
857}
858
859static __inline__ __m128 __DEFAULT_FN_ATTRS
860_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000861 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000862 (__v4sf) __B,
863 (__v4sf) _mm_setzero_ps (),
864 (__mmask8) __U,
865 _MM_FROUND_CUR_DIRECTION);
866}
867
Craig Topper8c18e112016-05-17 04:41:50 +0000868#define _mm_max_round_ss(A, B, R) __extension__ ({ \
869 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
870 (__v4sf)(__m128)(B), \
871 (__v4sf)_mm_setzero_ps(), \
872 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000873
Craig Topper8c18e112016-05-17 04:41:50 +0000874#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
875 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
876 (__v4sf)(__m128)(B), \
877 (__v4sf)(__m128)(W), (__mmask8)(U), \
878 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000879
Craig Topper8c18e112016-05-17 04:41:50 +0000880#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
881 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
882 (__v4sf)(__m128)(B), \
883 (__v4sf)_mm_setzero_ps(), \
884 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000885
886static __inline__ __m128d __DEFAULT_FN_ATTRS
887_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000888 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000889 (__v2df) __B,
890 (__v2df) __W,
891 (__mmask8) __U,
892 _MM_FROUND_CUR_DIRECTION);
893}
894
895static __inline__ __m128d __DEFAULT_FN_ATTRS
896_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000897 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000898 (__v2df) __B,
899 (__v2df) _mm_setzero_pd (),
900 (__mmask8) __U,
901 _MM_FROUND_CUR_DIRECTION);
902}
903
Craig Topper8c18e112016-05-17 04:41:50 +0000904#define _mm_max_round_sd(A, B, R) __extension__ ({ \
905 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
906 (__v2df)(__m128d)(B), \
907 (__v2df)_mm_setzero_pd(), \
908 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000909
Craig Topper8c18e112016-05-17 04:41:50 +0000910#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
911 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
912 (__v2df)(__m128d)(B), \
913 (__v2df)(__m128d)(W), \
914 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000915
Craig Topper8c18e112016-05-17 04:41:50 +0000916#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
917 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
918 (__v2df)(__m128d)(B), \
919 (__v2df)_mm_setzero_pd(), \
920 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000921
Michael Zuckermande860e52016-05-10 11:34:19 +0000922static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000923__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000924_mm512_max_epi32(__m512i __A, __m512i __B)
925{
926 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
927 (__v16si) __B,
928 (__v16si)
929 _mm512_setzero_si512 (),
930 (__mmask16) -1);
931}
932
Michael Zuckermande860e52016-05-10 11:34:19 +0000933static __inline__ __m512i __DEFAULT_FN_ATTRS
934_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
935{
936 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
937 (__v16si) __B,
938 (__v16si) __W, __M);
939}
940
941static __inline__ __m512i __DEFAULT_FN_ATTRS
942_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
943{
944 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
945 (__v16si) __B,
946 (__v16si)
947 _mm512_setzero_si512 (),
948 __M);
949}
950
Michael Kupersteine45af542015-06-30 13:36:19 +0000951static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000952_mm512_max_epu32(__m512i __A, __m512i __B)
953{
954 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
955 (__v16si) __B,
956 (__v16si)
957 _mm512_setzero_si512 (),
958 (__mmask16) -1);
959}
960
Michael Zuckermande860e52016-05-10 11:34:19 +0000961static __inline__ __m512i __DEFAULT_FN_ATTRS
962_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
963{
964 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
965 (__v16si) __B,
966 (__v16si) __W, __M);
967}
968
969static __inline__ __m512i __DEFAULT_FN_ATTRS
970_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
971{
972 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
973 (__v16si) __B,
974 (__v16si)
975 _mm512_setzero_si512 (),
976 __M);
977}
978
Michael Kupersteine45af542015-06-30 13:36:19 +0000979static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000980_mm512_max_epi64(__m512i __A, __m512i __B)
981{
982 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
983 (__v8di) __B,
984 (__v8di)
985 _mm512_setzero_si512 (),
986 (__mmask8) -1);
987}
988
Michael Zuckermande860e52016-05-10 11:34:19 +0000989static __inline__ __m512i __DEFAULT_FN_ATTRS
990_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
991{
992 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
993 (__v8di) __B,
994 (__v8di) __W, __M);
995}
996
997static __inline__ __m512i __DEFAULT_FN_ATTRS
998_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
999{
1000 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1001 (__v8di) __B,
1002 (__v8di)
1003 _mm512_setzero_si512 (),
1004 __M);
1005}
1006
Michael Kupersteine45af542015-06-30 13:36:19 +00001007static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001008_mm512_max_epu64(__m512i __A, __m512i __B)
1009{
1010 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1011 (__v8di) __B,
1012 (__v8di)
1013 _mm512_setzero_si512 (),
1014 (__mmask8) -1);
1015}
1016
Michael Zuckermande860e52016-05-10 11:34:19 +00001017static __inline__ __m512i __DEFAULT_FN_ATTRS
1018_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1019{
1020 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1021 (__v8di) __B,
1022 (__v8di) __W, __M);
1023}
1024
1025static __inline__ __m512i __DEFAULT_FN_ATTRS
1026_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1027{
1028 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1029 (__v8di) __B,
1030 (__v8di)
1031 _mm512_setzero_si512 (),
1032 __M);
1033}
1034
Michael Kupersteine45af542015-06-30 13:36:19 +00001035static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001036_mm512_min_pd(__m512d __A, __m512d __B)
1037{
1038 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1039 (__v8df) __B,
1040 (__v8df)
1041 _mm512_setzero_pd (),
1042 (__mmask8) -1,
1043 _MM_FROUND_CUR_DIRECTION);
1044}
1045
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001046static __inline__ __m512d __DEFAULT_FN_ATTRS
1047_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1048{
1049 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1050 (__v8df) __B,
1051 (__v8df) __W,
1052 (__mmask8) __U,
1053 _MM_FROUND_CUR_DIRECTION);
1054}
1055
1056static __inline__ __m512d __DEFAULT_FN_ATTRS
1057_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1058{
1059 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1060 (__v8df) __B,
1061 (__v8df)
1062 _mm512_setzero_pd (),
1063 (__mmask8) __U,
1064 _MM_FROUND_CUR_DIRECTION);
1065}
1066
Michael Kupersteine45af542015-06-30 13:36:19 +00001067static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001068_mm512_min_ps(__m512 __A, __m512 __B)
1069{
1070 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1071 (__v16sf) __B,
1072 (__v16sf)
1073 _mm512_setzero_ps (),
1074 (__mmask16) -1,
1075 _MM_FROUND_CUR_DIRECTION);
1076}
1077
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001078static __inline__ __m512 __DEFAULT_FN_ATTRS
1079_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1080{
1081 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1082 (__v16sf) __B,
1083 (__v16sf) __W,
1084 (__mmask16) __U,
1085 _MM_FROUND_CUR_DIRECTION);
1086}
1087
1088static __inline__ __m512 __DEFAULT_FN_ATTRS
1089_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1090{
1091 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1092 (__v16sf) __B,
1093 (__v16sf)
1094 _mm512_setzero_ps (),
1095 (__mmask16) __U,
1096 _MM_FROUND_CUR_DIRECTION);
1097}
1098
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001099static __inline__ __m128 __DEFAULT_FN_ATTRS
1100_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001101 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001102 (__v4sf) __B,
1103 (__v4sf) __W,
1104 (__mmask8) __U,
1105 _MM_FROUND_CUR_DIRECTION);
1106}
1107
1108static __inline__ __m128 __DEFAULT_FN_ATTRS
1109_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001110 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001111 (__v4sf) __B,
1112 (__v4sf) _mm_setzero_ps (),
1113 (__mmask8) __U,
1114 _MM_FROUND_CUR_DIRECTION);
1115}
1116
Craig Topper8c18e112016-05-17 04:41:50 +00001117#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1118 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1119 (__v4sf)(__m128)(B), \
1120 (__v4sf)_mm_setzero_ps(), \
1121 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001122
Craig Topper8c18e112016-05-17 04:41:50 +00001123#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1124 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1125 (__v4sf)(__m128)(B), \
1126 (__v4sf)(__m128)(W), (__mmask8)(U), \
1127 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001128
Craig Topper8c18e112016-05-17 04:41:50 +00001129#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1130 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1131 (__v4sf)(__m128)(B), \
1132 (__v4sf)_mm_setzero_ps(), \
1133 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001134
1135static __inline__ __m128d __DEFAULT_FN_ATTRS
1136_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001137 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001138 (__v2df) __B,
1139 (__v2df) __W,
1140 (__mmask8) __U,
1141 _MM_FROUND_CUR_DIRECTION);
1142}
1143
1144static __inline__ __m128d __DEFAULT_FN_ATTRS
1145_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001146 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001147 (__v2df) __B,
1148 (__v2df) _mm_setzero_pd (),
1149 (__mmask8) __U,
1150 _MM_FROUND_CUR_DIRECTION);
1151}
1152
Craig Topper8c18e112016-05-17 04:41:50 +00001153#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1154 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1155 (__v2df)(__m128d)(B), \
1156 (__v2df)_mm_setzero_pd(), \
1157 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158
Craig Topper8c18e112016-05-17 04:41:50 +00001159#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1160 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1161 (__v2df)(__m128d)(B), \
1162 (__v2df)(__m128d)(W), \
1163 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001164
Craig Topper8c18e112016-05-17 04:41:50 +00001165#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1166 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1167 (__v2df)(__m128d)(B), \
1168 (__v2df)_mm_setzero_pd(), \
1169 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001170
Adam Nemet0d5bb552014-07-28 17:14:40 +00001171static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001172__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001173_mm512_min_epi32(__m512i __A, __m512i __B)
1174{
1175 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1176 (__v16si) __B,
1177 (__v16si)
1178 _mm512_setzero_si512 (),
1179 (__mmask16) -1);
1180}
1181
Michael Zuckermande860e52016-05-10 11:34:19 +00001182static __inline__ __m512i __DEFAULT_FN_ATTRS
1183_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1184{
1185 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1186 (__v16si) __B,
1187 (__v16si) __W, __M);
1188}
1189
1190static __inline__ __m512i __DEFAULT_FN_ATTRS
1191_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1192{
1193 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1194 (__v16si) __B,
1195 (__v16si)
1196 _mm512_setzero_si512 (),
1197 __M);
1198}
1199
Michael Kupersteine45af542015-06-30 13:36:19 +00001200static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001201_mm512_min_epu32(__m512i __A, __m512i __B)
1202{
1203 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1204 (__v16si) __B,
1205 (__v16si)
1206 _mm512_setzero_si512 (),
1207 (__mmask16) -1);
1208}
1209
Michael Zuckermande860e52016-05-10 11:34:19 +00001210static __inline__ __m512i __DEFAULT_FN_ATTRS
1211_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1212{
1213 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1214 (__v16si) __B,
1215 (__v16si) __W, __M);
1216}
1217
1218static __inline__ __m512i __DEFAULT_FN_ATTRS
1219_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1220{
1221 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1222 (__v16si) __B,
1223 (__v16si)
1224 _mm512_setzero_si512 (),
1225 __M);
1226}
1227
Michael Kupersteine45af542015-06-30 13:36:19 +00001228static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001229_mm512_min_epi64(__m512i __A, __m512i __B)
1230{
1231 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1232 (__v8di) __B,
1233 (__v8di)
1234 _mm512_setzero_si512 (),
1235 (__mmask8) -1);
1236}
1237
Michael Zuckermande860e52016-05-10 11:34:19 +00001238static __inline__ __m512i __DEFAULT_FN_ATTRS
1239_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1240{
1241 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1242 (__v8di) __B,
1243 (__v8di) __W, __M);
1244}
1245
1246static __inline__ __m512i __DEFAULT_FN_ATTRS
1247_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1248{
1249 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1250 (__v8di) __B,
1251 (__v8di)
1252 _mm512_setzero_si512 (),
1253 __M);
1254}
1255
Michael Kupersteine45af542015-06-30 13:36:19 +00001256static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001257_mm512_min_epu64(__m512i __A, __m512i __B)
1258{
1259 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1260 (__v8di) __B,
1261 (__v8di)
1262 _mm512_setzero_si512 (),
1263 (__mmask8) -1);
1264}
1265
Michael Zuckermande860e52016-05-10 11:34:19 +00001266static __inline__ __m512i __DEFAULT_FN_ATTRS
1267_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1268{
1269 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1270 (__v8di) __B,
1271 (__v8di) __W, __M);
1272}
1273
1274static __inline__ __m512i __DEFAULT_FN_ATTRS
1275_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1276{
1277 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1278 (__v8di) __B,
1279 (__v8di)
1280 _mm512_setzero_si512 (),
1281 __M);
1282}
1283
Michael Kupersteine45af542015-06-30 13:36:19 +00001284static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001285_mm512_mul_epi32(__m512i __X, __m512i __Y)
1286{
1287 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1288 (__v16si) __Y,
1289 (__v8di)
1290 _mm512_setzero_si512 (),
1291 (__mmask8) -1);
1292}
1293
Michael Kupersteine45af542015-06-30 13:36:19 +00001294static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001295_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1296{
1297 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1298 (__v16si) __Y,
1299 (__v8di) __W, __M);
1300}
1301
Michael Kupersteine45af542015-06-30 13:36:19 +00001302static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001303_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1304{
1305 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1306 (__v16si) __Y,
1307 (__v8di)
1308 _mm512_setzero_si512 (),
1309 __M);
1310}
1311
Michael Kupersteine45af542015-06-30 13:36:19 +00001312static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001313_mm512_mul_epu32(__m512i __X, __m512i __Y)
1314{
1315 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1316 (__v16si) __Y,
1317 (__v8di)
1318 _mm512_setzero_si512 (),
1319 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001320}
1321
Michael Kupersteine45af542015-06-30 13:36:19 +00001322static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001323_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1324{
1325 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1326 (__v16si) __Y,
1327 (__v8di) __W, __M);
1328}
1329
Michael Kupersteine45af542015-06-30 13:36:19 +00001330static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001331_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1332{
1333 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1334 (__v16si) __Y,
1335 (__v8di)
1336 _mm512_setzero_si512 (),
1337 __M);
1338}
1339
Michael Kupersteine45af542015-06-30 13:36:19 +00001340static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001341_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1342{
1343 return (__m512i) ((__v16si) __A * (__v16si) __B);
1344}
1345
Michael Kupersteine45af542015-06-30 13:36:19 +00001346static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001347_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1348{
1349 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1350 (__v16si) __B,
1351 (__v16si)
1352 _mm512_setzero_si512 (),
1353 __M);
1354}
1355
Michael Kupersteine45af542015-06-30 13:36:19 +00001356static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001357_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1358{
1359 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1360 (__v16si) __B,
1361 (__v16si) __W, __M);
1362}
1363
Michael Kupersteine45af542015-06-30 13:36:19 +00001364static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001365_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001366{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001367 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001368 (__v8df) _mm512_setzero_pd (),
1369 (__mmask8) -1,
1370 _MM_FROUND_CUR_DIRECTION);
1371}
1372
Michael Zuckermancb856772016-05-16 11:42:01 +00001373static __inline__ __m512d __DEFAULT_FN_ATTRS
1374_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1375{
1376 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1377 (__v8df) __W,
1378 (__mmask8) __U,
1379 _MM_FROUND_CUR_DIRECTION);
1380}
1381
1382static __inline__ __m512d __DEFAULT_FN_ATTRS
1383_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1384{
1385 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1386 (__v8df)
1387 _mm512_setzero_pd (),
1388 (__mmask8) __U,
1389 _MM_FROUND_CUR_DIRECTION);
1390}
1391
Michael Kupersteine45af542015-06-30 13:36:19 +00001392static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001393_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001394{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001395 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001396 (__v16sf) _mm512_setzero_ps (),
1397 (__mmask16) -1,
1398 _MM_FROUND_CUR_DIRECTION);
1399}
1400
Michael Zuckermancb856772016-05-16 11:42:01 +00001401static __inline__ __m512 __DEFAULT_FN_ATTRS
1402_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1403{
1404 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1405 (__v16sf) __W,
1406 (__mmask16) __U,
1407 _MM_FROUND_CUR_DIRECTION);
1408}
1409
1410static __inline__ __m512 __DEFAULT_FN_ATTRS
1411_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1412{
1413 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1414 (__v16sf) _mm512_setzero_ps (),
1415 (__mmask16) __U,
1416 _MM_FROUND_CUR_DIRECTION);
1417}
1418
Michael Kupersteine45af542015-06-30 13:36:19 +00001419static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001420_mm512_rsqrt14_pd(__m512d __A)
1421{
1422 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1423 (__v8df)
1424 _mm512_setzero_pd (),
1425 (__mmask8) -1);}
1426
Michael Zuckermancb856772016-05-16 11:42:01 +00001427static __inline__ __m512d __DEFAULT_FN_ATTRS
1428_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1429{
1430 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1431 (__v8df) __W,
1432 (__mmask8) __U);
1433}
1434
1435static __inline__ __m512d __DEFAULT_FN_ATTRS
1436_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1437{
1438 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1439 (__v8df)
1440 _mm512_setzero_pd (),
1441 (__mmask8) __U);
1442}
1443
Michael Kupersteine45af542015-06-30 13:36:19 +00001444static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001445_mm512_rsqrt14_ps(__m512 __A)
1446{
1447 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1448 (__v16sf)
1449 _mm512_setzero_ps (),
1450 (__mmask16) -1);
1451}
1452
Michael Zuckermancb856772016-05-16 11:42:01 +00001453static __inline__ __m512 __DEFAULT_FN_ATTRS
1454_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1455{
1456 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1457 (__v16sf) __W,
1458 (__mmask16) __U);
1459}
1460
1461static __inline__ __m512 __DEFAULT_FN_ATTRS
1462_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1463{
1464 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1465 (__v16sf)
1466 _mm512_setzero_ps (),
1467 (__mmask16) __U);
1468}
1469
Michael Kupersteine45af542015-06-30 13:36:19 +00001470static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001471_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1472{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001473 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001474 (__v4sf) __B,
1475 (__v4sf)
1476 _mm_setzero_ps (),
1477 (__mmask8) -1);
1478}
1479
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001480static __inline__ __m128 __DEFAULT_FN_ATTRS
1481_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1482{
1483 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1484 (__v4sf) __B,
1485 (__v4sf) __W,
1486 (__mmask8) __U);
1487}
1488
1489static __inline__ __m128 __DEFAULT_FN_ATTRS
1490_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1491{
1492 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1493 (__v4sf) __B,
1494 (__v4sf) _mm_setzero_ps (),
1495 (__mmask8) __U);
1496}
1497
Michael Kupersteine45af542015-06-30 13:36:19 +00001498static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001499_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1500{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001501 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001502 (__v2df) __B,
1503 (__v2df)
1504 _mm_setzero_pd (),
1505 (__mmask8) -1);
1506}
1507
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001508static __inline__ __m128d __DEFAULT_FN_ATTRS
1509_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1510{
1511 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1512 (__v2df) __B,
1513 (__v2df) __W,
1514 (__mmask8) __U);
1515}
1516
1517static __inline__ __m128d __DEFAULT_FN_ATTRS
1518_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1519{
1520 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1521 (__v2df) __B,
1522 (__v2df) _mm_setzero_pd (),
1523 (__mmask8) __U);
1524}
1525
Michael Kupersteine45af542015-06-30 13:36:19 +00001526static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001527_mm512_rcp14_pd(__m512d __A)
1528{
1529 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1530 (__v8df)
1531 _mm512_setzero_pd (),
1532 (__mmask8) -1);
1533}
1534
Michael Zuckermancb856772016-05-16 11:42:01 +00001535static __inline__ __m512d __DEFAULT_FN_ATTRS
1536_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1537{
1538 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1539 (__v8df) __W,
1540 (__mmask8) __U);
1541}
1542
1543static __inline__ __m512d __DEFAULT_FN_ATTRS
1544_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1545{
1546 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1547 (__v8df)
1548 _mm512_setzero_pd (),
1549 (__mmask8) __U);
1550}
1551
Michael Kupersteine45af542015-06-30 13:36:19 +00001552static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001553_mm512_rcp14_ps(__m512 __A)
1554{
1555 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1556 (__v16sf)
1557 _mm512_setzero_ps (),
1558 (__mmask16) -1);
1559}
Michael Zuckermancb856772016-05-16 11:42:01 +00001560
1561static __inline__ __m512 __DEFAULT_FN_ATTRS
1562_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1563{
1564 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1565 (__v16sf) __W,
1566 (__mmask16) __U);
1567}
1568
1569static __inline__ __m512 __DEFAULT_FN_ATTRS
1570_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1571{
1572 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1573 (__v16sf)
1574 _mm512_setzero_ps (),
1575 (__mmask16) __U);
1576}
1577
Michael Kupersteine45af542015-06-30 13:36:19 +00001578static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001579_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001580{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001581 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001582 (__v4sf) __B,
1583 (__v4sf)
1584 _mm_setzero_ps (),
1585 (__mmask8) -1);
1586}
1587
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001588static __inline__ __m128 __DEFAULT_FN_ATTRS
1589_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1590{
1591 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1592 (__v4sf) __B,
1593 (__v4sf) __W,
1594 (__mmask8) __U);
1595}
1596
1597static __inline__ __m128 __DEFAULT_FN_ATTRS
1598_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1599{
1600 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1601 (__v4sf) __B,
1602 (__v4sf) _mm_setzero_ps (),
1603 (__mmask8) __U);
1604}
1605
Michael Kupersteine45af542015-06-30 13:36:19 +00001606static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001607_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001608{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001609 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001610 (__v2df) __B,
1611 (__v2df)
1612 _mm_setzero_pd (),
1613 (__mmask8) -1);
1614}
1615
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001616static __inline__ __m128d __DEFAULT_FN_ATTRS
1617_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1618{
1619 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1620 (__v2df) __B,
1621 (__v2df) __W,
1622 (__mmask8) __U);
1623}
1624
1625static __inline__ __m128d __DEFAULT_FN_ATTRS
1626_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1627{
1628 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1629 (__v2df) __B,
1630 (__v2df) _mm_setzero_pd (),
1631 (__mmask8) __U);
1632}
1633
Michael Kupersteine45af542015-06-30 13:36:19 +00001634static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001635_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001636{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001637 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1638 _MM_FROUND_FLOOR,
1639 (__v16sf) __A, -1,
1640 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001641}
1642
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001643static __inline__ __m512 __DEFAULT_FN_ATTRS
1644_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1645{
1646 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1647 _MM_FROUND_FLOOR,
1648 (__v16sf) __W, __U,
1649 _MM_FROUND_CUR_DIRECTION);
1650}
1651
1652
Michael Kupersteine45af542015-06-30 13:36:19 +00001653static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001654_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001655{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001656 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1657 _MM_FROUND_FLOOR,
1658 (__v8df) __A, -1,
1659 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001660}
1661
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001662static __inline__ __m512d __DEFAULT_FN_ATTRS
1663_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1664{
1665 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1666 _MM_FROUND_FLOOR,
1667 (__v8df) __W, __U,
1668 _MM_FROUND_CUR_DIRECTION);
1669}
1670
1671
1672static __inline__ __m512 __DEFAULT_FN_ATTRS
1673_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1674{
1675 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1676 _MM_FROUND_CEIL,
1677 (__v16sf) __W, __U,
1678 _MM_FROUND_CUR_DIRECTION);
1679}
1680
Michael Kupersteine45af542015-06-30 13:36:19 +00001681static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001682_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001683{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001684 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1685 _MM_FROUND_CEIL,
1686 (__v16sf) __A, -1,
1687 _MM_FROUND_CUR_DIRECTION);
1688}
1689
Michael Kupersteine45af542015-06-30 13:36:19 +00001690static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001691_mm512_ceil_pd(__m512d __A)
1692{
1693 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1694 _MM_FROUND_CEIL,
1695 (__v8df) __A, -1,
1696 _MM_FROUND_CUR_DIRECTION);
1697}
1698
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001699static __inline__ __m512d __DEFAULT_FN_ATTRS
1700_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1701{
1702 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1703 _MM_FROUND_CEIL,
1704 (__v8df) __W, __U,
1705 _MM_FROUND_CUR_DIRECTION);
1706}
1707
Michael Kupersteine45af542015-06-30 13:36:19 +00001708static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001709_mm512_abs_epi64(__m512i __A)
1710{
1711 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1712 (__v8di)
1713 _mm512_setzero_si512 (),
1714 (__mmask8) -1);
1715}
1716
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001717static __inline__ __m512i __DEFAULT_FN_ATTRS
1718_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1719{
1720 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1721 (__v8di) __W,
1722 (__mmask8) __U);
1723}
1724
1725static __inline__ __m512i __DEFAULT_FN_ATTRS
1726_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1727{
1728 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1729 (__v8di)
1730 _mm512_setzero_si512 (),
1731 (__mmask8) __U);
1732}
1733
Michael Kupersteine45af542015-06-30 13:36:19 +00001734static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001735_mm512_abs_epi32(__m512i __A)
1736{
1737 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1738 (__v16si)
1739 _mm512_setzero_si512 (),
1740 (__mmask16) -1);
1741}
1742
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001743static __inline__ __m512i __DEFAULT_FN_ATTRS
1744_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1745{
1746 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1747 (__v16si) __W,
1748 (__mmask16) __U);
1749}
1750
1751static __inline__ __m512i __DEFAULT_FN_ATTRS
1752_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1753{
1754 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1755 (__v16si)
1756 _mm512_setzero_si512 (),
1757 (__mmask16) __U);
1758}
1759
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001760static __inline__ __m128 __DEFAULT_FN_ATTRS
1761_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001762 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001763 (__v4sf) __B,
1764 (__v4sf) __W,
1765 (__mmask8) __U,
1766 _MM_FROUND_CUR_DIRECTION);
1767}
1768
1769static __inline__ __m128 __DEFAULT_FN_ATTRS
1770_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001771 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001772 (__v4sf) __B,
1773 (__v4sf) _mm_setzero_ps (),
1774 (__mmask8) __U,
1775 _MM_FROUND_CUR_DIRECTION);
1776}
1777
Craig Topper8c18e112016-05-17 04:41:50 +00001778#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1779 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1780 (__v4sf)(__m128)(B), \
1781 (__v4sf)_mm_setzero_ps(), \
1782 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001783
Craig Topper8c18e112016-05-17 04:41:50 +00001784#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1785 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1786 (__v4sf)(__m128)(B), \
1787 (__v4sf)(__m128)(W), (__mmask8)(U), \
1788 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001789
Craig Topper8c18e112016-05-17 04:41:50 +00001790#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1791 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1792 (__v4sf)(__m128)(B), \
1793 (__v4sf)_mm_setzero_ps(), \
1794 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001795
1796static __inline__ __m128d __DEFAULT_FN_ATTRS
1797_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001798 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001799 (__v2df) __B,
1800 (__v2df) __W,
1801 (__mmask8) __U,
1802 _MM_FROUND_CUR_DIRECTION);
1803}
1804
1805static __inline__ __m128d __DEFAULT_FN_ATTRS
1806_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001807 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001808 (__v2df) __B,
1809 (__v2df) _mm_setzero_pd (),
1810 (__mmask8) __U,
1811 _MM_FROUND_CUR_DIRECTION);
1812}
Craig Topper8c18e112016-05-17 04:41:50 +00001813#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1814 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1815 (__v2df)(__m128d)(B), \
1816 (__v2df)_mm_setzero_pd(), \
1817 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001818
Craig Topper8c18e112016-05-17 04:41:50 +00001819#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1820 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1821 (__v2df)(__m128d)(B), \
1822 (__v2df)(__m128d)(W), \
1823 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001824
Craig Topper8c18e112016-05-17 04:41:50 +00001825#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1826 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1827 (__v2df)(__m128d)(B), \
1828 (__v2df)_mm_setzero_pd(), \
1829 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001830
Asaf Badouhffeb6242015-07-21 15:27:28 +00001831static __inline__ __m512d __DEFAULT_FN_ATTRS
1832_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1833 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1834 (__v8df) __B,
1835 (__v8df) __W,
1836 (__mmask8) __U,
1837 _MM_FROUND_CUR_DIRECTION);
1838}
1839
1840static __inline__ __m512d __DEFAULT_FN_ATTRS
1841_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1842 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1843 (__v8df) __B,
1844 (__v8df) _mm512_setzero_pd (),
1845 (__mmask8) __U,
1846 _MM_FROUND_CUR_DIRECTION);
1847}
1848
1849static __inline__ __m512 __DEFAULT_FN_ATTRS
1850_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1851 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1852 (__v16sf) __B,
1853 (__v16sf) __W,
1854 (__mmask16) __U,
1855 _MM_FROUND_CUR_DIRECTION);
1856}
1857
1858static __inline__ __m512 __DEFAULT_FN_ATTRS
1859_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1860 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1861 (__v16sf) __B,
1862 (__v16sf) _mm512_setzero_ps (),
1863 (__mmask16) __U,
1864 _MM_FROUND_CUR_DIRECTION);
1865}
1866
Craig Topper8c18e112016-05-17 04:41:50 +00001867#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1868 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1869 (__v8df)(__m512d)(B), \
1870 (__v8df)_mm512_setzero_pd(), \
1871 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001872
Craig Topper8c18e112016-05-17 04:41:50 +00001873#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1874 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1875 (__v8df)(__m512d)(B), \
1876 (__v8df)(__m512d)(W), (__mmask8)(U), \
1877 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001878
Craig Topper8c18e112016-05-17 04:41:50 +00001879#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1880 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1881 (__v8df)(__m512d)(B), \
1882 (__v8df)_mm512_setzero_pd(), \
1883 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001884
Craig Topper8c18e112016-05-17 04:41:50 +00001885#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1886 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1887 (__v16sf)(__m512)(B), \
1888 (__v16sf)_mm512_setzero_ps(), \
1889 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001890
Craig Topper8c18e112016-05-17 04:41:50 +00001891#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1892 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1893 (__v16sf)(__m512)(B), \
1894 (__v16sf)(__m512)(W), (__mmask16)(U), \
1895 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001896
Craig Topper8c18e112016-05-17 04:41:50 +00001897#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1898 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1899 (__v16sf)(__m512)(B), \
1900 (__v16sf)_mm512_setzero_ps(), \
1901 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001902
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001903static __inline__ __m128 __DEFAULT_FN_ATTRS
1904_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001905 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001906 (__v4sf) __B,
1907 (__v4sf) __W,
1908 (__mmask8) __U,
1909 _MM_FROUND_CUR_DIRECTION);
1910}
1911
1912static __inline__ __m128 __DEFAULT_FN_ATTRS
1913_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001914 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001915 (__v4sf) __B,
1916 (__v4sf) _mm_setzero_ps (),
1917 (__mmask8) __U,
1918 _MM_FROUND_CUR_DIRECTION);
1919}
Craig Topper8c18e112016-05-17 04:41:50 +00001920#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1921 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1922 (__v4sf)(__m128)(B), \
1923 (__v4sf)_mm_setzero_ps(), \
1924 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001925
Craig Topper8c18e112016-05-17 04:41:50 +00001926#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1927 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1928 (__v4sf)(__m128)(B), \
1929 (__v4sf)(__m128)(W), (__mmask8)(U), \
1930 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001931
Craig Topper8c18e112016-05-17 04:41:50 +00001932#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1933 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1934 (__v4sf)(__m128)(B), \
1935 (__v4sf)_mm_setzero_ps(), \
1936 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001937
1938static __inline__ __m128d __DEFAULT_FN_ATTRS
1939_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001940 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001941 (__v2df) __B,
1942 (__v2df) __W,
1943 (__mmask8) __U,
1944 _MM_FROUND_CUR_DIRECTION);
1945}
1946
1947static __inline__ __m128d __DEFAULT_FN_ATTRS
1948_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001949 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001950 (__v2df) __B,
1951 (__v2df) _mm_setzero_pd (),
1952 (__mmask8) __U,
1953 _MM_FROUND_CUR_DIRECTION);
1954}
1955
Craig Topper8c18e112016-05-17 04:41:50 +00001956#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1957 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1958 (__v2df)(__m128d)(B), \
1959 (__v2df)_mm_setzero_pd(), \
1960 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001961
Craig Topper8c18e112016-05-17 04:41:50 +00001962#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1963 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1964 (__v2df)(__m128d)(B), \
1965 (__v2df)(__m128d)(W), \
1966 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001967
Craig Topper8c18e112016-05-17 04:41:50 +00001968#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1969 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1970 (__v2df)(__m128d)(B), \
1971 (__v2df)_mm_setzero_pd(), \
1972 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001973
Asaf Badouhffeb6242015-07-21 15:27:28 +00001974static __inline__ __m512d __DEFAULT_FN_ATTRS
1975_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1976 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1977 (__v8df) __B,
1978 (__v8df) __W,
1979 (__mmask8) __U,
1980 _MM_FROUND_CUR_DIRECTION);
1981}
1982
1983static __inline__ __m512d __DEFAULT_FN_ATTRS
1984_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1985 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1986 (__v8df) __B,
1987 (__v8df)
1988 _mm512_setzero_pd (),
1989 (__mmask8) __U,
1990 _MM_FROUND_CUR_DIRECTION);
1991}
1992
1993static __inline__ __m512 __DEFAULT_FN_ATTRS
1994_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1995 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1996 (__v16sf) __B,
1997 (__v16sf) __W,
1998 (__mmask16) __U,
1999 _MM_FROUND_CUR_DIRECTION);
2000}
2001
2002static __inline__ __m512 __DEFAULT_FN_ATTRS
2003_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2004 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2005 (__v16sf) __B,
2006 (__v16sf)
2007 _mm512_setzero_ps (),
2008 (__mmask16) __U,
2009 _MM_FROUND_CUR_DIRECTION);
2010}
2011
Craig Topper8c18e112016-05-17 04:41:50 +00002012#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2013 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2014 (__v8df)(__m512d)(B), \
2015 (__v8df)_mm512_setzero_pd(), \
2016 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002017
Craig Topper8c18e112016-05-17 04:41:50 +00002018#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2019 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2020 (__v8df)(__m512d)(B), \
2021 (__v8df)(__m512d)(W), (__mmask8)(U), \
2022 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002023
Craig Topper8c18e112016-05-17 04:41:50 +00002024#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2025 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2026 (__v8df)(__m512d)(B), \
2027 (__v8df)_mm512_setzero_pd(), \
2028 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002029
Craig Topper8c18e112016-05-17 04:41:50 +00002030#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2031 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2032 (__v16sf)(__m512)(B), \
2033 (__v16sf)_mm512_setzero_ps(), \
2034 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002035
Craig Topper8c18e112016-05-17 04:41:50 +00002036#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2037 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2038 (__v16sf)(__m512)(B), \
2039 (__v16sf)(__m512)(W), (__mmask16)(U), \
2040 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002041
Craig Topper8c18e112016-05-17 04:41:50 +00002042#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2043 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2044 (__v16sf)(__m512)(B), \
2045 (__v16sf)_mm512_setzero_ps(), \
2046 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002047
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002048static __inline__ __m128 __DEFAULT_FN_ATTRS
2049_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002050 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002051 (__v4sf) __B,
2052 (__v4sf) __W,
2053 (__mmask8) __U,
2054 _MM_FROUND_CUR_DIRECTION);
2055}
2056
2057static __inline__ __m128 __DEFAULT_FN_ATTRS
2058_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002059 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002060 (__v4sf) __B,
2061 (__v4sf) _mm_setzero_ps (),
2062 (__mmask8) __U,
2063 _MM_FROUND_CUR_DIRECTION);
2064}
Craig Topper8c18e112016-05-17 04:41:50 +00002065#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2066 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2067 (__v4sf)(__m128)(B), \
2068 (__v4sf)_mm_setzero_ps(), \
2069 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002070
Craig Topper8c18e112016-05-17 04:41:50 +00002071#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2072 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2073 (__v4sf)(__m128)(B), \
2074 (__v4sf)(__m128)(W), (__mmask8)(U), \
2075 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002076
Craig Topper8c18e112016-05-17 04:41:50 +00002077#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2078 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2079 (__v4sf)(__m128)(B), \
2080 (__v4sf)_mm_setzero_ps(), \
2081 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002082
2083static __inline__ __m128d __DEFAULT_FN_ATTRS
2084_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002085 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002086 (__v2df) __B,
2087 (__v2df) __W,
2088 (__mmask8) __U,
2089 _MM_FROUND_CUR_DIRECTION);
2090}
2091
2092static __inline__ __m128d __DEFAULT_FN_ATTRS
2093_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002094 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002095 (__v2df) __B,
2096 (__v2df) _mm_setzero_pd (),
2097 (__mmask8) __U,
2098 _MM_FROUND_CUR_DIRECTION);
2099}
2100
Craig Topper8c18e112016-05-17 04:41:50 +00002101#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2102 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2103 (__v2df)(__m128d)(B), \
2104 (__v2df)_mm_setzero_pd(), \
2105 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002106
Craig Topper8c18e112016-05-17 04:41:50 +00002107#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2108 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2109 (__v2df)(__m128d)(B), \
2110 (__v2df)(__m128d)(W), \
2111 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002112
Craig Topper8c18e112016-05-17 04:41:50 +00002113#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2114 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2115 (__v2df)(__m128d)(B), \
2116 (__v2df)_mm_setzero_pd(), \
2117 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002118
Asaf Badouhffeb6242015-07-21 15:27:28 +00002119static __inline__ __m512d __DEFAULT_FN_ATTRS
2120_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2121 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2122 (__v8df) __B,
2123 (__v8df) __W,
2124 (__mmask8) __U,
2125 _MM_FROUND_CUR_DIRECTION);
2126}
2127
2128static __inline__ __m512d __DEFAULT_FN_ATTRS
2129_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2130 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2131 (__v8df) __B,
2132 (__v8df)
2133 _mm512_setzero_pd (),
2134 (__mmask8) __U,
2135 _MM_FROUND_CUR_DIRECTION);
2136}
2137
2138static __inline__ __m512 __DEFAULT_FN_ATTRS
2139_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2140 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2141 (__v16sf) __B,
2142 (__v16sf) __W,
2143 (__mmask16) __U,
2144 _MM_FROUND_CUR_DIRECTION);
2145}
2146
2147static __inline__ __m512 __DEFAULT_FN_ATTRS
2148_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2149 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2150 (__v16sf) __B,
2151 (__v16sf)
2152 _mm512_setzero_ps (),
2153 (__mmask16) __U,
2154 _MM_FROUND_CUR_DIRECTION);
2155}
2156
Craig Topper8c18e112016-05-17 04:41:50 +00002157#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2158 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2159 (__v8df)(__m512d)(B), \
2160 (__v8df)_mm512_setzero_pd(), \
2161 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002162
Craig Topper8c18e112016-05-17 04:41:50 +00002163#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2164 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2165 (__v8df)(__m512d)(B), \
2166 (__v8df)(__m512d)(W), (__mmask8)(U), \
2167 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002168
Craig Topper8c18e112016-05-17 04:41:50 +00002169#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2170 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2171 (__v8df)(__m512d)(B), \
2172 (__v8df)_mm512_setzero_pd(), \
2173 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002174
Craig Topper8c18e112016-05-17 04:41:50 +00002175#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2176 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2177 (__v16sf)(__m512)(B), \
2178 (__v16sf)_mm512_setzero_ps(), \
2179 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002180
Craig Topper8c18e112016-05-17 04:41:50 +00002181#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2182 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2183 (__v16sf)(__m512)(B), \
2184 (__v16sf)(__m512)(W), (__mmask16)(U), \
2185 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002186
Craig Topper8c18e112016-05-17 04:41:50 +00002187#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2188 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2189 (__v16sf)(__m512)(B), \
2190 (__v16sf)_mm512_setzero_ps(), \
2191 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002192
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002193static __inline__ __m128 __DEFAULT_FN_ATTRS
2194_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002195 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002196 (__v4sf) __B,
2197 (__v4sf) __W,
2198 (__mmask8) __U,
2199 _MM_FROUND_CUR_DIRECTION);
2200}
2201
2202static __inline__ __m128 __DEFAULT_FN_ATTRS
2203_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002204 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002205 (__v4sf) __B,
2206 (__v4sf) _mm_setzero_ps (),
2207 (__mmask8) __U,
2208 _MM_FROUND_CUR_DIRECTION);
2209}
2210
Craig Topper8c18e112016-05-17 04:41:50 +00002211#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2212 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2213 (__v4sf)(__m128)(B), \
2214 (__v4sf)_mm_setzero_ps(), \
2215 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002216
Craig Topper8c18e112016-05-17 04:41:50 +00002217#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2218 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2219 (__v4sf)(__m128)(B), \
2220 (__v4sf)(__m128)(W), (__mmask8)(U), \
2221 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002222
Craig Topper8c18e112016-05-17 04:41:50 +00002223#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2224 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2225 (__v4sf)(__m128)(B), \
2226 (__v4sf)_mm_setzero_ps(), \
2227 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002228
2229static __inline__ __m128d __DEFAULT_FN_ATTRS
2230_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002231 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002232 (__v2df) __B,
2233 (__v2df) __W,
2234 (__mmask8) __U,
2235 _MM_FROUND_CUR_DIRECTION);
2236}
2237
2238static __inline__ __m128d __DEFAULT_FN_ATTRS
2239_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002240 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002241 (__v2df) __B,
2242 (__v2df) _mm_setzero_pd (),
2243 (__mmask8) __U,
2244 _MM_FROUND_CUR_DIRECTION);
2245}
2246
Craig Topper8c18e112016-05-17 04:41:50 +00002247#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2248 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2249 (__v2df)(__m128d)(B), \
2250 (__v2df)_mm_setzero_pd(), \
2251 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002252
Craig Topper8c18e112016-05-17 04:41:50 +00002253#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2254 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2255 (__v2df)(__m128d)(B), \
2256 (__v2df)(__m128d)(W), \
2257 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002258
Craig Topper8c18e112016-05-17 04:41:50 +00002259#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2260 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2261 (__v2df)(__m128d)(B), \
2262 (__v2df)_mm_setzero_pd(), \
2263 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002264
Asaf Badouhffeb6242015-07-21 15:27:28 +00002265static __inline__ __m512d __DEFAULT_FN_ATTRS
2266_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2267 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2268 (__v8df) __B,
2269 (__v8df) __W,
2270 (__mmask8) __U,
2271 _MM_FROUND_CUR_DIRECTION);
2272}
2273
2274static __inline__ __m512d __DEFAULT_FN_ATTRS
2275_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2276 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2277 (__v8df) __B,
2278 (__v8df)
2279 _mm512_setzero_pd (),
2280 (__mmask8) __U,
2281 _MM_FROUND_CUR_DIRECTION);
2282}
2283
2284static __inline__ __m512 __DEFAULT_FN_ATTRS
2285_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2286 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2287 (__v16sf) __B,
2288 (__v16sf) __W,
2289 (__mmask16) __U,
2290 _MM_FROUND_CUR_DIRECTION);
2291}
2292
2293static __inline__ __m512 __DEFAULT_FN_ATTRS
2294_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2295 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2296 (__v16sf) __B,
2297 (__v16sf)
2298 _mm512_setzero_ps (),
2299 (__mmask16) __U,
2300 _MM_FROUND_CUR_DIRECTION);
2301}
2302
Craig Topper8c18e112016-05-17 04:41:50 +00002303#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2304 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2305 (__v8df)(__m512d)(B), \
2306 (__v8df)_mm512_setzero_pd(), \
2307 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002308
Craig Topper8c18e112016-05-17 04:41:50 +00002309#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2310 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2311 (__v8df)(__m512d)(B), \
2312 (__v8df)(__m512d)(W), (__mmask8)(U), \
2313 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002314
Craig Topper8c18e112016-05-17 04:41:50 +00002315#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2316 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2317 (__v8df)(__m512d)(B), \
2318 (__v8df)_mm512_setzero_pd(), \
2319 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002320
Craig Topper8c18e112016-05-17 04:41:50 +00002321#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2322 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2323 (__v16sf)(__m512)(B), \
2324 (__v16sf)_mm512_setzero_ps(), \
2325 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002326
Craig Topper8c18e112016-05-17 04:41:50 +00002327#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2328 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2329 (__v16sf)(__m512)(B), \
2330 (__v16sf)(__m512)(W), (__mmask16)(U), \
2331 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002332
Craig Topper8c18e112016-05-17 04:41:50 +00002333#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2334 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2335 (__v16sf)(__m512)(B), \
2336 (__v16sf)_mm512_setzero_ps(), \
2337 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002338
Craig Topper72c7d512015-02-01 07:35:35 +00002339#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002340 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2341 (__v16sf)(__m512)(A), (__mmask16)-1, \
2342 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002343
Craig Topper8c18e112016-05-17 04:41:50 +00002344#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2345 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2346 (__v16sf)(__m512)(A), (__mmask16)(B), \
2347 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002348
Craig Topper8c18e112016-05-17 04:41:50 +00002349#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2350 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2351 (__v16sf)_mm512_setzero_ps(), \
2352 (__mmask16)(A), \
2353 _MM_FROUND_CUR_DIRECTION); })
2354
Craig Topper72c7d512015-02-01 07:35:35 +00002355#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002356 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2357 (__v8df)(__m512d)(A), (__mmask8)-1, \
2358 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002359
Craig Topper8c18e112016-05-17 04:41:50 +00002360#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2361 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2362 (__v8df)(__m512d)(A), (__mmask8)(B), \
2363 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002364
Craig Topper8c18e112016-05-17 04:41:50 +00002365#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2366 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2367 (__v8df)_mm512_setzero_pd(), \
2368 (__mmask8)(A), \
2369 _MM_FROUND_CUR_DIRECTION); })
2370
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002371#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002372 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2373 (__v8df)(__m512d)(B), \
2374 (__v8df)(__m512d)(C), (__mmask8)-1, \
2375 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002376
2377
2378#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002379 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2380 (__v8df)(__m512d)(B), \
2381 (__v8df)(__m512d)(C), \
2382 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002383
2384
2385#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002386 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2387 (__v8df)(__m512d)(B), \
2388 (__v8df)(__m512d)(C), \
2389 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002390
2391
2392#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002393 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2394 (__v8df)(__m512d)(B), \
2395 (__v8df)(__m512d)(C), \
2396 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002397
2398
2399#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002400 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2401 (__v8df)(__m512d)(B), \
2402 -(__v8df)(__m512d)(C), \
2403 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002404
2405
2406#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002407 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2408 (__v8df)(__m512d)(B), \
2409 -(__v8df)(__m512d)(C), \
2410 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002411
2412
2413#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002414 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2415 (__v8df)(__m512d)(B), \
2416 -(__v8df)(__m512d)(C), \
2417 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002418
2419
2420#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002421 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2422 (__v8df)(__m512d)(B), \
2423 (__v8df)(__m512d)(C), (__mmask8)-1, \
2424 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002425
2426
2427#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002428 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2429 (__v8df)(__m512d)(B), \
2430 (__v8df)(__m512d)(C), \
2431 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002432
2433
2434#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002435 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2436 (__v8df)(__m512d)(B), \
2437 (__v8df)(__m512d)(C), \
2438 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002439
2440
2441#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002442 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2443 (__v8df)(__m512d)(B), \
2444 -(__v8df)(__m512d)(C), \
2445 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002446
2447
2448#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002449 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2450 (__v8df)(__m512d)(B), \
2451 -(__v8df)(__m512d)(C), \
2452 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002453
2454
Michael Kupersteine45af542015-06-30 13:36:19 +00002455static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002456_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2457{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002458 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2459 (__v8df) __B,
2460 (__v8df) __C,
2461 (__mmask8) -1,
2462 _MM_FROUND_CUR_DIRECTION);
2463}
2464
Michael Kupersteine45af542015-06-30 13:36:19 +00002465static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002466_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2467{
2468 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2469 (__v8df) __B,
2470 (__v8df) __C,
2471 (__mmask8) __U,
2472 _MM_FROUND_CUR_DIRECTION);
2473}
2474
Michael Kupersteine45af542015-06-30 13:36:19 +00002475static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002476_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2477{
2478 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2479 (__v8df) __B,
2480 (__v8df) __C,
2481 (__mmask8) __U,
2482 _MM_FROUND_CUR_DIRECTION);
2483}
2484
Michael Kupersteine45af542015-06-30 13:36:19 +00002485static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002486_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2487{
2488 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2489 (__v8df) __B,
2490 (__v8df) __C,
2491 (__mmask8) __U,
2492 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002493}
2494
Michael Kupersteine45af542015-06-30 13:36:19 +00002495static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002496_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2497{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002498 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2499 (__v8df) __B,
2500 -(__v8df) __C,
2501 (__mmask8) -1,
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_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2507{
2508 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__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_fmsub_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_fnmadd_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);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002533}
2534
Michael Kupersteine45af542015-06-30 13:36:19 +00002535static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002536_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2537{
2538 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__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_fnmadd_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);
2553}
2554
Michael Kupersteine45af542015-06-30 13:36:19 +00002555static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002556_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2557{
2558 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2559 (__v8df) __B,
2560 -(__v8df) __C,
2561 (__mmask8) -1,
2562 _MM_FROUND_CUR_DIRECTION);
2563}
2564
Michael Kupersteine45af542015-06-30 13:36:19 +00002565static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002566_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2567{
2568 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2569 (__v8df) __B,
2570 -(__v8df) __C,
2571 (__mmask8) __U,
2572 _MM_FROUND_CUR_DIRECTION);
2573}
2574
2575#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002576 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2577 (__v16sf)(__m512)(B), \
2578 (__v16sf)(__m512)(C), (__mmask16)-1, \
2579 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002580
2581
2582#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002583 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2584 (__v16sf)(__m512)(B), \
2585 (__v16sf)(__m512)(C), \
2586 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002587
2588
2589#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002590 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2591 (__v16sf)(__m512)(B), \
2592 (__v16sf)(__m512)(C), \
2593 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002594
2595
2596#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002597 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2598 (__v16sf)(__m512)(B), \
2599 (__v16sf)(__m512)(C), \
2600 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002601
2602
2603#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002604 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2605 (__v16sf)(__m512)(B), \
2606 -(__v16sf)(__m512)(C), \
2607 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002608
2609
2610#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002611 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2612 (__v16sf)(__m512)(B), \
2613 -(__v16sf)(__m512)(C), \
2614 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002615
2616
2617#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002618 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2619 (__v16sf)(__m512)(B), \
2620 -(__v16sf)(__m512)(C), \
2621 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002622
2623
2624#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002625 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2626 (__v16sf)(__m512)(B), \
2627 (__v16sf)(__m512)(C), (__mmask16)-1, \
2628 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002629
2630
2631#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002632 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2633 (__v16sf)(__m512)(B), \
2634 (__v16sf)(__m512)(C), \
2635 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002636
2637
2638#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002639 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2640 (__v16sf)(__m512)(B), \
2641 (__v16sf)(__m512)(C), \
2642 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002643
2644
2645#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002646 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2647 (__v16sf)(__m512)(B), \
2648 -(__v16sf)(__m512)(C), \
2649 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002650
2651
2652#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002653 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2654 (__v16sf)(__m512)(B), \
2655 -(__v16sf)(__m512)(C), \
2656 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002657
2658
Michael Kupersteine45af542015-06-30 13:36:19 +00002659static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002660_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2661{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002662 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2663 (__v16sf) __B,
2664 (__v16sf) __C,
2665 (__mmask16) -1,
2666 _MM_FROUND_CUR_DIRECTION);
2667}
2668
Michael Kupersteine45af542015-06-30 13:36:19 +00002669static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002670_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2671{
2672 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2673 (__v16sf) __B,
2674 (__v16sf) __C,
2675 (__mmask16) __U,
2676 _MM_FROUND_CUR_DIRECTION);
2677}
2678
Michael Kupersteine45af542015-06-30 13:36:19 +00002679static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002680_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2681{
2682 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2683 (__v16sf) __B,
2684 (__v16sf) __C,
2685 (__mmask16) __U,
2686 _MM_FROUND_CUR_DIRECTION);
2687}
2688
Michael Kupersteine45af542015-06-30 13:36:19 +00002689static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002690_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2691{
2692 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2693 (__v16sf) __B,
2694 (__v16sf) __C,
2695 (__mmask16) __U,
2696 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002697}
2698
Michael Kupersteine45af542015-06-30 13:36:19 +00002699static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002700_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2701{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002702 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2703 (__v16sf) __B,
2704 -(__v16sf) __C,
2705 (__mmask16) -1,
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_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2711{
2712 return (__m512) __builtin_ia32_vfmaddps512_mask ((__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_fmsub_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_fnmadd_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);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002737}
2738
Michael Kupersteine45af542015-06-30 13:36:19 +00002739static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002740_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2741{
2742 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__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_fnmadd_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);
2757}
2758
Michael Kupersteine45af542015-06-30 13:36:19 +00002759static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002760_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2761{
2762 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2763 (__v16sf) __B,
2764 -(__v16sf) __C,
2765 (__mmask16) -1,
2766 _MM_FROUND_CUR_DIRECTION);
2767}
2768
Michael Kupersteine45af542015-06-30 13:36:19 +00002769static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002770_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2771{
2772 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2773 (__v16sf) __B,
2774 -(__v16sf) __C,
2775 (__mmask16) __U,
2776 _MM_FROUND_CUR_DIRECTION);
2777}
2778
2779#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002780 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2781 (__v8df)(__m512d)(B), \
2782 (__v8df)(__m512d)(C), \
2783 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002784
2785
2786#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002787 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2788 (__v8df)(__m512d)(B), \
2789 (__v8df)(__m512d)(C), \
2790 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002791
2792
2793#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002794 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2795 (__v8df)(__m512d)(B), \
2796 (__v8df)(__m512d)(C), \
2797 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002798
2799
2800#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002801 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2802 (__v8df)(__m512d)(B), \
2803 (__v8df)(__m512d)(C), \
2804 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002805
2806
2807#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002808 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2809 (__v8df)(__m512d)(B), \
2810 -(__v8df)(__m512d)(C), \
2811 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002812
2813
2814#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002815 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2816 (__v8df)(__m512d)(B), \
2817 -(__v8df)(__m512d)(C), \
2818 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002819
2820
2821#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002822 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2823 (__v8df)(__m512d)(B), \
2824 -(__v8df)(__m512d)(C), \
2825 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002826
2827
Michael Kupersteine45af542015-06-30 13:36:19 +00002828static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002829_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2830{
2831 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2832 (__v8df) __B,
2833 (__v8df) __C,
2834 (__mmask8) -1,
2835 _MM_FROUND_CUR_DIRECTION);
2836}
2837
Michael Kupersteine45af542015-06-30 13:36:19 +00002838static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002839_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2840{
2841 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2842 (__v8df) __B,
2843 (__v8df) __C,
2844 (__mmask8) __U,
2845 _MM_FROUND_CUR_DIRECTION);
2846}
2847
Michael Kupersteine45af542015-06-30 13:36:19 +00002848static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002849_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2850{
2851 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2852 (__v8df) __B,
2853 (__v8df) __C,
2854 (__mmask8) __U,
2855 _MM_FROUND_CUR_DIRECTION);
2856}
2857
Michael Kupersteine45af542015-06-30 13:36:19 +00002858static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002859_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2860{
2861 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2862 (__v8df) __B,
2863 (__v8df) __C,
2864 (__mmask8) __U,
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_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2870{
2871 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2872 (__v8df) __B,
2873 -(__v8df) __C,
2874 (__mmask8) -1,
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_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2880{
2881 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__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_fmsubadd_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
2898#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002899 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2900 (__v16sf)(__m512)(B), \
2901 (__v16sf)(__m512)(C), \
2902 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002903
2904
2905#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002906 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2907 (__v16sf)(__m512)(B), \
2908 (__v16sf)(__m512)(C), \
2909 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002910
2911
2912#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002913 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2914 (__v16sf)(__m512)(B), \
2915 (__v16sf)(__m512)(C), \
2916 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002917
2918
2919#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002920 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2921 (__v16sf)(__m512)(B), \
2922 (__v16sf)(__m512)(C), \
2923 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002924
2925
2926#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002927 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2928 (__v16sf)(__m512)(B), \
2929 -(__v16sf)(__m512)(C), \
2930 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002931
2932
2933#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002934 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2935 (__v16sf)(__m512)(B), \
2936 -(__v16sf)(__m512)(C), \
2937 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002938
2939
2940#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002941 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2942 (__v16sf)(__m512)(B), \
2943 -(__v16sf)(__m512)(C), \
2944 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002945
2946
Michael Kupersteine45af542015-06-30 13:36:19 +00002947static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002948_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2949{
2950 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2951 (__v16sf) __B,
2952 (__v16sf) __C,
2953 (__mmask16) -1,
2954 _MM_FROUND_CUR_DIRECTION);
2955}
2956
Michael Kupersteine45af542015-06-30 13:36:19 +00002957static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002958_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2959{
2960 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2961 (__v16sf) __B,
2962 (__v16sf) __C,
2963 (__mmask16) __U,
2964 _MM_FROUND_CUR_DIRECTION);
2965}
2966
Michael Kupersteine45af542015-06-30 13:36:19 +00002967static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002968_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2969{
2970 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2971 (__v16sf) __B,
2972 (__v16sf) __C,
2973 (__mmask16) __U,
2974 _MM_FROUND_CUR_DIRECTION);
2975}
2976
Michael Kupersteine45af542015-06-30 13:36:19 +00002977static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002978_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2979{
2980 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2981 (__v16sf) __B,
2982 (__v16sf) __C,
2983 (__mmask16) __U,
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_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2989{
2990 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2991 (__v16sf) __B,
2992 -(__v16sf) __C,
2993 (__mmask16) -1,
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_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2999{
3000 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__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_fmsubadd_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
3017#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003018 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3019 (__v8df)(__m512d)(B), \
3020 (__v8df)(__m512d)(C), \
3021 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003022
3023
Michael Kupersteine45af542015-06-30 13:36:19 +00003024static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003025_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3026{
3027 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3028 (__v8df) __B,
3029 (__v8df) __C,
3030 (__mmask8) __U,
3031 _MM_FROUND_CUR_DIRECTION);
3032}
3033
3034#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003035 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3036 (__v16sf)(__m512)(B), \
3037 (__v16sf)(__m512)(C), \
3038 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003039
3040
Michael Kupersteine45af542015-06-30 13:36:19 +00003041static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003042_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3043{
3044 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3045 (__v16sf) __B,
3046 (__v16sf) __C,
3047 (__mmask16) __U,
3048 _MM_FROUND_CUR_DIRECTION);
3049}
3050
3051#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003052 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3053 (__v8df)(__m512d)(B), \
3054 (__v8df)(__m512d)(C), \
3055 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003056
3057
Michael Kupersteine45af542015-06-30 13:36:19 +00003058static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003059_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3060{
3061 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3062 (__v8df) __B,
3063 (__v8df) __C,
3064 (__mmask8) __U,
3065 _MM_FROUND_CUR_DIRECTION);
3066}
3067
3068#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003069 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3070 (__v16sf)(__m512)(B), \
3071 (__v16sf)(__m512)(C), \
3072 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003073
3074
Michael Kupersteine45af542015-06-30 13:36:19 +00003075static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003076_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3077{
3078 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3079 (__v16sf) __B,
3080 (__v16sf) __C,
3081 (__mmask16) __U,
3082 _MM_FROUND_CUR_DIRECTION);
3083}
3084
3085#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003086 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3087 (__v8df)(__m512d)(B), \
3088 (__v8df)(__m512d)(C), \
3089 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003090
3091
Michael Kupersteine45af542015-06-30 13:36:19 +00003092static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003093_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3094{
3095 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3096 (__v8df) __B,
3097 (__v8df) __C,
3098 (__mmask8) __U,
3099 _MM_FROUND_CUR_DIRECTION);
3100}
3101
3102#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003103 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3104 (__v16sf)(__m512)(B), \
3105 (__v16sf)(__m512)(C), \
3106 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003107
3108
Michael Kupersteine45af542015-06-30 13:36:19 +00003109static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003110_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3111{
3112 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3113 (__v16sf) __B,
3114 (__v16sf) __C,
3115 (__mmask16) __U,
3116 _MM_FROUND_CUR_DIRECTION);
3117}
3118
3119#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003120 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3121 (__v8df)(__m512d)(B), \
3122 (__v8df)(__m512d)(C), \
3123 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003124
3125
3126#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003127 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3128 (__v8df)(__m512d)(B), \
3129 (__v8df)(__m512d)(C), \
3130 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003131
3132
Michael Kupersteine45af542015-06-30 13:36:19 +00003133static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003134_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3135{
3136 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3137 (__v8df) __B,
3138 (__v8df) __C,
3139 (__mmask8) __U,
3140 _MM_FROUND_CUR_DIRECTION);
3141}
3142
Michael Kupersteine45af542015-06-30 13:36:19 +00003143static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003144_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3145{
3146 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3147 (__v8df) __B,
3148 (__v8df) __C,
3149 (__mmask8) __U,
3150 _MM_FROUND_CUR_DIRECTION);
3151}
3152
3153#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003154 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3155 (__v16sf)(__m512)(B), \
3156 (__v16sf)(__m512)(C), \
3157 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003158
3159
3160#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003161 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3162 (__v16sf)(__m512)(B), \
3163 (__v16sf)(__m512)(C), \
3164 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003165
3166
Michael Kupersteine45af542015-06-30 13:36:19 +00003167static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003168_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3169{
3170 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3171 (__v16sf) __B,
3172 (__v16sf) __C,
3173 (__mmask16) __U,
3174 _MM_FROUND_CUR_DIRECTION);
3175}
3176
Michael Kupersteine45af542015-06-30 13:36:19 +00003177static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003178_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3179{
3180 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3181 (__v16sf) __B,
3182 (__v16sf) __C,
3183 (__mmask16) __U,
3184 _MM_FROUND_CUR_DIRECTION);
3185}
3186
3187
3188
Adam Nemet0d5bb552014-07-28 17:14:40 +00003189/* Vector permutations */
3190
Michael Kupersteine45af542015-06-30 13:36:19 +00003191static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003192_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3193{
3194 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3195 /* idx */ ,
3196 (__v16si) __A,
3197 (__v16si) __B,
3198 (__mmask16) -1);
3199}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003200
3201static __inline__ __m512i __DEFAULT_FN_ATTRS
3202_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3203 __m512i __I, __m512i __B)
3204{
3205 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3206 /* idx */ ,
3207 (__v16si) __A,
3208 (__v16si) __B,
3209 (__mmask16) __U);
3210}
3211
3212static __inline__ __m512i __DEFAULT_FN_ATTRS
3213_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3214 __m512i __I, __m512i __B)
3215{
3216 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3217 /* idx */ ,
3218 (__v16si) __A,
3219 (__v16si) __B,
3220 (__mmask16) __U);
3221}
3222
Michael Kupersteine45af542015-06-30 13:36:19 +00003223static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003224_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3225{
3226 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3227 /* idx */ ,
3228 (__v8di) __A,
3229 (__v8di) __B,
3230 (__mmask8) -1);
3231}
3232
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003233static __inline__ __m512i __DEFAULT_FN_ATTRS
3234_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3235 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003236{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003237 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003238 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003239 (__v8di) __A,
3240 (__v8di) __B,
3241 (__mmask8) __U);
3242}
3243
3244
3245static __inline__ __m512i __DEFAULT_FN_ATTRS
3246_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3247 __m512i __I, __m512i __B)
3248{
3249 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3250 /* idx */ ,
3251 (__v8di) __A,
3252 (__v8di) __B,
3253 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003254}
3255
Craig Topper67826a52015-02-01 07:35:40 +00003256#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3257 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003258 (__v8di)(__m512i)(B), (int)(I), \
3259 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003260 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003261
Craig Topper8c18e112016-05-17 04:41:50 +00003262#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3263 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3264 (__v8di)(__m512i)(B), (int)(imm), \
3265 (__v8di)(__m512i)(W), \
3266 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003267
Craig Topper8c18e112016-05-17 04:41:50 +00003268#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3269 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3270 (__v8di)(__m512i)(B), (int)(imm), \
3271 (__v8di)_mm512_setzero_si512(), \
3272 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003273
Craig Topper67826a52015-02-01 07:35:40 +00003274#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003275 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3276 (__v16si)(__m512i)(B), (int)(I), \
3277 (__v16si)_mm512_setzero_si512(), \
3278 (__mmask16)-1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003279
Craig Topper8c18e112016-05-17 04:41:50 +00003280#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3281 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3282 (__v16si)(__m512i)(B), (int)(imm), \
3283 (__v16si)(__m512i)(W), \
3284 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003285
Craig Topper8c18e112016-05-17 04:41:50 +00003286#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3287 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3288 (__v16si)(__m512i)(B), (int)(imm), \
3289 (__v16si)_mm512_setzero_si512(), \
3290 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003291/* Vector Extract */
3292
3293#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003294 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3295 (__v4df)_mm256_setzero_si256(), \
3296 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003297
Craig Topper8c18e112016-05-17 04:41:50 +00003298#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3299 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3300 (__v4df)(__m256d)(W), \
3301 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003302
Craig Topper8c18e112016-05-17 04:41:50 +00003303#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3304 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3305 (__v4df)_mm256_setzero_pd(), \
3306 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003307
Adam Nemetf893ede2015-01-19 20:12:05 +00003308#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003309 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3310 (__v4sf)_mm_setzero_ps(), \
3311 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003312
Craig Topper8c18e112016-05-17 04:41:50 +00003313#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3314 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3315 (__v4sf)(__m128)(W), \
3316 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003317
Craig Topper8c18e112016-05-17 04:41:50 +00003318#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3319 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3320 (__v4sf)_mm_setzero_ps(), \
3321 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003322/* Vector Blend */
3323
Michael Kupersteine45af542015-06-30 13:36:19 +00003324static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003325_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3326{
3327 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3328 (__v8df) __W,
3329 (__mmask8) __U);
3330}
3331
Michael Kupersteine45af542015-06-30 13:36:19 +00003332static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003333_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3334{
3335 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3336 (__v16sf) __W,
3337 (__mmask16) __U);
3338}
3339
Michael Kupersteine45af542015-06-30 13:36:19 +00003340static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003341_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3342{
3343 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3344 (__v8di) __W,
3345 (__mmask8) __U);
3346}
3347
Michael Kupersteine45af542015-06-30 13:36:19 +00003348static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003349_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3350{
3351 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3352 (__v16si) __W,
3353 (__mmask16) __U);
3354}
3355
3356/* Compare */
3357
Craig Topper53565c62015-02-01 22:27:40 +00003358#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3359 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003360 (__v16sf)(__m512)(B), (int)(P), \
3361 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003362
Craig Topper53565c62015-02-01 22:27:40 +00003363#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3364 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003365 (__v16sf)(__m512)(B), (int)(P), \
3366 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003367
3368#define _mm512_cmp_ps_mask(A, B, P) \
3369 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3370
3371#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3372 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3373
3374#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3375 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003376 (__v8df)(__m512d)(B), (int)(P), \
3377 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003378
3379#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3380 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003381 (__v8df)(__m512d)(B), (int)(P), \
3382 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003383
3384#define _mm512_cmp_pd_mask(A, B, P) \
3385 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3386
3387#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3388 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003389
3390/* Conversion */
3391
Michael Kupersteine45af542015-06-30 13:36:19 +00003392static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003393_mm512_cvttps_epu32(__m512 __A)
3394{
3395 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3396 (__v16si)
3397 _mm512_setzero_si512 (),
3398 (__mmask16) -1,
3399 _MM_FROUND_CUR_DIRECTION);
3400}
3401
Michael Zuckermanf1544752016-05-09 10:32:51 +00003402static __inline__ __m512i __DEFAULT_FN_ATTRS
3403_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3404{
3405 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3406 (__v16si) __W,
3407 (__mmask16) __U,
3408 _MM_FROUND_CUR_DIRECTION);
3409}
3410
3411static __inline__ __m512i __DEFAULT_FN_ATTRS
3412_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3413{
3414 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3415 (__v16si) _mm512_setzero_si512 (),
3416 (__mmask16) __U,
3417 _MM_FROUND_CUR_DIRECTION);
3418}
3419
Craig Topper72c7d512015-02-01 07:35:35 +00003420#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003421 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003422 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003423 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003424
Craig Topper72c7d512015-02-01 07:35:35 +00003425#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003426 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003427 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003428 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003429
Michael Zuckermanf1544752016-05-09 10:32:51 +00003430static __inline__ __m512 __DEFAULT_FN_ATTRS
3431_mm512_cvtepu32_ps (__m512i __A)
3432{
3433 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3434 (__v16sf) _mm512_undefined_ps (),
3435 (__mmask16) -1,
3436 _MM_FROUND_CUR_DIRECTION);
3437}
3438
3439static __inline__ __m512 __DEFAULT_FN_ATTRS
3440_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3441{
3442 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3443 (__v16sf) __W,
3444 (__mmask16) __U,
3445 _MM_FROUND_CUR_DIRECTION);
3446}
3447
3448static __inline__ __m512 __DEFAULT_FN_ATTRS
3449_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3450{
3451 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3452 (__v16sf) _mm512_setzero_ps (),
3453 (__mmask16) __U,
3454 _MM_FROUND_CUR_DIRECTION);
3455}
3456
Michael Kupersteine45af542015-06-30 13:36:19 +00003457static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003458_mm512_cvtepi32_pd(__m256i __A)
3459{
3460 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003461 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003462 _mm512_setzero_pd (),
3463 (__mmask8) -1);
3464}
3465
Michael Zuckermanf1544752016-05-09 10:32:51 +00003466static __inline__ __m512d __DEFAULT_FN_ATTRS
3467_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3468{
3469 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3470 (__v8df) __W,
3471 (__mmask8) __U);
3472}
3473
3474static __inline__ __m512d __DEFAULT_FN_ATTRS
3475_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3476{
3477 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3478 (__v8df) _mm512_setzero_pd (),
3479 (__mmask8) __U);
3480}
3481
3482static __inline__ __m512 __DEFAULT_FN_ATTRS
3483_mm512_cvtepi32_ps (__m512i __A)
3484{
3485 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3486 (__v16sf) _mm512_undefined_ps (),
3487 (__mmask16) -1,
3488 _MM_FROUND_CUR_DIRECTION);
3489}
3490
3491static __inline__ __m512 __DEFAULT_FN_ATTRS
3492_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3493{
3494 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3495 (__v16sf) __W,
3496 (__mmask16) __U,
3497 _MM_FROUND_CUR_DIRECTION);
3498}
3499
3500static __inline__ __m512 __DEFAULT_FN_ATTRS
3501_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3502{
3503 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3504 (__v16sf) _mm512_setzero_ps (),
3505 (__mmask16) __U,
3506 _MM_FROUND_CUR_DIRECTION);
3507}
3508
Michael Kupersteine45af542015-06-30 13:36:19 +00003509static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003510_mm512_cvtepu32_pd(__m256i __A)
3511{
3512 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3513 (__v8df)
3514 _mm512_setzero_pd (),
3515 (__mmask8) -1);
3516}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003517
Michael Zuckermanf1544752016-05-09 10:32:51 +00003518static __inline__ __m512d __DEFAULT_FN_ATTRS
3519_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3520{
3521 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3522 (__v8df) __W,
3523 (__mmask8) __U);
3524}
3525
3526static __inline__ __m512d __DEFAULT_FN_ATTRS
3527_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3528{
3529 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3530 (__v8df) _mm512_setzero_pd (),
3531 (__mmask8) __U);
3532}
3533
Craig Topper72c7d512015-02-01 07:35:35 +00003534#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003535 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003536 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003537 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003538
Michael Zuckermanf1544752016-05-09 10:32:51 +00003539static __inline__ __m256 __DEFAULT_FN_ATTRS
3540_mm512_cvtpd_ps (__m512d __A)
3541{
3542 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3543 (__v8sf) _mm256_undefined_ps (),
3544 (__mmask8) -1,
3545 _MM_FROUND_CUR_DIRECTION);
3546}
3547
3548static __inline__ __m256 __DEFAULT_FN_ATTRS
3549_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3550{
3551 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3552 (__v8sf) __W,
3553 (__mmask8) __U,
3554 _MM_FROUND_CUR_DIRECTION);
3555}
3556
3557static __inline__ __m256 __DEFAULT_FN_ATTRS
3558_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3559{
3560 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3561 (__v8sf) _mm256_setzero_ps (),
3562 (__mmask8) __U,
3563 _MM_FROUND_CUR_DIRECTION);
3564}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003565
Craig Topper72c7d512015-02-01 07:35:35 +00003566#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003567 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003568 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003569 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003570
Craig Topper8c18e112016-05-17 04:41:50 +00003571#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3572 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3573 (__v16hi)(__m256i)(U), \
3574 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003575
Craig Topper8c18e112016-05-17 04:41:50 +00003576#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3577 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3578 (__v16hi)_mm256_setzero_si256(), \
3579 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003580
3581
Michael Kupersteine45af542015-06-30 13:36:19 +00003582static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003583_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003584{
3585 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003586 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003587 _mm512_setzero_ps (),
3588 (__mmask16) -1,
3589 _MM_FROUND_CUR_DIRECTION);
3590}
3591
Michael Zuckermanf1544752016-05-09 10:32:51 +00003592static __inline__ __m512 __DEFAULT_FN_ATTRS
3593_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003594{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003595 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3596 (__v16sf) __W,
3597 (__mmask16) __U,
3598 _MM_FROUND_CUR_DIRECTION);
3599}
3600
3601static __inline__ __m512 __DEFAULT_FN_ATTRS
3602_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3603{
3604 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3605 (__v16sf) _mm512_setzero_ps (),
3606 (__mmask16) __U,
3607 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003608}
3609
Michael Kupersteine45af542015-06-30 13:36:19 +00003610static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003611_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003612{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003613 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003614 (__v8si)_mm256_setzero_si256(),
3615 (__mmask8) -1,
3616 _MM_FROUND_CUR_DIRECTION);
3617}
3618
Michael Zuckermanf1544752016-05-09 10:32:51 +00003619static __inline__ __m256i __DEFAULT_FN_ATTRS
3620_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3621{
3622 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3623 (__v8si) __W,
3624 (__mmask8) __U,
3625 _MM_FROUND_CUR_DIRECTION);
3626}
3627
3628static __inline__ __m256i __DEFAULT_FN_ATTRS
3629_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3630{
3631 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3632 (__v8si) _mm256_setzero_si256 (),
3633 (__mmask8) __U,
3634 _MM_FROUND_CUR_DIRECTION);
3635}
3636
Craig Topper72c7d512015-02-01 07:35:35 +00003637#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003638 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003639 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003640 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003641
Craig Topper72c7d512015-02-01 07:35:35 +00003642#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003643 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003644 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003645 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003646
Michael Zuckermanf1544752016-05-09 10:32:51 +00003647static __inline __m512i __DEFAULT_FN_ATTRS
3648_mm512_cvttps_epi32(__m512 __a)
3649{
3650 return (__m512i)
3651 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3652 (__v16si) _mm512_setzero_si512 (),
3653 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3654}
3655
3656static __inline__ __m512i __DEFAULT_FN_ATTRS
3657_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3658{
3659 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3660 (__v16si) __W,
3661 (__mmask16) __U,
3662 _MM_FROUND_CUR_DIRECTION);
3663}
3664
3665static __inline__ __m512i __DEFAULT_FN_ATTRS
3666_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3667{
3668 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3669 (__v16si) _mm512_setzero_si512 (),
3670 (__mmask16) __U,
3671 _MM_FROUND_CUR_DIRECTION);
3672}
Craig Topper72c7d512015-02-01 07:35:35 +00003673
3674#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003675 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003676 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003677 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003678
Michael Zuckermanf1544752016-05-09 10:32:51 +00003679static __inline__ __m512i __DEFAULT_FN_ATTRS
3680_mm512_cvtps_epi32 (__m512 __A)
3681{
3682 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3683 (__v16si) _mm512_undefined_epi32 (),
3684 (__mmask16) -1,
3685 _MM_FROUND_CUR_DIRECTION);
3686}
3687
3688static __inline__ __m512i __DEFAULT_FN_ATTRS
3689_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3690{
3691 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3692 (__v16si) __W,
3693 (__mmask16) __U,
3694 _MM_FROUND_CUR_DIRECTION);
3695}
3696
3697static __inline__ __m512i __DEFAULT_FN_ATTRS
3698_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3699{
3700 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3701 (__v16si)
3702 _mm512_setzero_si512 (),
3703 (__mmask16) __U,
3704 _MM_FROUND_CUR_DIRECTION);
3705}
3706
Craig Topper72c7d512015-02-01 07:35:35 +00003707#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003708 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003709 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003710 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003711
Michael Zuckermanf1544752016-05-09 10:32:51 +00003712static __inline__ __m256i __DEFAULT_FN_ATTRS
3713_mm512_cvtpd_epi32 (__m512d __A)
3714{
3715 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3716 (__v8si)
3717 _mm256_undefined_si256 (),
3718 (__mmask8) -1,
3719 _MM_FROUND_CUR_DIRECTION);
3720}
3721
3722static __inline__ __m256i __DEFAULT_FN_ATTRS
3723_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3724{
3725 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3726 (__v8si) __W,
3727 (__mmask8) __U,
3728 _MM_FROUND_CUR_DIRECTION);
3729}
3730
3731static __inline__ __m256i __DEFAULT_FN_ATTRS
3732_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3733{
3734 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3735 (__v8si)
3736 _mm256_setzero_si256 (),
3737 (__mmask8) __U,
3738 _MM_FROUND_CUR_DIRECTION);
3739}
3740
Craig Topper72c7d512015-02-01 07:35:35 +00003741#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003742 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003743 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003744 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003745
Michael Zuckermanf1544752016-05-09 10:32:51 +00003746static __inline__ __m512i __DEFAULT_FN_ATTRS
3747_mm512_cvtps_epu32 ( __m512 __A)
3748{
3749 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3750 (__v16si)\
3751 _mm512_undefined_epi32 (),\
3752 (__mmask16) -1,\
3753 _MM_FROUND_CUR_DIRECTION);\
3754}
3755
3756static __inline__ __m512i __DEFAULT_FN_ATTRS
3757_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3758{
3759 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3760 (__v16si) __W,
3761 (__mmask16) __U,
3762 _MM_FROUND_CUR_DIRECTION);
3763}
3764
Craig Topper72c7d512015-02-01 07:35:35 +00003765#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003766 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003767 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003768 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003769
Michael Zuckermanf1544752016-05-09 10:32:51 +00003770static __inline__ __m256i __DEFAULT_FN_ATTRS
3771_mm512_cvtpd_epu32 (__m512d __A)
3772{
3773 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3774 (__v8si)
3775 _mm256_undefined_si256 (),
3776 (__mmask8) -1,
3777 _MM_FROUND_CUR_DIRECTION);
3778}
3779
3780static __inline__ __m256i __DEFAULT_FN_ATTRS
3781_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3782{
3783 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3784 (__v8si) __W,
3785 (__mmask8) __U,
3786 _MM_FROUND_CUR_DIRECTION);
3787}
3788
3789static __inline__ __m256i __DEFAULT_FN_ATTRS
3790_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3791{
3792 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3793 (__v8si)
3794 _mm256_setzero_si256 (),
3795 (__mmask8) __U,
3796 _MM_FROUND_CUR_DIRECTION);
3797}
Adam Nemet63a951e2015-01-14 01:31:17 +00003798/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003799static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003800_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3801{
3802 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3803}
3804
Michael Kupersteine45af542015-06-30 13:36:19 +00003805static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003806_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3807{
3808 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3809}
3810
Michael Kupersteine45af542015-06-30 13:36:19 +00003811static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003812_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3813{
3814 return __builtin_shufflevector(__a, __b,
3815 2, 18, 3, 19,
3816 2+4, 18+4, 3+4, 19+4,
3817 2+8, 18+8, 3+8, 19+8,
3818 2+12, 18+12, 3+12, 19+12);
3819}
3820
Michael Kupersteine45af542015-06-30 13:36:19 +00003821static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003822_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3823{
3824 return __builtin_shufflevector(__a, __b,
3825 0, 16, 1, 17,
3826 0+4, 16+4, 1+4, 17+4,
3827 0+8, 16+8, 1+8, 17+8,
3828 0+12, 16+12, 1+12, 17+12);
3829}
3830
Adam Nemet0d5bb552014-07-28 17:14:40 +00003831/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003832
Michael Kupersteine45af542015-06-30 13:36:19 +00003833static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003834_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003835{
3836 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3837 (__v16si) __B,
3838 (__mmask16) -1);
3839}
3840
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003841static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3842_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3843{
3844 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3845 (__v16si) __B, __U);
3846}
3847
Michael Kupersteine45af542015-06-30 13:36:19 +00003848static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003849_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003850{
3851 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3852 (__v8di) __B,
3853 (__mmask8) -1);
3854}
3855
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003856static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3857_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3858{
3859 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
3860}
3861
3862
Adam Nemet0d5bb552014-07-28 17:14:40 +00003863/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003864
Michael Kupersteine45af542015-06-30 13:36:19 +00003865static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003866_mm512_loadu_si512 (void const *__P)
3867{
Craig Topper4537ea72016-05-14 06:03:13 +00003868 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003869 (__v16si)
3870 _mm512_setzero_si512 (),
3871 (__mmask16) -1);
3872}
3873
3874static __inline __m512i __DEFAULT_FN_ATTRS
3875_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3876{
Craig Topper4537ea72016-05-14 06:03:13 +00003877 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003878 (__v16si) __W,
3879 (__mmask16) __U);
3880}
3881
3882
3883static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003884_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003885{
Craig Topper4537ea72016-05-14 06:03:13 +00003886 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003887 (__v16si)
3888 _mm512_setzero_si512 (),
3889 (__mmask16) __U);
3890}
3891
Michael Kupersteine45af542015-06-30 13:36:19 +00003892static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003893_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3894{
Craig Topper4537ea72016-05-14 06:03:13 +00003895 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003896 (__v8di) __W,
3897 (__mmask8) __U);
3898}
3899
3900static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003901_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003902{
Craig Topper4537ea72016-05-14 06:03:13 +00003903 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003904 (__v8di)
3905 _mm512_setzero_si512 (),
3906 (__mmask8) __U);
3907}
3908
Michael Kupersteine45af542015-06-30 13:36:19 +00003909static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003910_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
3911{
Craig Topper4537ea72016-05-14 06:03:13 +00003912 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003913 (__v16sf) __W,
3914 (__mmask16) __U);
3915}
3916
3917static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003918_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003919{
Craig Topper4537ea72016-05-14 06:03:13 +00003920 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003921 (__v16sf)
3922 _mm512_setzero_ps (),
3923 (__mmask16) __U);
3924}
3925
Michael Kupersteine45af542015-06-30 13:36:19 +00003926static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003927_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003928{
Craig Topper4537ea72016-05-14 06:03:13 +00003929 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003930 (__v8df) __W,
3931 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00003932}
3933
Michael Kupersteine45af542015-06-30 13:36:19 +00003934static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003935_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00003936{
Craig Topper4537ea72016-05-14 06:03:13 +00003937 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00003938 (__v8df)
3939 _mm512_setzero_pd (),
3940 (__mmask8) __U);
3941}
3942
Michael Kupersteine45af542015-06-30 13:36:19 +00003943static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003944_mm512_loadu_pd(double const *__p)
3945{
3946 struct __loadu_pd {
3947 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003948 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003949 return ((struct __loadu_pd*)__p)->__v;
3950}
3951
Michael Kupersteine45af542015-06-30 13:36:19 +00003952static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003953_mm512_loadu_ps(float const *__p)
3954{
3955 struct __loadu_ps {
3956 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003957 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003958 return ((struct __loadu_ps*)__p)->__v;
3959}
3960
Michael Kupersteine45af542015-06-30 13:36:19 +00003961static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003962_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003963{
3964 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3965 (__v16sf)
3966 _mm512_setzero_ps (),
3967 (__mmask16) -1);
3968}
3969
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003970static __inline __m512 __DEFAULT_FN_ATTRS
3971_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
3972{
3973 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
3974 (__v16sf) __W,
3975 (__mmask16) __U);
3976}
3977
3978static __inline __m512 __DEFAULT_FN_ATTRS
3979_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
3980{
3981 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
3982 (__v16sf)
3983 _mm512_setzero_ps (),
3984 (__mmask16) __U);
3985}
3986
Michael Kupersteine45af542015-06-30 13:36:19 +00003987static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003988_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003989{
3990 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
3991 (__v8df)
3992 _mm512_setzero_pd (),
3993 (__mmask8) -1);
3994}
3995
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003996static __inline __m512d __DEFAULT_FN_ATTRS
3997_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
3998{
3999 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4000 (__v8df) __W,
4001 (__mmask8) __U);
4002}
4003
4004static __inline __m512d __DEFAULT_FN_ATTRS
4005_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4006{
4007 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4008 (__v8df)
4009 _mm512_setzero_pd (),
4010 (__mmask8) __U);
4011}
4012
4013static __inline __m512i __DEFAULT_FN_ATTRS
4014_mm512_load_si512 (void const *__P)
4015{
4016 return *(__m512i *) __P;
4017}
4018
4019static __inline __m512i __DEFAULT_FN_ATTRS
4020_mm512_load_epi32 (void const *__P)
4021{
4022 return *(__m512i *) __P;
4023}
4024
4025static __inline __m512i __DEFAULT_FN_ATTRS
4026_mm512_load_epi64 (void const *__P)
4027{
4028 return *(__m512i *) __P;
4029}
4030
Adam Nemet0d5bb552014-07-28 17:14:40 +00004031/* SIMD store ops */
4032
Michael Kupersteine45af542015-06-30 13:36:19 +00004033static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004034_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004035{
Craig Topper4537ea72016-05-14 06:03:13 +00004036 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004037 (__mmask8) __U);
4038}
4039
Michael Kupersteine45af542015-06-30 13:36:19 +00004040static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004041_mm512_storeu_si512 (void *__P, __m512i __A)
4042{
Craig Topper4537ea72016-05-14 06:03:13 +00004043 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004044 (__mmask16) -1);
4045}
4046
4047static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004048_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004049{
Craig Topper4537ea72016-05-14 06:03:13 +00004050 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004051 (__mmask16) __U);
4052}
4053
Michael Kupersteine45af542015-06-30 13:36:19 +00004054static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004055_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004056{
Craig Topper4537ea72016-05-14 06:03:13 +00004057 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004058}
4059
Michael Kupersteine45af542015-06-30 13:36:19 +00004060static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004061_mm512_storeu_pd(void *__P, __m512d __A)
4062{
Craig Topper4537ea72016-05-14 06:03:13 +00004063 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004064}
4065
Michael Kupersteine45af542015-06-30 13:36:19 +00004066static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004067_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004068{
Craig Topper4537ea72016-05-14 06:03:13 +00004069 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004070 (__mmask16) __U);
4071}
4072
Michael Kupersteine45af542015-06-30 13:36:19 +00004073static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004074_mm512_storeu_ps(void *__P, __m512 __A)
4075{
Craig Topper4537ea72016-05-14 06:03:13 +00004076 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004077}
4078
Michael Kupersteine45af542015-06-30 13:36:19 +00004079static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004080_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004081{
Adam Nemetc0cff242015-01-16 18:51:50 +00004082 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004083}
4084
Michael Kupersteine45af542015-06-30 13:36:19 +00004085static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004086_mm512_store_pd(void *__P, __m512d __A)
4087{
4088 *(__m512d*)__P = __A;
4089}
4090
Michael Kupersteine45af542015-06-30 13:36:19 +00004091static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004092_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4093{
4094 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4095 (__mmask16) __U);
4096}
4097
Michael Kupersteine45af542015-06-30 13:36:19 +00004098static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004099_mm512_store_ps(void *__P, __m512 __A)
4100{
4101 *(__m512*)__P = __A;
4102}
4103
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004104static __inline void __DEFAULT_FN_ATTRS
4105_mm512_store_si512 (void *__P, __m512i __A)
4106{
4107 *(__m512i *) __P = __A;
4108}
4109
4110static __inline void __DEFAULT_FN_ATTRS
4111_mm512_store_epi32 (void *__P, __m512i __A)
4112{
4113 *(__m512i *) __P = __A;
4114}
4115
4116static __inline void __DEFAULT_FN_ATTRS
4117_mm512_store_epi64 (void *__P, __m512i __A)
4118{
4119 *(__m512i *) __P = __A;
4120}
4121
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004122/* Mask ops */
4123
Michael Kupersteine45af542015-06-30 13:36:19 +00004124static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004125_mm512_knot(__mmask16 __M)
4126{
4127 return __builtin_ia32_knothi(__M);
4128}
4129
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004130/* Integer compare */
4131
Michael Kupersteine45af542015-06-30 13:36:19 +00004132static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004133_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4134 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4135 (__mmask16)-1);
4136}
4137
Michael Kupersteine45af542015-06-30 13:36:19 +00004138static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004139_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4140 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4141 __u);
4142}
4143
Michael Kupersteine45af542015-06-30 13:36:19 +00004144static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004145_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4146 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4147 (__mmask16)-1);
4148}
4149
Michael Kupersteine45af542015-06-30 13:36:19 +00004150static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004151_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4152 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4153 __u);
4154}
4155
Michael Kupersteine45af542015-06-30 13:36:19 +00004156static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004157_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4158 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4159 __u);
4160}
4161
Michael Kupersteine45af542015-06-30 13:36:19 +00004162static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004163_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4164 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4165 (__mmask8)-1);
4166}
4167
Michael Kupersteine45af542015-06-30 13:36:19 +00004168static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004169_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4170 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4171 (__mmask8)-1);
4172}
4173
Michael Kupersteine45af542015-06-30 13:36:19 +00004174static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004175_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4176 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4177 __u);
4178}
4179
Michael Kupersteine45af542015-06-30 13:36:19 +00004180static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004181_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4182 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4183 (__mmask16)-1);
4184}
4185
Michael Kupersteine45af542015-06-30 13:36:19 +00004186static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004187_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4188 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4189 __u);
4190}
4191
Michael Kupersteine45af542015-06-30 13:36:19 +00004192static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004193_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4194 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4195 (__mmask16)-1);
4196}
4197
Michael Kupersteine45af542015-06-30 13:36:19 +00004198static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004199_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4200 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4201 __u);
4202}
4203
Michael Kupersteine45af542015-06-30 13:36:19 +00004204static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004205_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4206 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4207 (__mmask8)-1);
4208}
4209
Michael Kupersteine45af542015-06-30 13:36:19 +00004210static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004211_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4212 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4213 __u);
4214}
4215
Michael Kupersteine45af542015-06-30 13:36:19 +00004216static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004217_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4218 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4219 (__mmask8)-1);
4220}
4221
Michael Kupersteine45af542015-06-30 13:36:19 +00004222static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004223_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4224 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4225 __u);
4226}
4227
Michael Kupersteine45af542015-06-30 13:36:19 +00004228static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004229_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4230 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4231 (__mmask16)-1);
4232}
4233
Michael Kupersteine45af542015-06-30 13:36:19 +00004234static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004235_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4236 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4237 __u);
4238}
4239
Michael Kupersteine45af542015-06-30 13:36:19 +00004240static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004241_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4242 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4243 (__mmask16)-1);
4244}
4245
Michael Kupersteine45af542015-06-30 13:36:19 +00004246static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004247_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4248 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4249 __u);
4250}
4251
Michael Kupersteine45af542015-06-30 13:36:19 +00004252static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004253_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4254 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4255 __u);
4256}
4257
Michael Kupersteine45af542015-06-30 13:36:19 +00004258static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004259_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4260 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4261 (__mmask8)-1);
4262}
4263
Michael Kupersteine45af542015-06-30 13:36:19 +00004264static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004265_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4266 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4267 (__mmask8)-1);
4268}
4269
Michael Kupersteine45af542015-06-30 13:36:19 +00004270static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004271_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4272 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4273 __u);
4274}
4275
Michael Kupersteine45af542015-06-30 13:36:19 +00004276static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004277_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4278 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4279 (__mmask16)-1);
4280}
4281
Michael Kupersteine45af542015-06-30 13:36:19 +00004282static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004283_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4284 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4285 __u);
4286}
4287
Michael Kupersteine45af542015-06-30 13:36:19 +00004288static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004289_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4290 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4291 (__mmask16)-1);
4292}
4293
Michael Kupersteine45af542015-06-30 13:36:19 +00004294static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004295_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4296 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4297 __u);
4298}
4299
Michael Kupersteine45af542015-06-30 13:36:19 +00004300static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004301_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4302 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4303 (__mmask8)-1);
4304}
4305
Michael Kupersteine45af542015-06-30 13:36:19 +00004306static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004307_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4308 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4309 __u);
4310}
4311
Michael Kupersteine45af542015-06-30 13:36:19 +00004312static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004313_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4314 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4315 (__mmask8)-1);
4316}
4317
Michael Kupersteine45af542015-06-30 13:36:19 +00004318static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004319_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4320 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4321 __u);
4322}
4323
Michael Kupersteine45af542015-06-30 13:36:19 +00004324static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004325_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4326 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4327 (__mmask16)-1);
4328}
4329
Michael Kupersteine45af542015-06-30 13:36:19 +00004330static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004331_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4332 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4333 __u);
4334}
4335
Michael Kupersteine45af542015-06-30 13:36:19 +00004336static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004337_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4338 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4339 (__mmask16)-1);
4340}
4341
Michael Kupersteine45af542015-06-30 13:36:19 +00004342static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004343_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4344 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4345 __u);
4346}
4347
Michael Kupersteine45af542015-06-30 13:36:19 +00004348static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004349_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4350 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4351 (__mmask8)-1);
4352}
4353
Michael Kupersteine45af542015-06-30 13:36:19 +00004354static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004355_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4356 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4357 __u);
4358}
4359
Michael Kupersteine45af542015-06-30 13:36:19 +00004360static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004361_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4362 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4363 (__mmask8)-1);
4364}
4365
Michael Kupersteine45af542015-06-30 13:36:19 +00004366static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004367_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4368 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4369 __u);
4370}
4371
Michael Kupersteine45af542015-06-30 13:36:19 +00004372static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004373_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4374 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4375 (__mmask16)-1);
4376}
4377
Michael Kupersteine45af542015-06-30 13:36:19 +00004378static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004379_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4380 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4381 __u);
4382}
4383
Michael Kupersteine45af542015-06-30 13:36:19 +00004384static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004385_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4386 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4387 (__mmask16)-1);
4388}
4389
Michael Kupersteine45af542015-06-30 13:36:19 +00004390static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004391_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4392 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4393 __u);
4394}
4395
Michael Kupersteine45af542015-06-30 13:36:19 +00004396static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004397_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4398 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4399 (__mmask8)-1);
4400}
4401
Michael Kupersteine45af542015-06-30 13:36:19 +00004402static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004403_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4404 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4405 __u);
4406}
4407
Michael Kupersteine45af542015-06-30 13:36:19 +00004408static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004409_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4410 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4411 (__mmask8)-1);
4412}
4413
Michael Kupersteine45af542015-06-30 13:36:19 +00004414static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004415_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4416 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4417 __u);
4418}
4419
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004420static __inline__ __m512i __DEFAULT_FN_ATTRS
4421_mm512_cvtepi8_epi32 (__m128i __A)
4422{
4423 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4424 (__v16si)
4425 _mm512_setzero_si512 (),
4426 (__mmask16) -1);
4427}
4428
4429static __inline__ __m512i __DEFAULT_FN_ATTRS
4430_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4431{
4432 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4433 (__v16si) __W,
4434 (__mmask16) __U);
4435}
4436
4437static __inline__ __m512i __DEFAULT_FN_ATTRS
4438_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4439{
4440 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4441 (__v16si)
4442 _mm512_setzero_si512 (),
4443 (__mmask16) __U);
4444}
4445
4446static __inline__ __m512i __DEFAULT_FN_ATTRS
4447_mm512_cvtepi8_epi64 (__m128i __A)
4448{
4449 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4450 (__v8di)
4451 _mm512_setzero_si512 (),
4452 (__mmask8) -1);
4453}
4454
4455static __inline__ __m512i __DEFAULT_FN_ATTRS
4456_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4457{
4458 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4459 (__v8di) __W,
4460 (__mmask8) __U);
4461}
4462
4463static __inline__ __m512i __DEFAULT_FN_ATTRS
4464_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4465{
4466 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4467 (__v8di)
4468 _mm512_setzero_si512 (),
4469 (__mmask8) __U);
4470}
4471
4472static __inline__ __m512i __DEFAULT_FN_ATTRS
4473_mm512_cvtepi32_epi64 (__m256i __X)
4474{
4475 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4476 (__v8di)
4477 _mm512_setzero_si512 (),
4478 (__mmask8) -1);
4479}
4480
4481static __inline__ __m512i __DEFAULT_FN_ATTRS
4482_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4483{
4484 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4485 (__v8di) __W,
4486 (__mmask8) __U);
4487}
4488
4489static __inline__ __m512i __DEFAULT_FN_ATTRS
4490_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4491{
4492 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4493 (__v8di)
4494 _mm512_setzero_si512 (),
4495 (__mmask8) __U);
4496}
4497
4498static __inline__ __m512i __DEFAULT_FN_ATTRS
4499_mm512_cvtepi16_epi32 (__m256i __A)
4500{
4501 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4502 (__v16si)
4503 _mm512_setzero_si512 (),
4504 (__mmask16) -1);
4505}
4506
4507static __inline__ __m512i __DEFAULT_FN_ATTRS
4508_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4509{
4510 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4511 (__v16si) __W,
4512 (__mmask16) __U);
4513}
4514
4515static __inline__ __m512i __DEFAULT_FN_ATTRS
4516_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4517{
4518 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4519 (__v16si)
4520 _mm512_setzero_si512 (),
4521 (__mmask16) __U);
4522}
4523
4524static __inline__ __m512i __DEFAULT_FN_ATTRS
4525_mm512_cvtepi16_epi64 (__m128i __A)
4526{
4527 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4528 (__v8di)
4529 _mm512_setzero_si512 (),
4530 (__mmask8) -1);
4531}
4532
4533static __inline__ __m512i __DEFAULT_FN_ATTRS
4534_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4535{
4536 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4537 (__v8di) __W,
4538 (__mmask8) __U);
4539}
4540
4541static __inline__ __m512i __DEFAULT_FN_ATTRS
4542_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4543{
4544 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4545 (__v8di)
4546 _mm512_setzero_si512 (),
4547 (__mmask8) __U);
4548}
4549
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004550static __inline__ __m512i __DEFAULT_FN_ATTRS
4551_mm512_cvtepu8_epi32 (__m128i __A)
4552{
4553 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4554 (__v16si)
4555 _mm512_setzero_si512 (),
4556 (__mmask16) -1);
4557}
4558
4559static __inline__ __m512i __DEFAULT_FN_ATTRS
4560_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4561{
4562 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4563 (__v16si) __W,
4564 (__mmask16) __U);
4565}
4566
4567static __inline__ __m512i __DEFAULT_FN_ATTRS
4568_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4569{
4570 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4571 (__v16si)
4572 _mm512_setzero_si512 (),
4573 (__mmask16) __U);
4574}
4575
4576static __inline__ __m512i __DEFAULT_FN_ATTRS
4577_mm512_cvtepu8_epi64 (__m128i __A)
4578{
4579 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4580 (__v8di)
4581 _mm512_setzero_si512 (),
4582 (__mmask8) -1);
4583}
4584
4585static __inline__ __m512i __DEFAULT_FN_ATTRS
4586_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4587{
4588 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4589 (__v8di) __W,
4590 (__mmask8) __U);
4591}
4592
4593static __inline__ __m512i __DEFAULT_FN_ATTRS
4594_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4595{
4596 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4597 (__v8di)
4598 _mm512_setzero_si512 (),
4599 (__mmask8) __U);
4600}
4601
4602static __inline__ __m512i __DEFAULT_FN_ATTRS
4603_mm512_cvtepu32_epi64 (__m256i __X)
4604{
4605 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4606 (__v8di)
4607 _mm512_setzero_si512 (),
4608 (__mmask8) -1);
4609}
4610
4611static __inline__ __m512i __DEFAULT_FN_ATTRS
4612_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4613{
4614 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4615 (__v8di) __W,
4616 (__mmask8) __U);
4617}
4618
4619static __inline__ __m512i __DEFAULT_FN_ATTRS
4620_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4621{
4622 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4623 (__v8di)
4624 _mm512_setzero_si512 (),
4625 (__mmask8) __U);
4626}
4627
4628static __inline__ __m512i __DEFAULT_FN_ATTRS
4629_mm512_cvtepu16_epi32 (__m256i __A)
4630{
4631 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4632 (__v16si)
4633 _mm512_setzero_si512 (),
4634 (__mmask16) -1);
4635}
4636
4637static __inline__ __m512i __DEFAULT_FN_ATTRS
4638_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4639{
4640 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4641 (__v16si) __W,
4642 (__mmask16) __U);
4643}
4644
4645static __inline__ __m512i __DEFAULT_FN_ATTRS
4646_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4647{
4648 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4649 (__v16si)
4650 _mm512_setzero_si512 (),
4651 (__mmask16) __U);
4652}
4653
4654static __inline__ __m512i __DEFAULT_FN_ATTRS
4655_mm512_cvtepu16_epi64 (__m128i __A)
4656{
4657 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4658 (__v8di)
4659 _mm512_setzero_si512 (),
4660 (__mmask8) -1);
4661}
4662
4663static __inline__ __m512i __DEFAULT_FN_ATTRS
4664_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4665{
4666 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4667 (__v8di) __W,
4668 (__mmask8) __U);
4669}
4670
4671static __inline__ __m512i __DEFAULT_FN_ATTRS
4672_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4673{
4674 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4675 (__v8di)
4676 _mm512_setzero_si512 (),
4677 (__mmask8) __U);
4678}
4679
Michael Zuckermane98cc742016-02-23 15:59:47 +00004680static __inline__ __m512i __DEFAULT_FN_ATTRS
4681_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4682{
4683 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4684 (__v16si) __B,
4685 (__v16si)
4686 _mm512_setzero_si512 (),
4687 (__mmask16) -1);
4688}
4689
4690static __inline__ __m512i __DEFAULT_FN_ATTRS
4691_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4692{
4693 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4694 (__v16si) __B,
4695 (__v16si) __W,
4696 (__mmask16) __U);
4697}
4698
4699static __inline__ __m512i __DEFAULT_FN_ATTRS
4700_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4701{
4702 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4703 (__v16si) __B,
4704 (__v16si)
4705 _mm512_setzero_si512 (),
4706 (__mmask16) __U);
4707}
4708
4709static __inline__ __m512i __DEFAULT_FN_ATTRS
4710_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4711{
4712 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4713 (__v8di) __B,
4714 (__v8di)
4715 _mm512_setzero_si512 (),
4716 (__mmask8) -1);
4717}
4718
4719static __inline__ __m512i __DEFAULT_FN_ATTRS
4720_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4721{
4722 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4723 (__v8di) __B,
4724 (__v8di) __W,
4725 (__mmask8) __U);
4726}
4727
4728static __inline__ __m512i __DEFAULT_FN_ATTRS
4729_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4730{
4731 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4732 (__v8di) __B,
4733 (__v8di)
4734 _mm512_setzero_si512 (),
4735 (__mmask8) __U);
4736}
4737
4738
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004739
Craig Topper4cac1c22015-01-25 23:30:07 +00004740#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004741 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004742 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004743 (__mmask16)-1); })
4744
4745#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004746 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004747 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004748 (__mmask16)-1); })
4749
4750#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004751 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004752 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004753 (__mmask8)-1); })
4754
4755#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004756 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004757 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004758 (__mmask8)-1); })
4759
4760#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004761 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004762 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004763 (__mmask16)(m)); })
4764
4765#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004766 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004767 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004768 (__mmask16)(m)); })
4769
4770#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004771 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004772 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004773 (__mmask8)(m)); })
4774
4775#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004776 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004777 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004778 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004779
Michael Zuckerman38a27272016-02-22 09:05:41 +00004780#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004781 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4782 (__v16si)_mm512_setzero_si512(), \
4783 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004784
4785#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004786 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4787 (__v16si)(__m512i)(W), \
4788 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004789
4790#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004791 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4792 (__v16si)_mm512_setzero_si512(), \
4793 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004794
4795#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004796 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4797 (__v8di)_mm512_setzero_si512(), \
4798 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004799
4800#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004801 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4802 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004803
4804#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004805 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4806 (__v8di)_mm512_setzero_si512(), \
4807 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004808static __inline__ __m512i __DEFAULT_FN_ATTRS
4809_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4810{
4811 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4812 (__v16si) __B,
4813 (__v16si)
4814 _mm512_setzero_si512 (),
4815 (__mmask16) -1);
4816}
4817
4818static __inline__ __m512i __DEFAULT_FN_ATTRS
4819_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4820{
4821 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4822 (__v16si) __B,
4823 (__v16si) __W,
4824 (__mmask16) __U);
4825}
4826
4827static __inline__ __m512i __DEFAULT_FN_ATTRS
4828_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4829{
4830 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4831 (__v16si) __B,
4832 (__v16si)
4833 _mm512_setzero_si512 (),
4834 (__mmask16) __U);
4835}
4836
4837static __inline__ __m512i __DEFAULT_FN_ATTRS
4838_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4839{
4840 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4841 (__v8di) __B,
4842 (__v8di)
4843 _mm512_setzero_si512 (),
4844 (__mmask8) -1);
4845}
4846
4847static __inline__ __m512i __DEFAULT_FN_ATTRS
4848_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4849{
4850 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4851 (__v8di) __B,
4852 (__v8di) __W,
4853 (__mmask8) __U);
4854}
4855
4856static __inline__ __m512i __DEFAULT_FN_ATTRS
4857_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4858{
4859 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4860 (__v8di) __B,
4861 (__v8di)
4862 _mm512_setzero_si512 (),
4863 (__mmask8) __U);
4864}
4865
Craig Topper8c18e112016-05-17 04:41:50 +00004866#define _mm512_ror_epi32(A, B) __extension__ ({ \
4867 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4868 (__v16si)_mm512_setzero_si512(), \
4869 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004870
Craig Topper8c18e112016-05-17 04:41:50 +00004871#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4872 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4873 (__v16si)(__m512i)(W), \
4874 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004875
Craig Topper8c18e112016-05-17 04:41:50 +00004876#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
4877 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4878 (__v16si)_mm512_setzero_si512(), \
4879 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004880
Craig Topper8c18e112016-05-17 04:41:50 +00004881#define _mm512_ror_epi64(A, B) __extension__ ({ \
4882 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4883 (__v8di)_mm512_setzero_si512(), \
4884 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004885
Craig Topper8c18e112016-05-17 04:41:50 +00004886#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4887 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4888 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004889
Craig Topper8c18e112016-05-17 04:41:50 +00004890#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
4891 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4892 (__v8di)_mm512_setzero_si512(), \
4893 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004894
Craig Topper8c18e112016-05-17 04:41:50 +00004895#define _mm512_slli_epi32(A, B) __extension__ ({ \
4896 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4897 (__v16si)_mm512_setzero_si512(), \
4898 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004899
Craig Topper8c18e112016-05-17 04:41:50 +00004900#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
4901 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4902 (__v16si)(__m512i)(W), \
4903 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004904
Craig Topper8c18e112016-05-17 04:41:50 +00004905#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
4906 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4907 (__v16si)_mm512_setzero_si512(), \
4908 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004909
Craig Topper8c18e112016-05-17 04:41:50 +00004910#define _mm512_slli_epi64(A, B) __extension__ ({ \
4911 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4912 (__v8di)_mm512_setzero_si512(), \
4913 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004914
Craig Topper8c18e112016-05-17 04:41:50 +00004915#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
4916 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4917 (__v8di)(__m512i)(W), \
4918 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004919
Craig Topper8c18e112016-05-17 04:41:50 +00004920#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
4921 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4922 (__v8di)_mm512_setzero_si512(), \
4923 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004924
Michael Zuckerman38a27272016-02-22 09:05:41 +00004925
Michael Zuckermand176d742016-03-01 17:49:03 +00004926
Craig Topper8c18e112016-05-17 04:41:50 +00004927#define _mm512_srli_epi32(A, B) __extension__ ({ \
4928 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4929 (__v16si)_mm512_setzero_si512(), \
4930 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004931
Craig Topper8c18e112016-05-17 04:41:50 +00004932#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
4933 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4934 (__v16si)(__m512i)(W), \
4935 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004936
Craig Topper8c18e112016-05-17 04:41:50 +00004937#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
4938 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4939 (__v16si)_mm512_setzero_si512(), \
4940 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004941
Craig Topper8c18e112016-05-17 04:41:50 +00004942#define _mm512_srli_epi64(A, B) __extension__ ({ \
4943 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4944 (__v8di)_mm512_setzero_si512(), \
4945 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004946
Craig Topper8c18e112016-05-17 04:41:50 +00004947#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
4948 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4949 (__v8di)(__m512i)(W), \
4950 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004951
Craig Topper8c18e112016-05-17 04:41:50 +00004952#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
4953 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4954 (__v8di)_mm512_setzero_si512(), \
4955 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004956
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004957static __inline__ __m512i __DEFAULT_FN_ATTRS
4958_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4959{
4960 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4961 (__v16si) __W,
4962 (__mmask16) __U);
4963}
4964
4965static __inline__ __m512i __DEFAULT_FN_ATTRS
4966_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4967{
4968 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4969 (__v16si)
4970 _mm512_setzero_si512 (),
4971 (__mmask16) __U);
4972}
4973
4974static __inline__ void __DEFAULT_FN_ATTRS
4975_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
4976{
4977 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
4978 (__mmask16) __U);
4979}
4980
4981static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00004982_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
4983{
4984 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
4985 (__v16si) __W,
4986 (__mmask16) __U);
4987}
4988
4989static __inline__ __m512i __DEFAULT_FN_ATTRS
4990_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
4991{
4992 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
4993 (__v16si)
4994 _mm512_setzero_si512 (),
4995 (__mmask16) __U);
4996}
4997
4998static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004999_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5000{
5001 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5002 (__v8di) __W,
5003 (__mmask8) __U);
5004}
5005
5006static __inline__ __m512i __DEFAULT_FN_ATTRS
5007_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5008{
5009 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5010 (__v8di)
5011 _mm512_setzero_si512 (),
5012 (__mmask8) __U);
5013}
5014
5015static __inline__ __m512i __DEFAULT_FN_ATTRS
5016_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5017{
5018 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5019 (__v8di) __W,
5020 (__mmask8) __U);
5021}
5022
5023static __inline__ __m512i __DEFAULT_FN_ATTRS
5024_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5025{
5026 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5027 (__v8di)
5028 _mm512_setzero_si512 (),
5029 (__mmask8) __U);
5030}
5031
5032static __inline__ void __DEFAULT_FN_ATTRS
5033_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5034{
5035 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5036 (__mmask8) __U);
5037}
5038
5039
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005040
5041static __inline__ __m512d __DEFAULT_FN_ATTRS
5042_mm512_movedup_pd (__m512d __A)
5043{
5044 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5045 (__v8df)
5046 _mm512_undefined_pd (),
5047 (__mmask8) -1);
5048}
5049
5050static __inline__ __m512d __DEFAULT_FN_ATTRS
5051_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5052{
5053 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5054 (__v8df) __W,
5055 (__mmask8) __U);
5056}
5057
5058static __inline__ __m512d __DEFAULT_FN_ATTRS
5059_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5060{
5061 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5062 (__v8df)
5063 _mm512_setzero_pd (),
5064 (__mmask8) __U);
5065}
5066
Craig Topper8c18e112016-05-17 04:41:50 +00005067#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5068 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5069 (__v8df)(__m512d)(B), \
5070 (__v8di)(__m512i)(C), (int)(imm), \
5071 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005072
Craig Topper8c18e112016-05-17 04:41:50 +00005073#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5074 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5075 (__v8df)(__m512d)(B), \
5076 (__v8di)(__m512i)(C), (int)(imm), \
5077 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005078
Craig Topper8c18e112016-05-17 04:41:50 +00005079#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5080 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5081 (__v8df)(__m512d)(B), \
5082 (__v8di)(__m512i)(C), (int)(imm), \
5083 (__mmask8)-1, \
5084 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005085
Craig Topper8c18e112016-05-17 04:41:50 +00005086#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5087 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5088 (__v8df)(__m512d)(B), \
5089 (__v8di)(__m512i)(C), (int)(imm), \
5090 (__mmask8)(U), \
5091 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005092
Craig Topper8c18e112016-05-17 04:41:50 +00005093#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5094 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5095 (__v8df)(__m512d)(B), \
5096 (__v8di)(__m512i)(C), \
5097 (int)(imm), (__mmask8)(U), \
5098 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005099
Craig Topper8c18e112016-05-17 04:41:50 +00005100#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5101 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5102 (__v8df)(__m512d)(B), \
5103 (__v8di)(__m512i)(C), \
5104 (int)(imm), (__mmask8)(U), \
5105 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005106
Craig Topper8c18e112016-05-17 04:41:50 +00005107#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5108 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5109 (__v16sf)(__m512)(B), \
5110 (__v16si)(__m512i)(C), (int)(imm), \
5111 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005112
Craig Topper8c18e112016-05-17 04:41:50 +00005113#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5114 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5115 (__v16sf)(__m512)(B), \
5116 (__v16si)(__m512i)(C), (int)(imm), \
5117 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005118
Craig Topper8c18e112016-05-17 04:41:50 +00005119#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5120 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5121 (__v16sf)(__m512)(B), \
5122 (__v16si)(__m512i)(C), (int)(imm), \
5123 (__mmask16)-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_ps(A, U, B, C, imm) __extension__ ({ \
5127 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5128 (__v16sf)(__m512)(B), \
5129 (__v16si)(__m512i)(C), (int)(imm), \
5130 (__mmask16)(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_ps(U, A, B, C, imm, R) __extension__ ({ \
5134 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5135 (__v16sf)(__m512)(B), \
5136 (__v16si)(__m512i)(C), \
5137 (int)(imm), (__mmask16)(U), \
5138 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005139
Craig Topper8c18e112016-05-17 04:41:50 +00005140#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5141 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5142 (__v16sf)(__m512)(B), \
5143 (__v16si)(__m512i)(C), \
5144 (int)(imm), (__mmask16)(U), \
5145 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005146
Craig Topper8c18e112016-05-17 04:41:50 +00005147#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5148 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5149 (__v2df)(__m128d)(B), \
5150 (__v2di)(__m128i)(C), (int)(imm), \
5151 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005152
Craig Topper8c18e112016-05-17 04:41:50 +00005153#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5154 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5155 (__v2df)(__m128d)(B), \
5156 (__v2di)(__m128i)(C), (int)(imm), \
5157 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005158
Craig Topper8c18e112016-05-17 04:41:50 +00005159#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5160 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5161 (__v2df)(__m128d)(B), \
5162 (__v2di)(__m128i)(C), (int)(imm), \
5163 (__mmask8)-1, \
5164 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005165
Craig Topper8c18e112016-05-17 04:41:50 +00005166#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5167 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5168 (__v2df)(__m128d)(B), \
5169 (__v2di)(__m128i)(C), (int)(imm), \
5170 (__mmask8)(U), \
5171 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005172
Craig Topper8c18e112016-05-17 04:41:50 +00005173#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5174 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5175 (__v2df)(__m128d)(B), \
5176 (__v2di)(__m128i)(C), (int)(imm), \
5177 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005178
Craig Topper8c18e112016-05-17 04:41:50 +00005179#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5180 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5181 (__v2df)(__m128d)(B), \
5182 (__v2di)(__m128i)(C), (int)(imm), \
5183 (__mmask8)(U), \
5184 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005185
Craig Topper8c18e112016-05-17 04:41:50 +00005186#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5187 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5188 (__v4sf)(__m128)(B), \
5189 (__v4si)(__m128i)(C), (int)(imm), \
5190 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005191
Craig Topper8c18e112016-05-17 04:41:50 +00005192#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5193 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5194 (__v4sf)(__m128)(B), \
5195 (__v4si)(__m128i)(C), (int)(imm), \
5196 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005197
Craig Topper8c18e112016-05-17 04:41:50 +00005198#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5199 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5200 (__v4sf)(__m128)(B), \
5201 (__v4si)(__m128i)(C), (int)(imm), \
5202 (__mmask8)-1, \
5203 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005204
Craig Topper8c18e112016-05-17 04:41:50 +00005205#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5206 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5207 (__v4sf)(__m128)(B), \
5208 (__v4si)(__m128i)(C), (int)(imm), \
5209 (__mmask8)(U), \
5210 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005211
Craig Topper8c18e112016-05-17 04:41:50 +00005212#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5213 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5214 (__v4sf)(__m128)(B), \
5215 (__v4si)(__m128i)(C), (int)(imm), \
5216 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005217
Craig Topper8c18e112016-05-17 04:41:50 +00005218#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5219 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5220 (__v4sf)(__m128)(B), \
5221 (__v4si)(__m128i)(C), (int)(imm), \
5222 (__mmask8)(U), \
5223 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005224
Craig Topper8c18e112016-05-17 04:41:50 +00005225#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5226 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5227 (__v2df)(__m128d)(B), \
5228 (__v2df)_mm_setzero_pd(), \
5229 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005230
5231
5232static __inline__ __m128d __DEFAULT_FN_ATTRS
5233_mm_getexp_sd (__m128d __A, __m128d __B)
5234{
5235 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5236 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5237}
5238
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005239static __inline__ __m128d __DEFAULT_FN_ATTRS
5240_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5241{
5242 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5243 (__v2df) __B,
5244 (__v2df) __W,
5245 (__mmask8) __U,
5246 _MM_FROUND_CUR_DIRECTION);
5247}
5248
Craig Topper8c18e112016-05-17 04:41:50 +00005249#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5250 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5251 (__v2df)(__m128d)(B), \
5252 (__v2df)(__m128d)(W), \
5253 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005254
5255static __inline__ __m128d __DEFAULT_FN_ATTRS
5256_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
5257{
5258 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5259 (__v2df) __B,
5260 (__v2df) _mm_setzero_pd (),
5261 (__mmask8) __U,
5262 _MM_FROUND_CUR_DIRECTION);
5263}
5264
Craig Topper8c18e112016-05-17 04:41:50 +00005265#define _mm_maskz_getexp_round_sd(U, 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)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005270
Craig Topper8c18e112016-05-17 04:41:50 +00005271#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5272 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5273 (__v4sf)(__m128)(B), \
5274 (__v4sf)_mm_setzero_ps(), \
5275 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005276
5277static __inline__ __m128 __DEFAULT_FN_ATTRS
5278_mm_getexp_ss (__m128 __A, __m128 __B)
5279{
5280 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5281 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5282}
5283
Craig Topper58187d32016-05-17 04:41:29 +00005284static __inline__ __m128 __DEFAULT_FN_ATTRS
5285_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005286{
Craig Topper58187d32016-05-17 04:41:29 +00005287 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005288 (__v4sf) __B,
5289 (__v4sf) __W,
5290 (__mmask8) __U,
5291 _MM_FROUND_CUR_DIRECTION);
5292}
5293
Craig Topper8c18e112016-05-17 04:41:50 +00005294#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5295 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5296 (__v4sf)(__m128)(B), \
5297 (__v4sf)(__m128)(W), \
5298 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005299
Craig Topper58187d32016-05-17 04:41:29 +00005300static __inline__ __m128 __DEFAULT_FN_ATTRS
5301_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005302{
Craig Topper58187d32016-05-17 04:41:29 +00005303 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005304 (__v4sf) __B,
5305 (__v4sf) _mm_setzero_pd (),
5306 (__mmask8) __U,
5307 _MM_FROUND_CUR_DIRECTION);
5308}
5309
Craig Topper8c18e112016-05-17 04:41:50 +00005310#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5311 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5312 (__v4sf)(__m128)(B), \
5313 (__v4sf)_mm_setzero_ps(), \
5314 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005315
Craig Topper8c18e112016-05-17 04:41:50 +00005316#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5317 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5318 (__v2df)(__m128d)(B), \
5319 (int)(((D)<<2) | (C)), \
5320 (__v2df)_mm_setzero_pd(), \
5321 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005322
Craig Topper8c18e112016-05-17 04:41:50 +00005323#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5324 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5325 (__v2df)(__m128d)(B), \
5326 (int)(((D)<<2) | (C)), \
5327 (__v2df)_mm_setzero_pd(), \
5328 (__mmask8)-1, \
5329 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005330
Craig Topper8c18e112016-05-17 04:41:50 +00005331#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5332 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5333 (__v2df)(__m128d)(B), \
5334 (int)(((D)<<2) | (C)), \
5335 (__v2df)(__m128d)(W), \
5336 (__mmask8)(U), \
5337 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005338
Craig Topper8c18e112016-05-17 04:41:50 +00005339#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5340 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5341 (__v2df)(__m128d)(B), \
5342 (int)(((D)<<2) | (C)), \
5343 (__v2df)(__m128d)(W), \
5344 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005345
Craig Topper8c18e112016-05-17 04:41:50 +00005346#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5347 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5348 (__v2df)(__m128d)(B), \
5349 (int)(((D)<<2) | (C)), \
5350 (__v2df)_mm_setzero_pd(), \
5351 (__mmask8)(U), \
5352 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005353
Craig Topper8c18e112016-05-17 04:41:50 +00005354#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5355 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5356 (__v2df)(__m128d)(B), \
5357 (int)(((D)<<2) | (C)), \
5358 (__v2df)_mm_setzero_pd(), \
5359 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005360
Craig Topper8c18e112016-05-17 04:41:50 +00005361#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5362 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5363 (__v4sf)(__m128)(B), \
5364 (int)(((D)<<2) | (C)), \
5365 (__v4sf)_mm_setzero_ps(), \
5366 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005367
Craig Topper8c18e112016-05-17 04:41:50 +00005368#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5369 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5370 (__v4sf)(__m128)(B), \
5371 (int)(((D)<<2) | (C)), \
5372 (__v4sf)_mm_setzero_ps(), \
5373 (__mmask8)-1, \
5374 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005375
Craig Topper8c18e112016-05-17 04:41:50 +00005376#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5377 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5378 (__v4sf)(__m128)(B), \
5379 (int)(((D)<<2) | (C)), \
5380 (__v4sf)(__m128)(W), \
5381 (__mmask8)(U), \
5382 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005383
Craig Topper8c18e112016-05-17 04:41:50 +00005384#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5385 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5386 (__v4sf)(__m128)(B), \
5387 (int)(((D)<<2) | (C)), \
5388 (__v4sf)(__m128)(W), \
5389 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005390
Craig Topper8c18e112016-05-17 04:41:50 +00005391#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5392 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5393 (__v4sf)(__m128)(B), \
5394 (int)(((D)<<2) | (C)), \
5395 (__v4sf)_mm_setzero_pd(), \
5396 (__mmask8)(U), \
5397 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005398
Craig Topper8c18e112016-05-17 04:41:50 +00005399#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5400 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5401 (__v4sf)(__m128)(B), \
5402 (int)(((D)<<2) | (C)), \
5403 (__v4sf)_mm_setzero_ps(), \
5404 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005405
5406static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5407_mm512_kmov (__mmask16 __A)
5408{
5409 return __A;
5410}
5411
Craig Topper8c18e112016-05-17 04:41:50 +00005412#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5413 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5414 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005415
Craig Topper8c18e112016-05-17 04:41:50 +00005416#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5417 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5418 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005419
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005420static __inline__ __m512d __DEFAULT_FN_ATTRS
5421_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5422{
5423 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5424 (__v8df) __B,
5425 (__v8df) __W,
5426 (__mmask8) __U);
5427}
Craig Topper8c18e112016-05-17 04:41:50 +00005428#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5429 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005430static __inline__ __m512i __DEFAULT_FN_ATTRS
5431_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5432 __mmask16 __U, __m512i __B)
5433{
5434 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5435 (__v16si) __I
5436 /* idx */ ,
5437 (__v16si) __B,
5438 (__mmask16) __U);
5439}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005440static __inline__ __m512i __DEFAULT_FN_ATTRS
5441_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5442{
5443 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5444 (__v16si) __B,
5445 (__v16si)
5446 _mm512_setzero_si512 (),
5447 (__mmask16) -1);
5448}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005449
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005450static __inline__ __m512i __DEFAULT_FN_ATTRS
5451_mm512_sll_epi32 (__m512i __A, __m128i __B)
5452{
5453 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5454 (__v4si) __B,
5455 (__v16si)
5456 _mm512_setzero_si512 (),
5457 (__mmask16) -1);
5458}
5459
5460static __inline__ __m512i __DEFAULT_FN_ATTRS
5461_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5462{
5463 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5464 (__v4si) __B,
5465 (__v16si) __W,
5466 (__mmask16) __U);
5467}
5468
5469static __inline__ __m512i __DEFAULT_FN_ATTRS
5470_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5471{
5472 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5473 (__v4si) __B,
5474 (__v16si)
5475 _mm512_setzero_si512 (),
5476 (__mmask16) __U);
5477}
5478
5479static __inline__ __m512i __DEFAULT_FN_ATTRS
5480_mm512_sll_epi64 (__m512i __A, __m128i __B)
5481{
5482 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5483 (__v2di) __B,
5484 (__v8di)
5485 _mm512_setzero_si512 (),
5486 (__mmask8) -1);
5487}
5488
5489static __inline__ __m512i __DEFAULT_FN_ATTRS
5490_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5491{
5492 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5493 (__v2di) __B,
5494 (__v8di) __W,
5495 (__mmask8) __U);
5496}
5497
5498static __inline__ __m512i __DEFAULT_FN_ATTRS
5499_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5500{
5501 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5502 (__v2di) __B,
5503 (__v8di)
5504 _mm512_setzero_si512 (),
5505 (__mmask8) __U);
5506}
5507
5508static __inline__ __m512i __DEFAULT_FN_ATTRS
5509_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5510{
5511 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5512 (__v16si) __Y,
5513 (__v16si)
5514 _mm512_setzero_si512 (),
5515 (__mmask16) -1);
5516}
5517
5518static __inline__ __m512i __DEFAULT_FN_ATTRS
5519_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5520{
5521 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5522 (__v16si) __Y,
5523 (__v16si) __W,
5524 (__mmask16) __U);
5525}
5526
5527static __inline__ __m512i __DEFAULT_FN_ATTRS
5528_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5529{
5530 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5531 (__v16si) __Y,
5532 (__v16si)
5533 _mm512_setzero_si512 (),
5534 (__mmask16) __U);
5535}
5536
5537static __inline__ __m512i __DEFAULT_FN_ATTRS
5538_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5539{
5540 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5541 (__v8di) __Y,
5542 (__v8di)
5543 _mm512_undefined_pd (),
5544 (__mmask8) -1);
5545}
5546
5547static __inline__ __m512i __DEFAULT_FN_ATTRS
5548_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5549{
5550 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5551 (__v8di) __Y,
5552 (__v8di) __W,
5553 (__mmask8) __U);
5554}
5555
5556static __inline__ __m512i __DEFAULT_FN_ATTRS
5557_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5558{
5559 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5560 (__v8di) __Y,
5561 (__v8di)
5562 _mm512_setzero_si512 (),
5563 (__mmask8) __U);
5564}
5565
5566static __inline__ __m512i __DEFAULT_FN_ATTRS
5567_mm512_sra_epi32 (__m512i __A, __m128i __B)
5568{
5569 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5570 (__v4si) __B,
5571 (__v16si)
5572 _mm512_setzero_si512 (),
5573 (__mmask16) -1);
5574}
5575
5576static __inline__ __m512i __DEFAULT_FN_ATTRS
5577_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5578{
5579 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5580 (__v4si) __B,
5581 (__v16si) __W,
5582 (__mmask16) __U);
5583}
5584
5585static __inline__ __m512i __DEFAULT_FN_ATTRS
5586_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5587{
5588 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5589 (__v4si) __B,
5590 (__v16si)
5591 _mm512_setzero_si512 (),
5592 (__mmask16) __U);
5593}
5594
5595static __inline__ __m512i __DEFAULT_FN_ATTRS
5596_mm512_sra_epi64 (__m512i __A, __m128i __B)
5597{
5598 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5599 (__v2di) __B,
5600 (__v8di)
5601 _mm512_setzero_si512 (),
5602 (__mmask8) -1);
5603}
5604
5605static __inline__ __m512i __DEFAULT_FN_ATTRS
5606_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5607{
5608 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5609 (__v2di) __B,
5610 (__v8di) __W,
5611 (__mmask8) __U);
5612}
5613
5614static __inline__ __m512i __DEFAULT_FN_ATTRS
5615_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5616{
5617 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5618 (__v2di) __B,
5619 (__v8di)
5620 _mm512_setzero_si512 (),
5621 (__mmask8) __U);
5622}
5623
5624static __inline__ __m512i __DEFAULT_FN_ATTRS
5625_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5626{
5627 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5628 (__v16si) __Y,
5629 (__v16si)
5630 _mm512_setzero_si512 (),
5631 (__mmask16) -1);
5632}
5633
5634static __inline__ __m512i __DEFAULT_FN_ATTRS
5635_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5636{
5637 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5638 (__v16si) __Y,
5639 (__v16si) __W,
5640 (__mmask16) __U);
5641}
5642
5643static __inline__ __m512i __DEFAULT_FN_ATTRS
5644_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5645{
5646 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5647 (__v16si) __Y,
5648 (__v16si)
5649 _mm512_setzero_si512 (),
5650 (__mmask16) __U);
5651}
5652
5653static __inline__ __m512i __DEFAULT_FN_ATTRS
5654_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5655{
5656 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5657 (__v8di) __Y,
5658 (__v8di)
5659 _mm512_setzero_si512 (),
5660 (__mmask8) -1);
5661}
5662
5663static __inline__ __m512i __DEFAULT_FN_ATTRS
5664_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5665{
5666 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5667 (__v8di) __Y,
5668 (__v8di) __W,
5669 (__mmask8) __U);
5670}
5671
5672static __inline__ __m512i __DEFAULT_FN_ATTRS
5673_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5674{
5675 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5676 (__v8di) __Y,
5677 (__v8di)
5678 _mm512_setzero_si512 (),
5679 (__mmask8) __U);
5680}
5681
5682static __inline__ __m512i __DEFAULT_FN_ATTRS
5683_mm512_srl_epi32 (__m512i __A, __m128i __B)
5684{
5685 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5686 (__v4si) __B,
5687 (__v16si)
5688 _mm512_setzero_si512 (),
5689 (__mmask16) -1);
5690}
5691
5692static __inline__ __m512i __DEFAULT_FN_ATTRS
5693_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5694{
5695 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5696 (__v4si) __B,
5697 (__v16si) __W,
5698 (__mmask16) __U);
5699}
5700
5701static __inline__ __m512i __DEFAULT_FN_ATTRS
5702_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5703{
5704 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5705 (__v4si) __B,
5706 (__v16si)
5707 _mm512_setzero_si512 (),
5708 (__mmask16) __U);
5709}
5710
5711static __inline__ __m512i __DEFAULT_FN_ATTRS
5712_mm512_srl_epi64 (__m512i __A, __m128i __B)
5713{
5714 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5715 (__v2di) __B,
5716 (__v8di)
5717 _mm512_setzero_si512 (),
5718 (__mmask8) -1);
5719}
5720
5721static __inline__ __m512i __DEFAULT_FN_ATTRS
5722_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5723{
5724 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5725 (__v2di) __B,
5726 (__v8di) __W,
5727 (__mmask8) __U);
5728}
5729
5730static __inline__ __m512i __DEFAULT_FN_ATTRS
5731_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5732{
5733 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5734 (__v2di) __B,
5735 (__v8di)
5736 _mm512_setzero_si512 (),
5737 (__mmask8) __U);
5738}
5739
5740static __inline__ __m512i __DEFAULT_FN_ATTRS
5741_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5742{
5743 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5744 (__v16si) __Y,
5745 (__v16si)
5746 _mm512_setzero_si512 (),
5747 (__mmask16) -1);
5748}
5749
5750static __inline__ __m512i __DEFAULT_FN_ATTRS
5751_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5752{
5753 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5754 (__v16si) __Y,
5755 (__v16si) __W,
5756 (__mmask16) __U);
5757}
5758
5759static __inline__ __m512i __DEFAULT_FN_ATTRS
5760_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5761{
5762 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5763 (__v16si) __Y,
5764 (__v16si)
5765 _mm512_setzero_si512 (),
5766 (__mmask16) __U);
5767}
5768
5769static __inline__ __m512i __DEFAULT_FN_ATTRS
5770_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5771{
5772 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5773 (__v8di) __Y,
5774 (__v8di)
5775 _mm512_setzero_si512 (),
5776 (__mmask8) -1);
5777}
5778
5779static __inline__ __m512i __DEFAULT_FN_ATTRS
5780_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5781{
5782 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5783 (__v8di) __Y,
5784 (__v8di) __W,
5785 (__mmask8) __U);
5786}
5787
5788static __inline__ __m512i __DEFAULT_FN_ATTRS
5789_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5790{
5791 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5792 (__v8di) __Y,
5793 (__v8di)
5794 _mm512_setzero_si512 (),
5795 (__mmask8) __U);
5796}
5797
Craig Topper8c18e112016-05-17 04:41:50 +00005798#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5799 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5800 (__v16si)(__m512i)(B), \
5801 (__v16si)(__m512i)(C), (int)(imm), \
5802 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005803
Craig Topper8c18e112016-05-17 04:41:50 +00005804#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5805 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5806 (__v16si)(__m512i)(B), \
5807 (__v16si)(__m512i)(C), (int)(imm), \
5808 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005809
Craig Topper8c18e112016-05-17 04:41:50 +00005810#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5811 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5812 (__v16si)(__m512i)(B), \
5813 (__v16si)(__m512i)(C), \
5814 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005815
Craig Topper8c18e112016-05-17 04:41:50 +00005816#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5817 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5818 (__v8di)(__m512i)(B), \
5819 (__v8di)(__m512i)(C), (int)(imm), \
5820 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005821
Craig Topper8c18e112016-05-17 04:41:50 +00005822#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
5823 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5824 (__v8di)(__m512i)(B), \
5825 (__v8di)(__m512i)(C), (int)(imm), \
5826 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005827
Craig Topper8c18e112016-05-17 04:41:50 +00005828#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
5829 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
5830 (__v8di)(__m512i)(B), \
5831 (__v8di)(__m512i)(C), (int)(imm), \
5832 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005833
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005834static __inline__ __m512d __DEFAULT_FN_ATTRS
5835_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5836{
5837 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5838 (__v8df) __B,
5839 (__v8df)
5840 _mm512_setzero_pd (),
5841 (__mmask8) __U);
5842}
5843
5844static __inline__ __m512 __DEFAULT_FN_ATTRS
5845_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5846{
5847 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5848 (__v16sf) __B,
5849 (__v16sf) __W,
5850 (__mmask16) __U);
5851}
5852
5853static __inline__ __m512 __DEFAULT_FN_ATTRS
5854_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5855{
5856 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5857 (__v16sf) __B,
5858 (__v16sf)
5859 _mm512_setzero_ps (),
5860 (__mmask16) __U);
5861}
5862
5863static __inline__ __m512d __DEFAULT_FN_ATTRS
5864_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5865{
5866 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5867 (__v8df) __B,
5868 (__v8df) __W,
5869 (__mmask8) __U);
5870}
5871
5872static __inline__ __m512d __DEFAULT_FN_ATTRS
5873_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5874{
5875 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5876 (__v8df) __B,
5877 (__v8df)
5878 _mm512_setzero_pd (),
5879 (__mmask8) __U);
5880}
5881
5882static __inline__ __m512 __DEFAULT_FN_ATTRS
5883_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5884{
5885 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5886 (__v16sf) __B,
5887 (__v16sf) __W,
5888 (__mmask16) __U);
5889}
5890
5891static __inline__ __m512 __DEFAULT_FN_ATTRS
5892_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5893{
5894 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5895 (__v16sf) __B,
5896 (__v16sf)
5897 _mm512_setzero_ps (),
5898 (__mmask16) __U);
5899}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005900
Craig Topper8c18e112016-05-17 04:41:50 +00005901#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
5902 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005903
Craig Topper8c18e112016-05-17 04:41:50 +00005904#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
5905 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005906
Craig Topper8c18e112016-05-17 04:41:50 +00005907#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
5908 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005909
Craig Topper8c18e112016-05-17 04:41:50 +00005910#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
5911 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005912
5913static __inline__ unsigned __DEFAULT_FN_ATTRS
5914_mm_cvtsd_u32 (__m128d __A)
5915{
5916 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5917 _MM_FROUND_CUR_DIRECTION);
5918}
5919
Craig Topper8c18e112016-05-17 04:41:50 +00005920#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
5921 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
5922 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005923
5924static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5925_mm_cvtsd_u64 (__m128d __A)
5926{
5927 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5928 __A,
5929 _MM_FROUND_CUR_DIRECTION);
5930}
5931
Craig Topper8c18e112016-05-17 04:41:50 +00005932#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
5933 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005934
Craig Topper8c18e112016-05-17 04:41:50 +00005935#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
5936 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005937
Craig Topper8c18e112016-05-17 04:41:50 +00005938#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
5939 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005940
Craig Topper8c18e112016-05-17 04:41:50 +00005941#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
5942 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005943
Craig Topper8c18e112016-05-17 04:41:50 +00005944#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
5945 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005946
5947static __inline__ unsigned __DEFAULT_FN_ATTRS
5948_mm_cvtss_u32 (__m128 __A)
5949{
5950 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5951 _MM_FROUND_CUR_DIRECTION);
5952}
5953
Craig Topper8c18e112016-05-17 04:41:50 +00005954#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
5955 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
5956 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005957
5958static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5959_mm_cvtss_u64 (__m128 __A)
5960{
5961 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5962 __A,
5963 _MM_FROUND_CUR_DIRECTION);
5964}
5965
Craig Topper8c18e112016-05-17 04:41:50 +00005966#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
5967 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005968
Craig Topper8c18e112016-05-17 04:41:50 +00005969#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
5970 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005971
5972static __inline__ int __DEFAULT_FN_ATTRS
5973_mm_cvttsd_i32 (__m128d __A)
5974{
5975 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
5976 _MM_FROUND_CUR_DIRECTION);
5977}
5978
Craig Topper8c18e112016-05-17 04:41:50 +00005979#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
5980 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005981
Craig Topper8c18e112016-05-17 04:41:50 +00005982#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
5983 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005984
5985static __inline__ long long __DEFAULT_FN_ATTRS
5986_mm_cvttsd_i64 (__m128d __A)
5987{
5988 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
5989 _MM_FROUND_CUR_DIRECTION);
5990}
5991
Craig Topper8c18e112016-05-17 04:41:50 +00005992#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
5993 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005994
5995static __inline__ unsigned __DEFAULT_FN_ATTRS
5996_mm_cvttsd_u32 (__m128d __A)
5997{
5998 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
5999 _MM_FROUND_CUR_DIRECTION);
6000}
6001
Craig Topper8c18e112016-05-17 04:41:50 +00006002#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6003 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6004 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006005
6006static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6007_mm_cvttsd_u64 (__m128d __A)
6008{
6009 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6010 __A,
6011 _MM_FROUND_CUR_DIRECTION);
6012}
6013
Craig Topper8c18e112016-05-17 04:41:50 +00006014#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6015 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006016
Craig Topper8c18e112016-05-17 04:41:50 +00006017#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6018 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006019
6020static __inline__ int __DEFAULT_FN_ATTRS
6021_mm_cvttss_i32 (__m128 __A)
6022{
6023 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6024 _MM_FROUND_CUR_DIRECTION);
6025}
6026
Craig Topper8c18e112016-05-17 04:41:50 +00006027#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6028 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006029
Craig Topper8c18e112016-05-17 04:41:50 +00006030#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6031 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006032
6033static __inline__ long long __DEFAULT_FN_ATTRS
6034_mm_cvttss_i64 (__m128 __A)
6035{
6036 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6037 _MM_FROUND_CUR_DIRECTION);
6038}
6039
Craig Topper8c18e112016-05-17 04:41:50 +00006040#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6041 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006042
6043static __inline__ unsigned __DEFAULT_FN_ATTRS
6044_mm_cvttss_u32 (__m128 __A)
6045{
6046 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6047 _MM_FROUND_CUR_DIRECTION);
6048}
6049
Craig Topper8c18e112016-05-17 04:41:50 +00006050#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6051 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6052 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006053
6054static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6055_mm_cvttss_u64 (__m128 __A)
6056{
6057 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6058 __A,
6059 _MM_FROUND_CUR_DIRECTION);
6060}
6061
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006062static __inline__ __m512d __DEFAULT_FN_ATTRS
6063_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6064 __m512d __B)
6065{
6066 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6067 (__v8di) __I
6068 /* idx */ ,
6069 (__v8df) __B,
6070 (__mmask8) __U);
6071}
6072
6073static __inline__ __m512 __DEFAULT_FN_ATTRS
6074_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6075 __m512 __B)
6076{
6077 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6078 (__v16si) __I
6079 /* idx */ ,
6080 (__v16sf) __B,
6081 (__mmask16) __U);
6082}
6083
6084static __inline__ __m512i __DEFAULT_FN_ATTRS
6085_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6086 __mmask8 __U, __m512i __B)
6087{
6088 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6089 (__v8di) __I
6090 /* idx */ ,
6091 (__v8di) __B,
6092 (__mmask8) __U);
6093}
6094
Craig Topper8c18e112016-05-17 04:41:50 +00006095#define _mm512_permute_pd(X, C) __extension__ ({ \
6096 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6097 (__v8df)_mm512_undefined_pd(), \
6098 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006099
Craig Topper8c18e112016-05-17 04:41:50 +00006100#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6101 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6102 (__v8df)(__m512d)(W), \
6103 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006104
Craig Topper8c18e112016-05-17 04:41:50 +00006105#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6106 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6107 (__v8df)_mm512_setzero_pd(), \
6108 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006109
Craig Topper8c18e112016-05-17 04:41:50 +00006110#define _mm512_permute_ps(X, C) __extension__ ({ \
6111 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6112 (__v16sf)_mm512_undefined_ps(), \
6113 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006114
Craig Topper8c18e112016-05-17 04:41:50 +00006115#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6116 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6117 (__v16sf)(__m512)(W), \
6118 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006119
Craig Topper8c18e112016-05-17 04:41:50 +00006120#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6121 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6122 (__v16sf)_mm512_setzero_ps(), \
6123 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006124
6125static __inline__ __m512d __DEFAULT_FN_ATTRS
6126_mm512_permutevar_pd (__m512d __A, __m512i __C)
6127{
6128 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6129 (__v8di) __C,
6130 (__v8df)
6131 _mm512_undefined_pd (),
6132 (__mmask8) -1);
6133}
6134
6135static __inline__ __m512d __DEFAULT_FN_ATTRS
6136_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6137{
6138 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6139 (__v8di) __C,
6140 (__v8df) __W,
6141 (__mmask8) __U);
6142}
6143
6144static __inline__ __m512d __DEFAULT_FN_ATTRS
6145_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6146{
6147 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6148 (__v8di) __C,
6149 (__v8df)
6150 _mm512_setzero_pd (),
6151 (__mmask8) __U);
6152}
6153
6154static __inline__ __m512 __DEFAULT_FN_ATTRS
6155_mm512_permutevar_ps (__m512 __A, __m512i __C)
6156{
6157 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6158 (__v16si) __C,
6159 (__v16sf)
6160 _mm512_undefined_ps (),
6161 (__mmask16) -1);
6162}
6163
6164static __inline__ __m512 __DEFAULT_FN_ATTRS
6165_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6166{
6167 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6168 (__v16si) __C,
6169 (__v16sf) __W,
6170 (__mmask16) __U);
6171}
6172
6173static __inline__ __m512 __DEFAULT_FN_ATTRS
6174_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6175{
6176 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6177 (__v16si) __C,
6178 (__v16sf)
6179 _mm512_setzero_ps (),
6180 (__mmask16) __U);
6181}
6182
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006183static __inline __m512d __DEFAULT_FN_ATTRS
6184_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006185{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006186 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6187 /* idx */ ,
6188 (__v8df) __A,
6189 (__v8df) __B,
6190 (__mmask8) -1);
6191}
6192
6193static __inline__ __m512d __DEFAULT_FN_ATTRS
6194_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6195{
6196 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6197 /* idx */ ,
6198 (__v8df) __A,
6199 (__v8df) __B,
6200 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006201}
6202
6203static __inline__ __m512d __DEFAULT_FN_ATTRS
6204_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6205 __m512d __B)
6206{
6207 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006208 /* idx */ ,
6209 (__v8df) __A,
6210 (__v8df) __B,
6211 (__mmask8) __U);
6212}
6213
6214static __inline __m512 __DEFAULT_FN_ATTRS
6215_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6216{
6217 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6218 /* idx */ ,
6219 (__v16sf) __A,
6220 (__v16sf) __B,
6221 (__mmask16) -1);
6222}
6223
6224static __inline__ __m512 __DEFAULT_FN_ATTRS
6225_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6226{
6227 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6228 /* idx */ ,
6229 (__v16sf) __A,
6230 (__v16sf) __B,
6231 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006232}
6233
6234static __inline__ __m512 __DEFAULT_FN_ATTRS
6235_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6236 __m512 __B)
6237{
6238 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006239 /* idx */ ,
6240 (__v16sf) __A,
6241 (__v16sf) __B,
6242 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006243}
6244
Michael Zuckerman07525092016-04-11 10:22:07 +00006245static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6246_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6247{
6248 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6249 (__v16si) __B,
6250 (__mmask16) -1);
6251}
6252
6253static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6254_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6255{
6256 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6257 (__v16si) __B, __U);
6258}
6259
6260static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6261_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6262{
6263 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6264 (__v8di) __B,
6265 (__mmask8) -1);
6266}
6267
6268static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6269_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6270{
6271 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6272 (__v8di) __B, __U);
6273}
6274
Craig Topper8c18e112016-05-17 04:41:50 +00006275#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6276 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6277 (__v8si)_mm256_undefined_si256(), \
6278 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006279
Craig Topper8c18e112016-05-17 04:41:50 +00006280#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6281 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6282 (__v8si)(__m256i)(W), \
6283 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006284
Craig Topper8c18e112016-05-17 04:41:50 +00006285#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6286 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6287 (__v8si)_mm256_setzero_si256(), \
6288 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006289
6290static __inline__ __m256i __DEFAULT_FN_ATTRS
6291_mm512_cvttpd_epu32 (__m512d __A)
6292{
6293 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6294 (__v8si)
6295 _mm256_undefined_si256 (),
6296 (__mmask8) -1,
6297 _MM_FROUND_CUR_DIRECTION);
6298}
6299
6300static __inline__ __m256i __DEFAULT_FN_ATTRS
6301_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6302{
6303 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6304 (__v8si) __W,
6305 (__mmask8) __U,
6306 _MM_FROUND_CUR_DIRECTION);
6307}
6308
6309static __inline__ __m256i __DEFAULT_FN_ATTRS
6310_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6311{
6312 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6313 (__v8si)
6314 _mm256_setzero_si256 (),
6315 (__mmask8) __U,
6316 _MM_FROUND_CUR_DIRECTION);
6317}
Michael Zuckerman07525092016-04-11 10:22:07 +00006318
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006319static __inline__ __m512i __DEFAULT_FN_ATTRS
6320_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6321 __m512i __B)
6322{
6323 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6324 (__v16si) __B,
6325 (__v16si) __W,
6326 (__mmask16) __U);
6327}
6328
6329static __inline__ __m512i __DEFAULT_FN_ATTRS
6330_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6331{
6332 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6333 (__v16si) __B,
6334 (__v16si)
6335 _mm512_setzero_si512 (),
6336 (__mmask16) __U);
6337}
6338
6339static __inline__ __m512i __DEFAULT_FN_ATTRS
6340_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6341{
6342 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6343 (__v8di) __B,
6344 (__v8di)
6345 _mm512_setzero_si512 (),
6346 (__mmask8) -1);
6347}
6348
6349static __inline__ __m512i __DEFAULT_FN_ATTRS
6350_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6351{
6352 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6353 (__v8di) __B,
6354 (__v8di) __W,
6355 (__mmask8) __U);
6356}
6357
6358static __inline__ __m512i __DEFAULT_FN_ATTRS
6359_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6360{
6361 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6362 (__v8di) __B,
6363 (__v8di)
6364 _mm512_setzero_si512 (),
6365 (__mmask8) __U);
6366}
6367
6368static __inline__ __m512i __DEFAULT_FN_ATTRS
6369_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6370{
6371 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6372 (__v16si) __B,
6373 (__v16si)
6374 _mm512_setzero_si512 (),
6375 (__mmask16) -1);
6376}
6377
6378static __inline__ __m512i __DEFAULT_FN_ATTRS
6379_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6380 __m512i __B)
6381{
6382 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6383 (__v16si) __B,
6384 (__v16si) __W,
6385 (__mmask16) __U);
6386}
6387
6388static __inline__ __m512i __DEFAULT_FN_ATTRS
6389_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6390{
6391 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6392 (__v16si) __B,
6393 (__v16si)
6394 _mm512_setzero_si512 (),
6395 (__mmask16) __U);
6396}
6397
6398static __inline__ __m512i __DEFAULT_FN_ATTRS
6399_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6400{
6401 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6402 (__v8di) __B,
6403 (__v8di)
6404 _mm512_setzero_si512 (),
6405 (__mmask8) -1);
6406}
6407
6408static __inline__ __m512i __DEFAULT_FN_ATTRS
6409_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6410{
6411 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6412 (__v8di) __B,
6413 (__v8di) __W,
6414 (__mmask8) __U);
6415}
6416
6417static __inline__ __m512i __DEFAULT_FN_ATTRS
6418_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6419{
6420 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6421 (__v8di) __B,
6422 (__v8di)
6423 _mm512_setzero_si512 (),
6424 (__mmask8) __U);
6425}
6426
Craig Topper8c18e112016-05-17 04:41:50 +00006427#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6428 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6429 (__v2df)(__m128d)(B), \
6430 (__v2df)_mm_setzero_pd(), \
6431 (__mmask8)-1, (int)(imm), \
6432 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006433
Craig Topper8c18e112016-05-17 04:41:50 +00006434#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6435 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6436 (__v2df)(__m128d)(B), \
6437 (__v2df)_mm_setzero_pd(), \
6438 (__mmask8)-1, (int)(imm), \
6439 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006440
Craig Topper8c18e112016-05-17 04:41:50 +00006441#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6442 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6443 (__v2df)(__m128d)(B), \
6444 (__v2df)(__m128d)(W), \
6445 (__mmask8)(U), (int)(imm), \
6446 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006447
Craig Topper8c18e112016-05-17 04:41:50 +00006448#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6449 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6450 (__v2df)(__m128d)(B), \
6451 (__v2df)(__m128d)(W), \
6452 (__mmask8)(U), (int)(I), \
6453 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006454
Craig Topper8c18e112016-05-17 04:41:50 +00006455#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6456 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6457 (__v2df)(__m128d)(B), \
6458 (__v2df)_mm_setzero_pd(), \
6459 (__mmask8)(U), (int)(I), \
6460 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006461
Craig Topper8c18e112016-05-17 04:41:50 +00006462#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6463 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6464 (__v2df)(__m128d)(B), \
6465 (__v2df)_mm_setzero_pd(), \
6466 (__mmask8)(U), (int)(I), \
6467 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006468
Craig Topper8c18e112016-05-17 04:41:50 +00006469#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6470 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6471 (__v4sf)(__m128)(B), \
6472 (__v4sf)_mm_setzero_ps(), \
6473 (__mmask8)-1, (int)(imm), \
6474 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006475
Craig Topper8c18e112016-05-17 04:41:50 +00006476#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6477 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6478 (__v4sf)(__m128)(B), \
6479 (__v4sf)_mm_setzero_ps(), \
6480 (__mmask8)-1, (int)(imm), \
6481 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006482
Craig Topper8c18e112016-05-17 04:41:50 +00006483#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6484 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6485 (__v4sf)(__m128)(B), \
6486 (__v4sf)(__m128)(W), \
6487 (__mmask8)(U), (int)(I), \
6488 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006489
Craig Topper8c18e112016-05-17 04:41:50 +00006490#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6491 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6492 (__v4sf)(__m128)(B), \
6493 (__v4sf)(__m128)(W), \
6494 (__mmask8)(U), (int)(I), \
6495 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006496
Craig Topper8c18e112016-05-17 04:41:50 +00006497#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6498 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6499 (__v4sf)(__m128)(B), \
6500 (__v4sf)_mm_setzero_ps(), \
6501 (__mmask8)(U), (int)(I), \
6502 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006503
Craig Topper8c18e112016-05-17 04:41:50 +00006504#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6505 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6506 (__v4sf)(__m128)(B), \
6507 (__v4sf)_mm_setzero_ps(), \
6508 (__mmask8)(U), (int)(I), \
6509 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006510
Craig Topper8c18e112016-05-17 04:41:50 +00006511#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6512 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6513 (__v8df)(__m512d)(B), \
6514 (__v8df)_mm512_undefined_pd(), \
6515 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006516
Craig Topper8c18e112016-05-17 04:41:50 +00006517#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6518 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6519 (__v8df)(__m512d)(B), \
6520 (__v8df)(__m512d)(W), \
6521 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006522
Craig Topper8c18e112016-05-17 04:41:50 +00006523#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6524 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6525 (__v8df)(__m512d)(B), \
6526 (__v8df)_mm512_setzero_pd(), \
6527 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006528
6529static __inline__ __m512d __DEFAULT_FN_ATTRS
6530_mm512_scalef_pd (__m512d __A, __m512d __B)
6531{
6532 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6533 (__v8df) __B,
6534 (__v8df)
6535 _mm512_undefined_pd (),
6536 (__mmask8) -1,
6537 _MM_FROUND_CUR_DIRECTION);
6538}
6539
6540static __inline__ __m512d __DEFAULT_FN_ATTRS
6541_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6542{
6543 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6544 (__v8df) __B,
6545 (__v8df) __W,
6546 (__mmask8) __U,
6547 _MM_FROUND_CUR_DIRECTION);
6548}
6549
6550static __inline__ __m512d __DEFAULT_FN_ATTRS
6551_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6552{
6553 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6554 (__v8df) __B,
6555 (__v8df)
6556 _mm512_setzero_pd (),
6557 (__mmask8) __U,
6558 _MM_FROUND_CUR_DIRECTION);
6559}
6560
Craig Topper8c18e112016-05-17 04:41:50 +00006561#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6562 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6563 (__v16sf)(__m512)(B), \
6564 (__v16sf)_mm512_undefined_ps(), \
6565 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006566
Craig Topper8c18e112016-05-17 04:41:50 +00006567#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6568 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6569 (__v16sf)(__m512)(B), \
6570 (__v16sf)(__m512)(W), \
6571 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006572
Craig Topper8c18e112016-05-17 04:41:50 +00006573#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6574 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6575 (__v16sf)(__m512)(B), \
6576 (__v16sf)_mm512_setzero_ps(), \
6577 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006578
6579static __inline__ __m512 __DEFAULT_FN_ATTRS
6580_mm512_scalef_ps (__m512 __A, __m512 __B)
6581{
6582 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6583 (__v16sf) __B,
6584 (__v16sf)
6585 _mm512_undefined_ps (),
6586 (__mmask16) -1,
6587 _MM_FROUND_CUR_DIRECTION);
6588}
6589
6590static __inline__ __m512 __DEFAULT_FN_ATTRS
6591_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6592{
6593 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6594 (__v16sf) __B,
6595 (__v16sf) __W,
6596 (__mmask16) __U,
6597 _MM_FROUND_CUR_DIRECTION);
6598}
6599
6600static __inline__ __m512 __DEFAULT_FN_ATTRS
6601_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6602{
6603 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6604 (__v16sf) __B,
6605 (__v16sf)
6606 _mm512_setzero_ps (),
6607 (__mmask16) __U,
6608 _MM_FROUND_CUR_DIRECTION);
6609}
6610
Craig Topper8c18e112016-05-17 04:41:50 +00006611#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6612 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6613 (__v2df)(__m128d)(B), \
6614 (__v2df)_mm_setzero_pd(), \
6615 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006616
6617static __inline__ __m128d __DEFAULT_FN_ATTRS
6618_mm_scalef_sd (__m128d __A, __m128d __B)
6619{
6620 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6621 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6622 (__mmask8) -1,
6623 _MM_FROUND_CUR_DIRECTION);
6624}
6625
6626static __inline__ __m128d __DEFAULT_FN_ATTRS
6627_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6628{
6629 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6630 (__v2df) __B,
6631 (__v2df) __W,
6632 (__mmask8) __U,
6633 _MM_FROUND_CUR_DIRECTION);
6634}
6635
Craig Topper8c18e112016-05-17 04:41:50 +00006636#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6637 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6638 (__v2df)(__m128d)(B), \
6639 (__v2df)(__m128d)(W), \
6640 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006641
6642static __inline__ __m128d __DEFAULT_FN_ATTRS
6643_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
6644{
6645 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6646 (__v2df) __B,
6647 (__v2df) _mm_setzero_pd (),
6648 (__mmask8) __U,
6649 _MM_FROUND_CUR_DIRECTION);
6650}
6651
Craig Topper8c18e112016-05-17 04:41:50 +00006652#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6653 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6654 (__v2df)(__m128d)(B), \
6655 (__v2df)_mm_setzero_pd(), \
6656 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006657
Craig Topper8c18e112016-05-17 04:41:50 +00006658#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6659 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6660 (__v4sf)(__m128)(B), \
6661 (__v4sf)_mm_setzero_ps(), \
6662 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006663
6664static __inline__ __m128 __DEFAULT_FN_ATTRS
6665_mm_scalef_ss (__m128 __A, __m128 __B)
6666{
6667 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6668 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6669 (__mmask8) -1,
6670 _MM_FROUND_CUR_DIRECTION);
6671}
6672
6673static __inline__ __m128 __DEFAULT_FN_ATTRS
6674_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6675{
6676 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6677 (__v4sf) __B,
6678 (__v4sf) __W,
6679 (__mmask8) __U,
6680 _MM_FROUND_CUR_DIRECTION);
6681}
6682
Craig Topper8c18e112016-05-17 04:41:50 +00006683#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6684 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6685 (__v4sf)(__m128)(B), \
6686 (__v4sf)(__m128)(W), \
6687 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006688
6689static __inline__ __m128 __DEFAULT_FN_ATTRS
6690_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
6691{
6692 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6693 (__v4sf) __B,
6694 (__v4sf) _mm_setzero_ps (),
6695 (__mmask8) __U,
6696 _MM_FROUND_CUR_DIRECTION);
6697}
6698
Craig Topper8c18e112016-05-17 04:41:50 +00006699#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6700 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6701 (__v4sf)(__m128)(B), \
6702 (__v4sf)_mm_setzero_ps(), \
6703 (__mmask8)(U), \
6704 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006705
Craig Topper79d05c92016-05-15 20:10:06 +00006706#define _mm512_srai_epi32(A, B) __extension__ ({ \
6707 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6708 (__v16si)_mm512_setzero_si512(), \
6709 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006710
Craig Topper8c18e112016-05-17 04:41:50 +00006711#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6712 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6713 (__v16si)(__m512i)(W), \
6714 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006715
Craig Topper8c18e112016-05-17 04:41:50 +00006716#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6717 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6718 (__v16si)_mm512_setzero_si512(), \
6719 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006720
Craig Topper8c18e112016-05-17 04:41:50 +00006721#define _mm512_srai_epi64(A, B) __extension__ ({ \
6722 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6723 (__v8di)_mm512_setzero_si512(), \
6724 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006725
Craig Topper8c18e112016-05-17 04:41:50 +00006726#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6727 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6728 (__v8di)(__m512i)(W), \
6729 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006730
Craig Topper8c18e112016-05-17 04:41:50 +00006731#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6732 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6733 (__v8di)_mm512_setzero_si512(), \
6734 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006735
Craig Topper8c18e112016-05-17 04:41:50 +00006736#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6737 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6738 (__v16sf)(__m512)(B), (int)(imm), \
6739 (__v16sf)_mm512_undefined_ps(), \
6740 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006741
Craig Topper8c18e112016-05-17 04:41:50 +00006742#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6743 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6744 (__v16sf)(__m512)(B), (int)(imm), \
6745 (__v16sf)(__m512)(W), \
6746 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006747
Craig Topper8c18e112016-05-17 04:41:50 +00006748#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6749 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6750 (__v16sf)(__m512)(B), (int)(imm), \
6751 (__v16sf)_mm512_setzero_ps(), \
6752 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006753
Craig Topper8c18e112016-05-17 04:41:50 +00006754#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6755 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6756 (__v8df)(__m512d)(B), (int)(imm), \
6757 (__v8df)_mm512_undefined_pd(), \
6758 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006759
Craig Topper8c18e112016-05-17 04:41:50 +00006760#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6761 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6762 (__v8df)(__m512d)(B), (int)(imm), \
6763 (__v8df)(__m512d)(W), \
6764 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006765
Craig Topper8c18e112016-05-17 04:41:50 +00006766#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6767 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6768 (__v8df)(__m512d)(B), (int)(imm), \
6769 (__v8df)_mm512_setzero_pd(), \
6770 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006771
Craig Topper8c18e112016-05-17 04:41:50 +00006772#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6773 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6774 (__v16si)(__m512i)(B), (int)(imm), \
6775 (__v16si)_mm512_setzero_si512(), \
6776 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006777
Craig Topper8c18e112016-05-17 04:41:50 +00006778#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6779 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6780 (__v16si)(__m512i)(B), (int)(imm), \
6781 (__v16si)(__m512i)(W), \
6782 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006783
Craig Topper8c18e112016-05-17 04:41:50 +00006784#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6785 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6786 (__v16si)(__m512i)(B), (int)(imm), \
6787 (__v16si)_mm512_setzero_si512(), \
6788 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006789
Craig Topper8c18e112016-05-17 04:41:50 +00006790#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6791 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6792 (__v8di)(__m512i)(B), (int)(imm), \
6793 (__v8di)_mm512_setzero_si512(), \
6794 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006795
Craig Topper8c18e112016-05-17 04:41:50 +00006796#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6797 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6798 (__v8di)(__m512i)(B), (int)(imm), \
6799 (__v8di)(__m512i)(W), \
6800 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006801
Craig Topper8c18e112016-05-17 04:41:50 +00006802#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6803 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6804 (__v8di)(__m512i)(B), (int)(imm), \
6805 (__v8di)_mm512_setzero_si512(), \
6806 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006807
Craig Topper8c18e112016-05-17 04:41:50 +00006808#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6809 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6810 (__v8df)(__m512d)(V), (int)(imm), \
6811 (__v8df)_mm512_undefined_pd(), \
6812 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006813
Craig Topper8c18e112016-05-17 04:41:50 +00006814#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6815 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6816 (__v8df)(__m512d)(V), (int)(imm), \
6817 (__v8df)(__m512d)(W), \
6818 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006819
Craig Topper8c18e112016-05-17 04:41:50 +00006820#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6821 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6822 (__v8df)(__m512d)(V), (int)(imm), \
6823 (__v8df)_mm512_setzero_pd(), \
6824 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006825
Craig Topper8c18e112016-05-17 04:41:50 +00006826#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
6827 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6828 (__v16sf)(__m512)(V), (int)(imm), \
6829 (__v16sf)_mm512_undefined_ps(), \
6830 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006831
Craig Topper8c18e112016-05-17 04:41:50 +00006832#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
6833 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6834 (__v16sf)(__m512)(V), (int)(imm), \
6835 (__v16sf)(__m512)(W), \
6836 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006837
Craig Topper8c18e112016-05-17 04:41:50 +00006838#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
6839 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6840 (__v16sf)(__m512)(V), (int)(imm), \
6841 (__v16sf)_mm512_setzero_ps(), \
6842 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006843
Craig Topper8c18e112016-05-17 04:41:50 +00006844#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
6845 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6846 (__v2df)(__m128d)(A), \
6847 (__v2df)_mm_setzero_pd(), \
6848 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006849
6850static __inline__ __m128d __DEFAULT_FN_ATTRS
6851_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6852{
6853 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6854 (__v2df) __A,
6855 (__v2df) __W,
6856 (__mmask8) __U,
6857 _MM_FROUND_CUR_DIRECTION);
6858}
6859
Craig Topper8c18e112016-05-17 04:41:50 +00006860#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
6861 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6862 (__v2df)(__m128d)(A), \
6863 (__v2df)(__m128d)(W), \
6864 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006865
6866static __inline__ __m128d __DEFAULT_FN_ATTRS
6867_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
6868{
6869 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6870 (__v2df) __A,
6871 (__v2df) _mm_setzero_pd (),
6872 (__mmask8) __U,
6873 _MM_FROUND_CUR_DIRECTION);
6874}
6875
Craig Topper8c18e112016-05-17 04:41:50 +00006876#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
6877 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6878 (__v2df)(__m128d)(A), \
6879 (__v2df)_mm_setzero_pd(), \
6880 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006881
Craig Topper8c18e112016-05-17 04:41:50 +00006882#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
6883 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6884 (__v4sf)(__m128)(A), \
6885 (__v4sf)_mm_setzero_ps(), \
6886 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006887
6888static __inline__ __m128 __DEFAULT_FN_ATTRS
6889_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6890{
6891 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6892 (__v4sf) __A,
6893 (__v4sf) __W,
6894 (__mmask8) __U,
6895 _MM_FROUND_CUR_DIRECTION);
6896}
6897
Craig Topper8c18e112016-05-17 04:41:50 +00006898#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
6899 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6900 (__v4sf)(__m128)(A), \
6901 (__v4sf)(__m128)(W), (__mmask8)(U), \
6902 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006903
6904static __inline__ __m128 __DEFAULT_FN_ATTRS
6905_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
6906{
6907 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6908 (__v4sf) __B,
6909 (__v4sf) _mm_setzero_ps (),
6910 (__mmask8) __U,
6911 _MM_FROUND_CUR_DIRECTION);
6912}
6913
Craig Topper8c18e112016-05-17 04:41:50 +00006914#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
6915 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6916 (__v4sf)(__m128)(A), \
6917 (__v4sf)_mm_setzero_ps(), \
6918 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006919
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006920static __inline__ __m512 __DEFAULT_FN_ATTRS
6921_mm512_broadcast_f32x4 (__m128 __A)
6922{
6923 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6924 (__v16sf)
6925 _mm512_undefined_ps (),
6926 (__mmask16) -1);
6927}
6928
6929static __inline__ __m512 __DEFAULT_FN_ATTRS
6930_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6931{
6932 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6933 (__v16sf) __O,
6934 __M);
6935}
6936
6937static __inline__ __m512 __DEFAULT_FN_ATTRS
6938_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6939{
6940 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6941 (__v16sf)
6942 _mm512_setzero_ps (),
6943 __M);
6944}
6945
6946static __inline__ __m512d __DEFAULT_FN_ATTRS
6947_mm512_broadcast_f64x4 (__m256d __A)
6948{
6949 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6950 (__v8df)
6951 _mm512_undefined_pd (),
6952 (__mmask8) -1);
6953}
6954
6955static __inline__ __m512d __DEFAULT_FN_ATTRS
6956_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6957{
6958 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6959 (__v8df) __O,
6960 __M);
6961}
6962
6963static __inline__ __m512d __DEFAULT_FN_ATTRS
6964_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6965{
6966 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6967 (__v8df)
6968 _mm512_setzero_pd (),
6969 __M);
6970}
6971
6972static __inline__ __m512i __DEFAULT_FN_ATTRS
6973_mm512_broadcast_i32x4 (__m128i __A)
6974{
6975 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6976 (__v16si)
6977 _mm512_undefined_epi32 (),
6978 (__mmask16) -1);
6979}
6980
6981static __inline__ __m512i __DEFAULT_FN_ATTRS
6982_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
6983{
6984 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6985 (__v16si) __O,
6986 __M);
6987}
6988
6989static __inline__ __m512i __DEFAULT_FN_ATTRS
6990_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
6991{
6992 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6993 (__v16si)
6994 _mm512_setzero_si512 (),
6995 __M);
6996}
6997
6998static __inline__ __m512i __DEFAULT_FN_ATTRS
6999_mm512_broadcast_i64x4 (__m256i __A)
7000{
7001 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7002 (__v8di)
7003 _mm512_undefined_epi32 (),
7004 (__mmask8) -1);
7005}
7006
7007static __inline__ __m512i __DEFAULT_FN_ATTRS
7008_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7009{
7010 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7011 (__v8di) __O,
7012 __M);
7013}
7014
7015static __inline__ __m512i __DEFAULT_FN_ATTRS
7016_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7017{
7018 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7019 (__v8di)
7020 _mm512_setzero_si512 (),
7021 __M);
7022}
7023
7024static __inline__ __m512d __DEFAULT_FN_ATTRS
7025_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7026{
7027 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7028 (__v8df) __O, __M);
7029}
7030
7031static __inline__ __m512d __DEFAULT_FN_ATTRS
7032_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7033{
7034 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7035 (__v8df)
7036 _mm512_setzero_pd (),
7037 __M);
7038}
7039
7040static __inline__ __m512 __DEFAULT_FN_ATTRS
7041_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7042{
7043 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7044 (__v16sf) __O, __M);
7045}
7046
7047static __inline__ __m512 __DEFAULT_FN_ATTRS
7048_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7049{
7050 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7051 (__v16sf)
7052 _mm512_setzero_ps (),
7053 __M);
7054}
7055
Michael Zuckermane1680612016-04-13 15:02:04 +00007056static __inline__ __m128i __DEFAULT_FN_ATTRS
7057_mm512_cvtsepi32_epi8 (__m512i __A)
7058{
7059 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7060 (__v16qi) _mm_undefined_si128 (),
7061 (__mmask16) -1);
7062}
7063
7064static __inline__ __m128i __DEFAULT_FN_ATTRS
7065_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7066{
7067 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7068 (__v16qi) __O, __M);
7069}
7070
7071static __inline__ __m128i __DEFAULT_FN_ATTRS
7072_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7073{
7074 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7075 (__v16qi) _mm_setzero_si128 (),
7076 __M);
7077}
7078
7079static __inline__ void __DEFAULT_FN_ATTRS
7080_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7081{
7082 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7083}
7084
7085static __inline__ __m256i __DEFAULT_FN_ATTRS
7086_mm512_cvtsepi32_epi16 (__m512i __A)
7087{
7088 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7089 (__v16hi) _mm256_undefined_si256 (),
7090 (__mmask16) -1);
7091}
7092
7093static __inline__ __m256i __DEFAULT_FN_ATTRS
7094_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7095{
7096 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7097 (__v16hi) __O, __M);
7098}
7099
7100static __inline__ __m256i __DEFAULT_FN_ATTRS
7101_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7102{
7103 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7104 (__v16hi) _mm256_setzero_si256 (),
7105 __M);
7106}
7107
7108static __inline__ void __DEFAULT_FN_ATTRS
7109_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7110{
7111 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7112}
7113
7114static __inline__ __m128i __DEFAULT_FN_ATTRS
7115_mm512_cvtsepi64_epi8 (__m512i __A)
7116{
7117 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7118 (__v16qi) _mm_undefined_si128 (),
7119 (__mmask8) -1);
7120}
7121
7122static __inline__ __m128i __DEFAULT_FN_ATTRS
7123_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7124{
7125 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7126 (__v16qi) __O, __M);
7127}
7128
7129static __inline__ __m128i __DEFAULT_FN_ATTRS
7130_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7131{
7132 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7133 (__v16qi) _mm_setzero_si128 (),
7134 __M);
7135}
7136
7137static __inline__ void __DEFAULT_FN_ATTRS
7138_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7139{
7140 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7141}
7142
7143static __inline__ __m256i __DEFAULT_FN_ATTRS
7144_mm512_cvtsepi64_epi32 (__m512i __A)
7145{
7146 __v8si __O;
7147 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7148 (__v8si) _mm256_undefined_si256 (),
7149 (__mmask8) -1);
7150}
7151
7152static __inline__ __m256i __DEFAULT_FN_ATTRS
7153_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7154{
7155 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7156 (__v8si) __O, __M);
7157}
7158
7159static __inline__ __m256i __DEFAULT_FN_ATTRS
7160_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7161{
7162 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7163 (__v8si) _mm256_setzero_si256 (),
7164 __M);
7165}
7166
7167static __inline__ void __DEFAULT_FN_ATTRS
7168_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7169{
7170 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7171}
7172
7173static __inline__ __m128i __DEFAULT_FN_ATTRS
7174_mm512_cvtsepi64_epi16 (__m512i __A)
7175{
7176 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7177 (__v8hi) _mm_undefined_si128 (),
7178 (__mmask8) -1);
7179}
7180
7181static __inline__ __m128i __DEFAULT_FN_ATTRS
7182_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7183{
7184 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7185 (__v8hi) __O, __M);
7186}
7187
7188static __inline__ __m128i __DEFAULT_FN_ATTRS
7189_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7190{
7191 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7192 (__v8hi) _mm_setzero_si128 (),
7193 __M);
7194}
7195
7196static __inline__ void __DEFAULT_FN_ATTRS
7197_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7198{
7199 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7200}
7201
Michael Zuckermand8715312016-04-14 06:48:09 +00007202static __inline__ __m128i __DEFAULT_FN_ATTRS
7203_mm512_cvtusepi32_epi8 (__m512i __A)
7204{
7205 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7206 (__v16qi) _mm_undefined_si128 (),
7207 (__mmask16) -1);
7208}
7209
7210static __inline__ __m128i __DEFAULT_FN_ATTRS
7211_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7212{
7213 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7214 (__v16qi) __O,
7215 __M);
7216}
7217
7218static __inline__ __m128i __DEFAULT_FN_ATTRS
7219_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7220{
7221 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7222 (__v16qi) _mm_setzero_si128 (),
7223 __M);
7224}
7225
7226static __inline__ void __DEFAULT_FN_ATTRS
7227_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7228{
7229 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7230}
7231
7232static __inline__ __m256i __DEFAULT_FN_ATTRS
7233_mm512_cvtusepi32_epi16 (__m512i __A)
7234{
7235 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7236 (__v16hi) _mm256_undefined_si256 (),
7237 (__mmask16) -1);
7238}
7239
7240static __inline__ __m256i __DEFAULT_FN_ATTRS
7241_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7242{
7243 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7244 (__v16hi) __O,
7245 __M);
7246}
7247
7248static __inline__ __m256i __DEFAULT_FN_ATTRS
7249_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7250{
7251 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7252 (__v16hi) _mm256_setzero_si256 (),
7253 __M);
7254}
7255
7256static __inline__ void __DEFAULT_FN_ATTRS
7257_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7258{
7259 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7260}
7261
7262static __inline__ __m128i __DEFAULT_FN_ATTRS
7263_mm512_cvtusepi64_epi8 (__m512i __A)
7264{
7265 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7266 (__v16qi) _mm_undefined_si128 (),
7267 (__mmask8) -1);
7268}
7269
7270static __inline__ __m128i __DEFAULT_FN_ATTRS
7271_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7272{
7273 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7274 (__v16qi) __O,
7275 __M);
7276}
7277
7278static __inline__ __m128i __DEFAULT_FN_ATTRS
7279_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7280{
7281 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7282 (__v16qi) _mm_setzero_si128 (),
7283 __M);
7284}
7285
7286static __inline__ void __DEFAULT_FN_ATTRS
7287_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7288{
7289 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7290}
7291
7292static __inline__ __m256i __DEFAULT_FN_ATTRS
7293_mm512_cvtusepi64_epi32 (__m512i __A)
7294{
7295 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7296 (__v8si) _mm256_undefined_si256 (),
7297 (__mmask8) -1);
7298}
7299
7300static __inline__ __m256i __DEFAULT_FN_ATTRS
7301_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7302{
7303 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7304 (__v8si) __O, __M);
7305}
7306
7307static __inline__ __m256i __DEFAULT_FN_ATTRS
7308_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7309{
7310 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7311 (__v8si) _mm256_setzero_si256 (),
7312 __M);
7313}
7314
7315static __inline__ void __DEFAULT_FN_ATTRS
7316_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7317{
7318 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7319}
7320
7321static __inline__ __m128i __DEFAULT_FN_ATTRS
7322_mm512_cvtusepi64_epi16 (__m512i __A)
7323{
7324 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7325 (__v8hi) _mm_undefined_si128 (),
7326 (__mmask8) -1);
7327}
7328
7329static __inline__ __m128i __DEFAULT_FN_ATTRS
7330_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7331{
7332 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7333 (__v8hi) __O, __M);
7334}
7335
7336static __inline__ __m128i __DEFAULT_FN_ATTRS
7337_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7338{
7339 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7340 (__v8hi) _mm_setzero_si128 (),
7341 __M);
7342}
7343
7344static __inline__ void __DEFAULT_FN_ATTRS
7345_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7346{
7347 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7348}
7349
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007350static __inline__ __m128i __DEFAULT_FN_ATTRS
7351_mm512_cvtepi32_epi8 (__m512i __A)
7352{
7353 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7354 (__v16qi) _mm_undefined_si128 (),
7355 (__mmask16) -1);
7356}
7357
7358static __inline__ __m128i __DEFAULT_FN_ATTRS
7359_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7360{
7361 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7362 (__v16qi) __O, __M);
7363}
7364
7365static __inline__ __m128i __DEFAULT_FN_ATTRS
7366_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7367{
7368 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7369 (__v16qi) _mm_setzero_si128 (),
7370 __M);
7371}
7372
7373static __inline__ void __DEFAULT_FN_ATTRS
7374_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7375{
7376 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7377}
7378
7379static __inline__ __m256i __DEFAULT_FN_ATTRS
7380_mm512_cvtepi32_epi16 (__m512i __A)
7381{
7382 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7383 (__v16hi) _mm256_undefined_si256 (),
7384 (__mmask16) -1);
7385}
7386
7387static __inline__ __m256i __DEFAULT_FN_ATTRS
7388_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7389{
7390 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7391 (__v16hi) __O, __M);
7392}
7393
7394static __inline__ __m256i __DEFAULT_FN_ATTRS
7395_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7396{
7397 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7398 (__v16hi) _mm256_setzero_si256 (),
7399 __M);
7400}
7401
7402static __inline__ void __DEFAULT_FN_ATTRS
7403_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7404{
7405 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7406}
7407
7408static __inline__ __m128i __DEFAULT_FN_ATTRS
7409_mm512_cvtepi64_epi8 (__m512i __A)
7410{
7411 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7412 (__v16qi) _mm_undefined_si128 (),
7413 (__mmask8) -1);
7414}
7415
7416static __inline__ __m128i __DEFAULT_FN_ATTRS
7417_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7418{
7419 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7420 (__v16qi) __O, __M);
7421}
7422
7423static __inline__ __m128i __DEFAULT_FN_ATTRS
7424_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7425{
7426 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7427 (__v16qi) _mm_setzero_si128 (),
7428 __M);
7429}
7430
7431static __inline__ void __DEFAULT_FN_ATTRS
7432_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7433{
7434 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7435}
7436
7437static __inline__ __m256i __DEFAULT_FN_ATTRS
7438_mm512_cvtepi64_epi32 (__m512i __A)
7439{
7440 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7441 (__v8si) _mm256_undefined_si256 (),
7442 (__mmask8) -1);
7443}
7444
7445static __inline__ __m256i __DEFAULT_FN_ATTRS
7446_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7447{
7448 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7449 (__v8si) __O, __M);
7450}
7451
7452static __inline__ __m256i __DEFAULT_FN_ATTRS
7453_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7454{
7455 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7456 (__v8si) _mm256_setzero_si256 (),
7457 __M);
7458}
7459
7460static __inline__ void __DEFAULT_FN_ATTRS
7461_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7462{
7463 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7464}
7465
7466static __inline__ __m128i __DEFAULT_FN_ATTRS
7467_mm512_cvtepi64_epi16 (__m512i __A)
7468{
7469 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7470 (__v8hi) _mm_undefined_si128 (),
7471 (__mmask8) -1);
7472}
7473
7474static __inline__ __m128i __DEFAULT_FN_ATTRS
7475_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7476{
7477 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7478 (__v8hi) __O, __M);
7479}
7480
7481static __inline__ __m128i __DEFAULT_FN_ATTRS
7482_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7483{
7484 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7485 (__v8hi) _mm_setzero_si128 (),
7486 __M);
7487}
7488
7489static __inline__ void __DEFAULT_FN_ATTRS
7490_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7491{
7492 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7493}
7494
Craig Topper8c18e112016-05-17 04:41:50 +00007495#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7496 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7497 (__v4si)_mm_undefined_si128(), \
7498 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007499
Craig Topper8c18e112016-05-17 04:41:50 +00007500#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7501 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7502 (__v4si)(__m128i)(W), \
7503 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007504
Craig Topper8c18e112016-05-17 04:41:50 +00007505#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7506 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7507 (__v4si)_mm_setzero_si128(), \
7508 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007509
Craig Topper8c18e112016-05-17 04:41:50 +00007510#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7511 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7512 (__v4di)_mm256_undefined_si256(), \
7513 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007514
Craig Topper8c18e112016-05-17 04:41:50 +00007515#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7516 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7517 (__v4di)(__m256i)(W), \
7518 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007519
Craig Topper8c18e112016-05-17 04:41:50 +00007520#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7521 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7522 (__v4di)_mm256_setzero_si256(), \
7523 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007524
Craig Topper8c18e112016-05-17 04:41:50 +00007525#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7526 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7527 (__v4df)(__m256d)(B), (int)(imm), \
7528 (__v8df)_mm512_undefined_pd(), \
7529 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007530
Craig Topper8c18e112016-05-17 04:41:50 +00007531#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7532 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7533 (__v4df)(__m256d)(B), (int)(imm), \
7534 (__v8df)(__m512d)(W), \
7535 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007536
Craig Topper8c18e112016-05-17 04:41:50 +00007537#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7538 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7539 (__v4df)(__m256d)(B), (int)(imm), \
7540 (__v8df)_mm512_setzero_pd(), \
7541 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007542
Craig Topper8c18e112016-05-17 04:41:50 +00007543#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7544 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7545 (__v4di)(__m256i)(B), (int)(imm), \
7546 (__v8di)_mm512_setzero_si512(), \
7547 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007548
Craig Topper8c18e112016-05-17 04:41:50 +00007549#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7550 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7551 (__v4di)(__m256i)(B), (int)(imm), \
7552 (__v8di)(__m512i)(W), \
7553 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007554
Craig Topper8c18e112016-05-17 04:41:50 +00007555#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7556 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7557 (__v4di)(__m256i)(B), (int)(imm), \
7558 (__v8di)_mm512_setzero_si512(), \
7559 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007560
Craig Topper8c18e112016-05-17 04:41:50 +00007561#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7562 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7563 (__v4sf)(__m128)(B), (int)(imm), \
7564 (__v16sf)_mm512_undefined_ps(), \
7565 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007566
Craig Topper8c18e112016-05-17 04:41:50 +00007567#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7568 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7569 (__v4sf)(__m128)(B), (int)(imm), \
7570 (__v16sf)(__m512)(W), \
7571 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007572
Craig Topper8c18e112016-05-17 04:41:50 +00007573#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7574 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7575 (__v4sf)(__m128)(B), (int)(imm), \
7576 (__v16sf)_mm512_setzero_ps(), \
7577 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007578
Craig Topper8c18e112016-05-17 04:41:50 +00007579#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7580 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7581 (__v4si)(__m128i)(B), (int)(imm), \
7582 (__v16si)_mm512_setzero_si512(), \
7583 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007584
Craig Topper8c18e112016-05-17 04:41:50 +00007585#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7586 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7587 (__v4si)(__m128i)(B), (int)(imm), \
7588 (__v16si)(__m512i)(W), \
7589 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007590
Craig Topper8c18e112016-05-17 04:41:50 +00007591#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7592 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7593 (__v4si)(__m128i)(B), (int)(imm), \
7594 (__v16si)_mm512_setzero_si512(), \
7595 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007596
Craig Topper8c18e112016-05-17 04:41:50 +00007597#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7598 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7599 (int)(((C)<<2) | (B)), \
7600 (__v8df)_mm512_undefined_pd(), \
7601 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007602
Craig Topper8c18e112016-05-17 04:41:50 +00007603#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7604 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7605 (int)(((C)<<2) | (B)), \
7606 (__v8df)(__m512d)(W), \
7607 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007608
Craig Topper8c18e112016-05-17 04:41:50 +00007609#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7610 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7611 (int)(((C)<<2) | (B)), \
7612 (__v8df)_mm512_setzero_pd(), \
7613 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007614
Craig Topper8c18e112016-05-17 04:41:50 +00007615#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7616 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7617 (int)(((C)<<2) | (B)), \
7618 (__v8df)_mm512_setzero_pd(), \
7619 (__mmask8)-1, \
7620 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007621
Craig Topper8c18e112016-05-17 04:41:50 +00007622#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7623 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7624 (int)(((C)<<2) | (B)), \
7625 (__v8df)(__m512d)(W), \
7626 (__mmask8)(U), \
7627 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007628
Craig Topper8c18e112016-05-17 04:41:50 +00007629#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7630 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7631 (int)(((C)<<2) | (B)), \
7632 (__v8df)_mm512_setzero_pd(), \
7633 (__mmask8)(U), \
7634 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007635
Craig Topper8c18e112016-05-17 04:41:50 +00007636#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7637 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7638 (int)(((C)<<2) | (B)), \
7639 (__v16sf)_mm512_undefined_ps(), \
7640 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007641
Craig Topper8c18e112016-05-17 04:41:50 +00007642#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7643 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7644 (int)(((C)<<2) | (B)), \
7645 (__v16sf)(__m512)(W), \
7646 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007647
Craig Topper8c18e112016-05-17 04:41:50 +00007648#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7649 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7650 (int)(((C)<<2) | (B)), \
7651 (__v16sf)_mm512_setzero_ps(), \
7652 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007653
Craig Topper8c18e112016-05-17 04:41:50 +00007654#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7655 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7656 (int)(((C)<<2)|(B)), \
7657 (__v16sf)_mm512_undefined_ps(), \
7658 (__mmask16)-1, \
7659 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007660
Craig Topper8c18e112016-05-17 04:41:50 +00007661#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7662 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7663 (int)(((C)<<2)|(B)), \
7664 (__v16sf)(__m512)(W), \
7665 (__mmask16)(U), \
7666 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007667
Craig Topper8c18e112016-05-17 04:41:50 +00007668#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7669 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7670 (int)(((C)<<2)|(B)), \
7671 (__v16sf)_mm512_setzero_ps(), \
7672 (__mmask16)(U), \
7673 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007674
Craig Topper8c18e112016-05-17 04:41:50 +00007675#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7676 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7677 (__v8df)_mm512_undefined_pd(), \
7678 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007679
Craig Topper8c18e112016-05-17 04:41:50 +00007680#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7681 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7682 (__v8df)(__m512d)(W), \
7683 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007684
Craig Topper8c18e112016-05-17 04:41:50 +00007685#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7686 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7687 (__v8df)_mm512_setzero_pd(), \
7688 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007689
7690static __inline__ __m512d __DEFAULT_FN_ATTRS
7691_mm512_getexp_pd (__m512d __A)
7692{
7693 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7694 (__v8df) _mm512_undefined_pd (),
7695 (__mmask8) -1,
7696 _MM_FROUND_CUR_DIRECTION);
7697}
7698
7699static __inline__ __m512d __DEFAULT_FN_ATTRS
7700_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7701{
7702 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7703 (__v8df) __W,
7704 (__mmask8) __U,
7705 _MM_FROUND_CUR_DIRECTION);
7706}
7707
7708static __inline__ __m512d __DEFAULT_FN_ATTRS
7709_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7710{
7711 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7712 (__v8df) _mm512_setzero_pd (),
7713 (__mmask8) __U,
7714 _MM_FROUND_CUR_DIRECTION);
7715}
7716
Craig Topper8c18e112016-05-17 04:41:50 +00007717#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7718 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7719 (__v16sf)_mm512_undefined_ps(), \
7720 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007721
Craig Topper8c18e112016-05-17 04:41:50 +00007722#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7723 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7724 (__v16sf)(__m512)(W), \
7725 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007726
Craig Topper8c18e112016-05-17 04:41:50 +00007727#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7728 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7729 (__v16sf)_mm512_setzero_ps(), \
7730 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007731
7732static __inline__ __m512 __DEFAULT_FN_ATTRS
7733_mm512_getexp_ps (__m512 __A)
7734{
7735 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7736 (__v16sf) _mm512_undefined_ps (),
7737 (__mmask16) -1,
7738 _MM_FROUND_CUR_DIRECTION);
7739}
7740
7741static __inline__ __m512 __DEFAULT_FN_ATTRS
7742_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7743{
7744 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7745 (__v16sf) __W,
7746 (__mmask16) __U,
7747 _MM_FROUND_CUR_DIRECTION);
7748}
7749
7750static __inline__ __m512 __DEFAULT_FN_ATTRS
7751_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7752{
7753 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7754 (__v16sf) _mm512_setzero_ps (),
7755 (__mmask16) __U,
7756 _MM_FROUND_CUR_DIRECTION);
7757}
7758
Craig Topper8c18e112016-05-17 04:41:50 +00007759#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7760 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7761 (float const *)(addr), \
7762 (__v8di)(__m512i)(index), (__mmask8)-1, \
7763 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007764
7765#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7766 __addr, __scale) __extension__({\
7767__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7768 __addr,(__v8di) __index, __mask, __scale);\
7769})
7770
Craig Topper8c18e112016-05-17 04:41:50 +00007771#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7772 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7773 (int const *)(addr), \
7774 (__v8di)(__m512i)(index), \
7775 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007776
Craig Topper8c18e112016-05-17 04:41:50 +00007777#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7778 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7779 (int const *)(addr), \
7780 (__v8di)(__m512i)(index), \
7781 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007782
Craig Topper8c18e112016-05-17 04:41:50 +00007783#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7784 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7785 (double const *)(addr), \
7786 (__v8di)(__m512i)(index), (__mmask8)-1, \
7787 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007788
Craig Topper8c18e112016-05-17 04:41:50 +00007789#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7790 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7791 (double const *)(addr), \
7792 (__v8di)(__m512i)(index), \
7793 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007794
Craig Topper8c18e112016-05-17 04:41:50 +00007795#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7796 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7797 (long long const *)(addr), \
7798 (__v8di)(__m512i)(index), (__mmask8)-1, \
7799 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007800
Craig Topper8c18e112016-05-17 04:41:50 +00007801#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7802 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7803 (long long const *)(addr), \
7804 (__v8di)(__m512i)(index), \
7805 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007806
Craig Topper8c18e112016-05-17 04:41:50 +00007807#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7808 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7809 (float const *)(addr), \
7810 (__v16sf)(__m512)(index), \
7811 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007812
Craig Topper8c18e112016-05-17 04:41:50 +00007813#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7814 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7815 (float const *)(addr), \
7816 (__v16sf)(__m512)(index), \
7817 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007818
Craig Topper8c18e112016-05-17 04:41:50 +00007819#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7820 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7821 (int const *)(addr), \
7822 (__v16si)(__m512i)(index), \
7823 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007824
Craig Topper8c18e112016-05-17 04:41:50 +00007825#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7826 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
7827 (int const *)(addr), \
7828 (__v16si)(__m512i)(index), \
7829 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007830
Craig Topper8c18e112016-05-17 04:41:50 +00007831#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
7832 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
7833 (double const *)(addr), \
7834 (__v8si)(__m256i)(index), (__mmask8)-1, \
7835 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007836
Craig Topper8c18e112016-05-17 04:41:50 +00007837#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7838 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
7839 (double const *)(addr), \
7840 (__v8si)(__m256i)(index), \
7841 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007842
Craig Topper8c18e112016-05-17 04:41:50 +00007843#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
7844 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
7845 (long long const *)(addr), \
7846 (__v8si)(__m256i)(index), (__mmask8)-1, \
7847 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007848
Craig Topper8c18e112016-05-17 04:41:50 +00007849#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7850 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
7851 (long long const *)(addr), \
7852 (__v8si)(__m256i)(index), \
7853 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007854
Craig Topper8c18e112016-05-17 04:41:50 +00007855#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
7856 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
7857 (__v8di)(__m512i)(index), \
7858 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007859
Craig Topper8c18e112016-05-17 04:41:50 +00007860#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7861 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
7862 (__v8di)(__m512i)(index), \
7863 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007864
Craig Topper8c18e112016-05-17 04:41:50 +00007865#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
7866 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
7867 (__v8di)(__m512i)(index), \
7868 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007869
Craig Topper8c18e112016-05-17 04:41:50 +00007870#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7871 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
7872 (__v8di)(__m512i)(index), \
7873 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007874
Craig Topper8c18e112016-05-17 04:41:50 +00007875#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
7876 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
7877 (__v8di)(__m512i)(index), \
7878 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007879
Craig Topper8c18e112016-05-17 04:41:50 +00007880#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7881 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
7882 (__v8di)(__m512i)(index), \
7883 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007884
Craig Topper8c18e112016-05-17 04:41:50 +00007885#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
7886 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
7887 (__v8di)(__m512i)(index), \
7888 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007889
Craig Topper8c18e112016-05-17 04:41:50 +00007890#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7891 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
7892 (__v8di)(__m512i)(index), \
7893 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007894
Craig Topper8c18e112016-05-17 04:41:50 +00007895#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
7896 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
7897 (__v16si)(__m512i)(index), \
7898 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007899
Craig Topper8c18e112016-05-17 04:41:50 +00007900#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7901 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
7902 (__v16si)(__m512i)(index), \
7903 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007904
Craig Topper8c18e112016-05-17 04:41:50 +00007905#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
7906 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
7907 (__v16si)(__m512i)(index), \
7908 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007909
Craig Topper8c18e112016-05-17 04:41:50 +00007910#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7911 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
7912 (__v16si)(__m512i)(index), \
7913 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007914
Craig Topper8c18e112016-05-17 04:41:50 +00007915#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
7916 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
7917 (__v8si)(__m256i)(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_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7921 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
7922 (__v8si)(__m256i)(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_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
7926 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
7927 (__v8si)(__m256i)(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_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7931 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
7932 (__v8si)(__m256i)(index), \
7933 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007934
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007935static __inline__ __m128 __DEFAULT_FN_ATTRS
7936_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7937{
7938 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7939 (__v4sf) __B,
7940 (__v4sf) __W,
7941 (__mmask8) __U,
7942 _MM_FROUND_CUR_DIRECTION);
7943}
7944
Craig Topper8c18e112016-05-17 04:41:50 +00007945#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
7946 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7947 (__v4sf)(__m128)(B), \
7948 (__v4sf)(__m128)(W), (__mmask8)(U), \
7949 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007950
7951static __inline__ __m128 __DEFAULT_FN_ATTRS
7952_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7953{
7954 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7955 (__v4sf) __B,
7956 (__v4sf) __C,
7957 (__mmask8) __U,
7958 _MM_FROUND_CUR_DIRECTION);
7959}
7960
Craig Topper8c18e112016-05-17 04:41:50 +00007961#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
7962 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
7963 (__v4sf)(__m128)(B), \
7964 (__v4sf)(__m128)(C), (__mmask8)(U), \
7965 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007966
7967static __inline__ __m128 __DEFAULT_FN_ATTRS
7968_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7969{
7970 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7971 (__v4sf) __X,
7972 (__v4sf) __Y,
7973 (__mmask8) __U,
7974 _MM_FROUND_CUR_DIRECTION);
7975}
7976
Craig Topper8c18e112016-05-17 04:41:50 +00007977#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
7978 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
7979 (__v4sf)(__m128)(X), \
7980 (__v4sf)(__m128)(Y), (__mmask8)(U), \
7981 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007982
7983static __inline__ __m128 __DEFAULT_FN_ATTRS
7984_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7985{
7986 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00007987 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007988 (__v4sf) __W,
7989 (__mmask8) __U,
7990 _MM_FROUND_CUR_DIRECTION);
7991}
7992
Craig Topper8c18e112016-05-17 04:41:50 +00007993#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
7994 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7995 -(__v4sf)(__m128)(B), \
7996 (__v4sf)(__m128)(W), (__mmask8)(U), \
7997 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007998
7999static __inline__ __m128 __DEFAULT_FN_ATTRS
8000_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8001{
8002 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8003 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008004 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008005 (__mmask8) __U,
8006 _MM_FROUND_CUR_DIRECTION);
8007}
8008
Craig Topper8c18e112016-05-17 04:41:50 +00008009#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8010 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8011 (__v4sf)(__m128)(B), \
8012 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8013 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008014
8015static __inline__ __m128 __DEFAULT_FN_ATTRS
8016_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8017{
8018 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8019 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008020 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008021 (__mmask8) __U,
8022 _MM_FROUND_CUR_DIRECTION);
8023}
8024
Craig Topper8c18e112016-05-17 04:41:50 +00008025#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8026 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8027 (__v4sf)(__m128)(X), \
8028 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8029 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008030
8031static __inline__ __m128 __DEFAULT_FN_ATTRS
8032_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8033{
Craig Topper9864c592016-05-15 20:10:03 +00008034 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008035 (__v4sf) __B,
8036 (__v4sf) __W,
8037 (__mmask8) __U,
8038 _MM_FROUND_CUR_DIRECTION);
8039}
8040
Craig Topper8c18e112016-05-17 04:41:50 +00008041#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8042 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8043 (__v4sf)(__m128)(B), \
8044 (__v4sf)(__m128)(W), (__mmask8)(U), \
8045 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008046
8047static __inline__ __m128 __DEFAULT_FN_ATTRS
8048_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8049{
Craig Topper9864c592016-05-15 20:10:03 +00008050 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008051 (__v4sf) __B,
8052 (__v4sf) __C,
8053 (__mmask8) __U,
8054 _MM_FROUND_CUR_DIRECTION);
8055}
8056
Craig Topper8c18e112016-05-17 04:41:50 +00008057#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8058 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8059 (__v4sf)(__m128)(B), \
8060 (__v4sf)(__m128)(C), (__mmask8)(U), \
8061 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008062
8063static __inline__ __m128 __DEFAULT_FN_ATTRS
8064_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8065{
Craig Topper9864c592016-05-15 20:10:03 +00008066 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008067 (__v4sf) __X,
8068 (__v4sf) __Y,
8069 (__mmask8) __U,
8070 _MM_FROUND_CUR_DIRECTION);
8071}
8072
Craig Topper8c18e112016-05-17 04:41:50 +00008073#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8074 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8075 (__v4sf)(__m128)(X), \
8076 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8077 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008078
8079static __inline__ __m128 __DEFAULT_FN_ATTRS
8080_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8081{
Craig Topper9864c592016-05-15 20:10:03 +00008082 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8083 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008084 (__v4sf) __W,
8085 (__mmask8) __U,
8086 _MM_FROUND_CUR_DIRECTION);
8087}
8088
Craig Topper8c18e112016-05-17 04:41:50 +00008089#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8090 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8091 -(__v4sf)(__m128)(B), \
8092 (__v4sf)(__m128)(W), (__mmask8)(U), \
8093 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008094
8095static __inline__ __m128 __DEFAULT_FN_ATTRS
8096_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8097{
Craig Topper9864c592016-05-15 20:10:03 +00008098 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008099 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008100 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008101 (__mmask8) __U,
8102 _MM_FROUND_CUR_DIRECTION);
8103}
8104
Craig Topper8c18e112016-05-17 04:41:50 +00008105#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8106 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8107 (__v4sf)(__m128)(B), \
8108 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8109 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008110
8111static __inline__ __m128 __DEFAULT_FN_ATTRS
8112_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8113{
Craig Topper9864c592016-05-15 20:10:03 +00008114 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008115 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008116 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008117 (__mmask8) __U,
8118 _MM_FROUND_CUR_DIRECTION);
8119}
8120
Craig Topper8c18e112016-05-17 04:41:50 +00008121#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8122 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8123 (__v4sf)(__m128)(X), \
8124 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8125 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008126
Craig Topper58187d32016-05-17 04:41:29 +00008127static __inline__ __m128d __DEFAULT_FN_ATTRS
8128_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008129{
Craig Topper58187d32016-05-17 04:41:29 +00008130 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008131 (__v2df) __B,
8132 (__v2df) __W,
8133 (__mmask8) __U,
8134 _MM_FROUND_CUR_DIRECTION);
8135}
8136
Craig Topper8c18e112016-05-17 04:41:50 +00008137#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8138 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8139 (__v2df)(__m128d)(B), \
8140 (__v2df)(__m128d)(W), (__mmask8)(U), \
8141 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008142
Craig Topper58187d32016-05-17 04:41:29 +00008143static __inline__ __m128d __DEFAULT_FN_ATTRS
8144_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008145{
Craig Topper58187d32016-05-17 04:41:29 +00008146 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008147 (__v2df) __B,
8148 (__v2df) __C,
8149 (__mmask8) __U,
8150 _MM_FROUND_CUR_DIRECTION);
8151}
8152
Craig Topper8c18e112016-05-17 04:41:50 +00008153#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8154 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8155 (__v2df)(__m128d)(B), \
8156 (__v2df)(__m128d)(C), (__mmask8)(U), \
8157 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008158
Craig Topper58187d32016-05-17 04:41:29 +00008159static __inline__ __m128d __DEFAULT_FN_ATTRS
8160_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008161{
Craig Topper58187d32016-05-17 04:41:29 +00008162 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008163 (__v2df) __X,
8164 (__v2df) __Y,
8165 (__mmask8) __U,
8166 _MM_FROUND_CUR_DIRECTION);
8167}
8168
Craig Topper8c18e112016-05-17 04:41:50 +00008169#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8170 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8171 (__v2df)(__m128d)(X), \
8172 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8173 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008174
Craig Topper58187d32016-05-17 04:41:29 +00008175static __inline__ __m128d __DEFAULT_FN_ATTRS
8176_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008177{
Craig Topper58187d32016-05-17 04:41:29 +00008178 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008179 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008180 (__v2df) __W,
8181 (__mmask8) __U,
8182 _MM_FROUND_CUR_DIRECTION);
8183}
8184
Craig Topper8c18e112016-05-17 04:41:50 +00008185#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8186 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8187 -(__v2df)(__m128d)(B), \
8188 (__v2df)(__m128d)(W), (__mmask8)(U), \
8189 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008190
Craig Topper58187d32016-05-17 04:41:29 +00008191static __inline__ __m128d __DEFAULT_FN_ATTRS
8192_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008193{
Craig Topper58187d32016-05-17 04:41:29 +00008194 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008195 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008196 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008197 (__mmask8) __U,
8198 _MM_FROUND_CUR_DIRECTION);
8199}
8200
Craig Topper8c18e112016-05-17 04:41:50 +00008201#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8202 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8203 (__v2df)(__m128d)(B), \
8204 -(__v2df)(__m128d)(C), \
8205 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008206
Craig Topper58187d32016-05-17 04:41:29 +00008207static __inline__ __m128d __DEFAULT_FN_ATTRS
8208_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008209{
Craig Topper58187d32016-05-17 04:41:29 +00008210 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008211 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008212 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008213 (__mmask8) __U,
8214 _MM_FROUND_CUR_DIRECTION);
8215}
8216
Craig Topper8c18e112016-05-17 04:41:50 +00008217#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8218 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8219 (__v2df)(__m128d)(X), \
8220 -(__v2df)(__m128d)(Y), \
8221 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008222
Craig Topper58187d32016-05-17 04:41:29 +00008223static __inline__ __m128d __DEFAULT_FN_ATTRS
8224_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008225{
Craig Topper58187d32016-05-17 04:41:29 +00008226 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008227 (__v2df) __B,
8228 (__v2df) __W,
8229 (__mmask8) __U,
8230 _MM_FROUND_CUR_DIRECTION);
8231}
8232
Craig Topper8c18e112016-05-17 04:41:50 +00008233#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8234 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8235 (__v2df)(__m128d)(B), \
8236 (__v2df)(__m128d)(W), (__mmask8)(U), \
8237 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008238
Craig Topper58187d32016-05-17 04:41:29 +00008239static __inline__ __m128d __DEFAULT_FN_ATTRS
8240_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008241{
Craig Topper58187d32016-05-17 04:41:29 +00008242 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008243 (__v2df) __B,
8244 (__v2df) __C,
8245 (__mmask8) __U,
8246 _MM_FROUND_CUR_DIRECTION);
8247}
8248
Craig Topper8c18e112016-05-17 04:41:50 +00008249#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8250 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8251 (__v2df)(__m128d)(B), \
8252 (__v2df)(__m128d)(C), (__mmask8)(U), \
8253 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008254
Craig Topper58187d32016-05-17 04:41:29 +00008255static __inline__ __m128d __DEFAULT_FN_ATTRS
8256_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008257{
Craig Topper58187d32016-05-17 04:41:29 +00008258 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008259 (__v2df) __X,
8260 (__v2df) __Y,
8261 (__mmask8) __U,
8262 _MM_FROUND_CUR_DIRECTION);
8263}
8264
Craig Topper8c18e112016-05-17 04:41:50 +00008265#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8266 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8267 (__v2df)(__m128d)(X), \
8268 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8269 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008270
Craig Topper58187d32016-05-17 04:41:29 +00008271static __inline__ __m128d __DEFAULT_FN_ATTRS
8272_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008273{
Craig Topper58187d32016-05-17 04:41:29 +00008274 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008275 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008276 (__v2df) __W,
8277 (__mmask8) __U,
8278 _MM_FROUND_CUR_DIRECTION);
8279}
8280
Craig Topper8c18e112016-05-17 04:41:50 +00008281#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8282 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8283 -(__v2df)(__m128d)(B), \
8284 (__v2df)(__m128d)(W), (__mmask8)(U), \
8285 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008286
Craig Topper58187d32016-05-17 04:41:29 +00008287static __inline__ __m128d __DEFAULT_FN_ATTRS
8288_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008289{
Craig Topper58187d32016-05-17 04:41:29 +00008290 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008291 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008292 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008293 (__mmask8) __U,
8294 _MM_FROUND_CUR_DIRECTION);
8295}
8296
Craig Topper8c18e112016-05-17 04:41:50 +00008297#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8298 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8299 (__v2df)(__m128d)(B), \
8300 -(__v2df)(__m128d)(C), \
8301 (__mmask8)(U), \
8302 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008303
Craig Topper58187d32016-05-17 04:41:29 +00008304static __inline__ __m128d __DEFAULT_FN_ATTRS
8305_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008306{
Craig Topper58187d32016-05-17 04:41:29 +00008307 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008308 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008309 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008310 (__mmask8) __U,
8311 _MM_FROUND_CUR_DIRECTION);
8312}
8313
Craig Topper8c18e112016-05-17 04:41:50 +00008314#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8315 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8316 (__v2df)(__m128d)(X), \
8317 -(__v2df)(__m128d)(Y), \
8318 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008319
Craig Topper8c18e112016-05-17 04:41:50 +00008320#define _mm512_permutex_pd(X, M) __extension__ ({ \
8321 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8322 (__v8df)_mm512_undefined_pd(), \
8323 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008324
Craig Topper8c18e112016-05-17 04:41:50 +00008325#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8326 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8327 (__v8df)(__m512d)(W), \
8328 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008329
Craig Topper8c18e112016-05-17 04:41:50 +00008330#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8331 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8332 (__v8df)_mm512_setzero_pd(), \
8333 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008334
Craig Topper8c18e112016-05-17 04:41:50 +00008335#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8336 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8337 (__v8di)_mm512_undefined_epi32(), \
8338 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008339
Craig Topper8c18e112016-05-17 04:41:50 +00008340#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8341 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8342 (__v8di)(__m512i)(W), \
8343 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008344
Craig Topper8c18e112016-05-17 04:41:50 +00008345#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8346 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8347 (__v8di)_mm512_setzero_si512(), \
8348 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008349
8350static __inline__ __m512d __DEFAULT_FN_ATTRS
8351_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8352{
8353 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8354 (__v8di) __X,
8355 (__v8df) _mm512_undefined_pd (),
8356 (__mmask8) -1);
8357}
8358
8359static __inline__ __m512d __DEFAULT_FN_ATTRS
8360_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8361{
8362 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8363 (__v8di) __X,
8364 (__v8df) __W,
8365 (__mmask8) __U);
8366}
8367
8368static __inline__ __m512d __DEFAULT_FN_ATTRS
8369_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8370{
8371 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8372 (__v8di) __X,
8373 (__v8df) _mm512_setzero_pd (),
8374 (__mmask8) __U);
8375}
8376
8377static __inline__ __m512i __DEFAULT_FN_ATTRS
8378_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8379{
8380 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8381 (__v8di) __X,
8382 (__v8di) _mm512_setzero_si512 (),
8383 __M);
8384}
8385
8386static __inline__ __m512i __DEFAULT_FN_ATTRS
8387_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8388{
8389 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8390 (__v8di) __X,
8391 (__v8di) _mm512_undefined_epi32 (),
8392 (__mmask8) -1);
8393}
8394
8395static __inline__ __m512i __DEFAULT_FN_ATTRS
8396_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8397 __m512i __Y)
8398{
8399 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8400 (__v8di) __X,
8401 (__v8di) __W,
8402 __M);
8403}
8404
8405static __inline__ __m512 __DEFAULT_FN_ATTRS
8406_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8407{
8408 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8409 (__v16si) __X,
8410 (__v16sf) _mm512_undefined_ps (),
8411 (__mmask16) -1);
8412}
8413
8414static __inline__ __m512 __DEFAULT_FN_ATTRS
8415_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8416{
8417 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8418 (__v16si) __X,
8419 (__v16sf) __W,
8420 (__mmask16) __U);
8421}
8422
8423static __inline__ __m512 __DEFAULT_FN_ATTRS
8424_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8425{
8426 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8427 (__v16si) __X,
8428 (__v16sf) _mm512_setzero_ps (),
8429 (__mmask16) __U);
8430}
8431
8432static __inline__ __m512i __DEFAULT_FN_ATTRS
8433_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8434{
8435 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8436 (__v16si) __X,
8437 (__v16si) _mm512_setzero_si512 (),
8438 __M);
8439}
8440
8441static __inline__ __m512i __DEFAULT_FN_ATTRS
8442_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8443{
8444 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8445 (__v16si) __X,
8446 (__v16si) _mm512_undefined_epi32 (),
8447 (__mmask16) -1);
8448}
8449
8450static __inline__ __m512i __DEFAULT_FN_ATTRS
8451_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8452 __m512i __Y)
8453{
8454 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8455 (__v16si) __X,
8456 (__v16si) __W,
8457 __M);
8458}
8459
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008460static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8461_mm512_kand (__mmask16 __A, __mmask16 __B)
8462{
8463 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8464}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008465
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008466static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8467_mm512_kandn (__mmask16 __A, __mmask16 __B)
8468{
8469 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8470}
8471
8472static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8473_mm512_kor (__mmask16 __A, __mmask16 __B)
8474{
8475 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8476}
8477
8478static __inline__ int __DEFAULT_FN_ATTRS
8479_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8480{
Craig Topper91f23d92016-05-16 01:09:16 +00008481 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008482}
8483
8484static __inline__ int __DEFAULT_FN_ATTRS
8485_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8486{
Craig Topper91f23d92016-05-16 01:09:16 +00008487 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008488}
8489
8490static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8491_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8492{
8493 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8494}
8495
8496static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8497_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8498{
8499 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8500}
8501
8502static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8503_mm512_kxor (__mmask16 __A, __mmask16 __B)
8504{
8505 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8506}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008507
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008508static __inline__ void __DEFAULT_FN_ATTRS
8509_mm512_stream_si512 (__m512i * __P, __m512i __A)
8510{
8511 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8512}
8513
8514static __inline__ __m512i __DEFAULT_FN_ATTRS
8515_mm512_stream_load_si512 (void *__P)
8516{
8517 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8518}
8519
8520static __inline__ void __DEFAULT_FN_ATTRS
8521_mm512_stream_pd (double *__P, __m512d __A)
8522{
8523 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8524}
8525
8526static __inline__ void __DEFAULT_FN_ATTRS
8527_mm512_stream_ps (float *__P, __m512 __A)
8528{
8529 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8530}
8531
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008532static __inline__ __m512d __DEFAULT_FN_ATTRS
8533_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8534{
8535 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8536 (__v8df) __W,
8537 (__mmask8) __U);
8538}
8539
8540static __inline__ __m512d __DEFAULT_FN_ATTRS
8541_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8542{
8543 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8544 (__v8df)
8545 _mm512_setzero_pd (),
8546 (__mmask8) __U);
8547}
8548
8549static __inline__ __m512i __DEFAULT_FN_ATTRS
8550_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8551{
8552 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8553 (__v8di) __W,
8554 (__mmask8) __U);
8555}
8556
8557static __inline__ __m512i __DEFAULT_FN_ATTRS
8558_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8559{
8560 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8561 (__v8di)
8562 _mm512_setzero_si512 (),
8563 (__mmask8) __U);
8564}
8565
8566static __inline__ __m512 __DEFAULT_FN_ATTRS
8567_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8568{
8569 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8570 (__v16sf) __W,
8571 (__mmask16) __U);
8572}
8573
8574static __inline__ __m512 __DEFAULT_FN_ATTRS
8575_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8576{
8577 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8578 (__v16sf)
8579 _mm512_setzero_ps (),
8580 (__mmask16) __U);
8581}
8582
8583static __inline__ __m512i __DEFAULT_FN_ATTRS
8584_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8585{
8586 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8587 (__v16si) __W,
8588 (__mmask16) __U);
8589}
8590
8591static __inline__ __m512i __DEFAULT_FN_ATTRS
8592_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8593{
8594 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8595 (__v16si)
8596 _mm512_setzero_si512 (),
8597 (__mmask16) __U);
8598}
8599
Craig Topper8c18e112016-05-17 04:41:50 +00008600#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8601 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8602 (__v4sf)(__m128)(Y), (int)(P), \
8603 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008604
Craig Topper8c18e112016-05-17 04:41:50 +00008605#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8606 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8607 (__v4sf)(__m128)(Y), (int)(P), \
8608 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008609
Craig Topper8c18e112016-05-17 04:41:50 +00008610#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8611 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8612 (__v4sf)(__m128)(Y), (int)(P), \
8613 (__mmask8)-1, \
8614 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008615
Craig Topper8c18e112016-05-17 04:41:50 +00008616#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8617 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8618 (__v4sf)(__m128)(Y), (int)(P), \
8619 (__mmask8)(M), \
8620 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008621
Craig Topper8c18e112016-05-17 04:41:50 +00008622#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8623 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8624 (__v2df)(__m128d)(Y), (int)(P), \
8625 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008626
Craig Topper8c18e112016-05-17 04:41:50 +00008627#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8628 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8629 (__v2df)(__m128d)(Y), (int)(P), \
8630 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008631
Craig Topper8c18e112016-05-17 04:41:50 +00008632#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8633 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8634 (__v2df)(__m128d)(Y), (int)(P), \
8635 (__mmask8)-1, \
8636 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008637
Craig Topper8c18e112016-05-17 04:41:50 +00008638#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8639 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8640 (__v2df)(__m128d)(Y), (int)(P), \
8641 (__mmask8)(M), \
8642 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008643
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008644static __inline__ __m512 __DEFAULT_FN_ATTRS
8645_mm512_movehdup_ps (__m512 __A)
8646{
8647 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8648 (__v16sf)
8649 _mm512_undefined_ps (),
8650 (__mmask16) -1);
8651}
8652
8653static __inline__ __m512 __DEFAULT_FN_ATTRS
8654_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8655{
8656 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8657 (__v16sf) __W,
8658 (__mmask16) __U);
8659}
8660
8661static __inline__ __m512 __DEFAULT_FN_ATTRS
8662_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8663{
8664 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8665 (__v16sf)
8666 _mm512_setzero_ps (),
8667 (__mmask16) __U);
8668}
8669
8670static __inline__ __m512 __DEFAULT_FN_ATTRS
8671_mm512_moveldup_ps (__m512 __A)
8672{
8673 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8674 (__v16sf)
8675 _mm512_undefined_ps (),
8676 (__mmask16) -1);
8677}
8678
8679static __inline__ __m512 __DEFAULT_FN_ATTRS
8680_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8681{
8682 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8683 (__v16sf) __W,
8684 (__mmask16) __U);
8685}
8686
8687static __inline__ __m512 __DEFAULT_FN_ATTRS
8688_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8689{
8690 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8691 (__v16sf)
8692 _mm512_setzero_ps (),
8693 (__mmask16) __U);
8694}
8695
Craig Topper8c18e112016-05-17 04:41:50 +00008696#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8697 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8698 (__v16si)_mm512_undefined_epi32(), \
8699 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008700
Craig Topper8c18e112016-05-17 04:41:50 +00008701#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8702 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8703 (__v16si)(__m512i)(W), \
8704 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008705
Craig Topper8c18e112016-05-17 04:41:50 +00008706#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8707 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8708 (__v16si)_mm512_setzero_si512(), \
8709 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008710
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008711static __inline__ __m512d __DEFAULT_FN_ATTRS
8712_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8713{
8714 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8715 (__v8df) __W,
8716 (__mmask8) __U);
8717}
8718
8719static __inline__ __m512d __DEFAULT_FN_ATTRS
8720_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8721{
8722 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8723 (__v8df) _mm512_setzero_pd (),
8724 (__mmask8) __U);
8725}
8726
8727static __inline__ __m512i __DEFAULT_FN_ATTRS
8728_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8729{
8730 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8731 (__v8di) __W,
8732 (__mmask8) __U);
8733}
8734
8735static __inline__ __m512i __DEFAULT_FN_ATTRS
8736_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8737{
8738 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8739 (__v8di) _mm512_setzero_pd (),
8740 (__mmask8) __U);
8741}
8742
8743static __inline__ __m512d __DEFAULT_FN_ATTRS
8744_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8745{
8746 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8747 (__v8df) __W,
8748 (__mmask8) __U);
8749}
8750
8751static __inline__ __m512d __DEFAULT_FN_ATTRS
8752_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8753{
8754 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8755 (__v8df) _mm512_setzero_pd(),
8756 (__mmask8) __U);
8757}
8758
8759static __inline__ __m512i __DEFAULT_FN_ATTRS
8760_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8761{
8762 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8763 (__v8di) __W,
8764 (__mmask8) __U);
8765}
8766
8767static __inline__ __m512i __DEFAULT_FN_ATTRS
8768_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8769{
8770 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8771 (__v8di) _mm512_setzero_pd(),
8772 (__mmask8) __U);
8773}
8774
8775static __inline__ __m512 __DEFAULT_FN_ATTRS
8776_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8777{
8778 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8779 (__v16sf) __W,
8780 (__mmask16) __U);
8781}
8782
8783static __inline__ __m512 __DEFAULT_FN_ATTRS
8784_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8785{
8786 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8787 (__v16sf) _mm512_setzero_ps(),
8788 (__mmask16) __U);
8789}
8790
8791static __inline__ __m512i __DEFAULT_FN_ATTRS
8792_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8793{
8794 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8795 (__v16si) __W,
8796 (__mmask16) __U);
8797}
8798
8799static __inline__ __m512i __DEFAULT_FN_ATTRS
8800_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8801{
8802 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8803 (__v16si) _mm512_setzero_ps(),
8804 (__mmask16) __U);
8805}
8806
8807static __inline__ __m512 __DEFAULT_FN_ATTRS
8808_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8809{
8810 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8811 (__v16sf) __W,
8812 (__mmask16) __U);
8813}
8814
8815static __inline__ __m512 __DEFAULT_FN_ATTRS
8816_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8817{
8818 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8819 (__v16sf) _mm512_setzero_ps(),
8820 (__mmask16) __U);
8821}
8822
8823static __inline__ __m512i __DEFAULT_FN_ATTRS
8824_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8825{
8826 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8827 (__v16si) __W,
8828 (__mmask16) __U);
8829}
8830
8831static __inline__ __m512i __DEFAULT_FN_ATTRS
8832_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8833{
8834 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8835 (__v16si) _mm512_setzero_ps(),
8836 (__mmask16) __U);
8837}
8838
Craig Topper8c18e112016-05-17 04:41:50 +00008839#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
8840 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8841 (__v8df)_mm512_undefined_pd(), \
8842 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008843
Craig Topper8c18e112016-05-17 04:41:50 +00008844#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
8845 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8846 (__v8df)(__m512d)(W), \
8847 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008848
Craig Topper8c18e112016-05-17 04:41:50 +00008849#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
8850 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8851 (__v8df)_mm512_setzero_pd(), \
8852 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008853
8854static __inline__ __m512d __DEFAULT_FN_ATTRS
8855_mm512_cvtps_pd (__m256 __A)
8856{
8857 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8858 (__v8df)
8859 _mm512_undefined_pd (),
8860 (__mmask8) -1,
8861 _MM_FROUND_CUR_DIRECTION);
8862}
8863
8864static __inline__ __m512d __DEFAULT_FN_ATTRS
8865_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8866{
8867 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8868 (__v8df) __W,
8869 (__mmask8) __U,
8870 _MM_FROUND_CUR_DIRECTION);
8871}
8872
8873static __inline__ __m512d __DEFAULT_FN_ATTRS
8874_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8875{
8876 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8877 (__v8df)
8878 _mm512_setzero_pd (),
8879 (__mmask8) __U,
8880 _MM_FROUND_CUR_DIRECTION);
8881}
8882
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008883static __inline__ __m512d __DEFAULT_FN_ATTRS
8884_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8885{
8886 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8887 (__v8df) __W,
8888 (__mmask8) __U);
8889}
8890
8891static __inline__ __m512d __DEFAULT_FN_ATTRS
8892_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8893{
8894 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8895 (__v8df)
8896 _mm512_setzero_pd (),
8897 (__mmask8) __U);
8898}
8899
8900static __inline__ __m512 __DEFAULT_FN_ATTRS
8901_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8902{
8903 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8904 (__v16sf) __W,
8905 (__mmask16) __U);
8906}
8907
8908static __inline__ __m512 __DEFAULT_FN_ATTRS
8909_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8910{
8911 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8912 (__v16sf)
8913 _mm512_setzero_ps (),
8914 (__mmask16) __U);
8915}
8916
Michael Zuckerman708e7592016-05-03 10:42:46 +00008917static __inline__ void __DEFAULT_FN_ATTRS
8918_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8919{
8920 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8921 (__mmask8) __U);
8922}
8923
8924static __inline__ void __DEFAULT_FN_ATTRS
8925_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8926{
8927 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8928 (__mmask8) __U);
8929}
8930
8931static __inline__ void __DEFAULT_FN_ATTRS
8932_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8933{
8934 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8935 (__mmask16) __U);
8936}
8937
8938static __inline__ void __DEFAULT_FN_ATTRS
8939_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8940{
8941 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8942 (__mmask16) __U);
8943}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008944
Craig Topper8c18e112016-05-17 04:41:50 +00008945#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
8946 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8947 (__v2df)(__m128d)(B), \
8948 (__v4sf)_mm_undefined_ps(), \
8949 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008950
Craig Topper8c18e112016-05-17 04:41:50 +00008951#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
8952 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8953 (__v2df)(__m128d)(B), \
8954 (__v4sf)(__m128)(W), \
8955 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008956
Craig Topper8c18e112016-05-17 04:41:50 +00008957#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
8958 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8959 (__v2df)(__m128d)(B), \
8960 (__v4sf)_mm_setzero_ps(), \
8961 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008962
Craig Topper8c18e112016-05-17 04:41:50 +00008963#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
8964 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8965 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008966
Craig Topper8c18e112016-05-17 04:41:50 +00008967#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
8968 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8969 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008970
Craig Topper8c18e112016-05-17 04:41:50 +00008971#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
8972 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008973
Craig Topper8c18e112016-05-17 04:41:50 +00008974#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
8975 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008976
Craig Topper8c18e112016-05-17 04:41:50 +00008977#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
8978 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
8979 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008980
Craig Topper8c18e112016-05-17 04:41:50 +00008981#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
8982 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
8983 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008984
Craig Topper8c18e112016-05-17 04:41:50 +00008985#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
8986 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
8987 (__v4sf)(__m128)(B), \
8988 (__v2df)_mm_undefined_pd(), \
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_roundss_sd(W, U, A, B, R) __extension__ ({ \
8992 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
8993 (__v4sf)(__m128)(B), \
8994 (__v2df)(__m128d)(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_roundss_sd(U, A, B, R) __extension__ ({ \
8998 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
8999 (__v4sf)(__m128)(B), \
9000 (__v2df)_mm_setzero_pd(), \
9001 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009002
9003static __inline__ __m128d __DEFAULT_FN_ATTRS
9004_mm_cvtu32_sd (__m128d __A, unsigned __B)
9005{
9006 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9007}
9008
Craig Topper8c18e112016-05-17 04:41:50 +00009009#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9010 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9011 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009012
9013static __inline__ __m128d __DEFAULT_FN_ATTRS
9014_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9015{
9016 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9017 _MM_FROUND_CUR_DIRECTION);
9018}
9019
Craig Topper8c18e112016-05-17 04:41:50 +00009020#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9021 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9022 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009023
9024static __inline__ __m128 __DEFAULT_FN_ATTRS
9025_mm_cvtu32_ss (__m128 __A, unsigned __B)
9026{
9027 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9028 _MM_FROUND_CUR_DIRECTION);
9029}
9030
Craig Topper8c18e112016-05-17 04:41:50 +00009031#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9032 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9033 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009034
9035static __inline__ __m128 __DEFAULT_FN_ATTRS
9036_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9037{
9038 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9039 _MM_FROUND_CUR_DIRECTION);
9040}
9041
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009042static __inline__ __m512i __DEFAULT_FN_ATTRS
9043_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9044{
9045 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9046 __M);
9047}
9048
9049static __inline__ __m512i __DEFAULT_FN_ATTRS
9050_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9051{
9052 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9053 __M);
9054}
9055
Michael Zuckerman178113e2016-05-19 12:07:49 +00009056static __inline __m512i __DEFAULT_FN_ATTRS
9057_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9058 int __E, int __F, int __G, int __H,
9059 int __I, int __J, int __K, int __L,
9060 int __M, int __N, int __O, int __P)
9061{
9062 return __extension__ (__m512i)(__v16si)
9063 { __P, __O, __N, __M, __L, __K, __J, __I,
9064 __H, __G, __F, __E, __D, __C, __B, __A };
9065}
9066
9067#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9068 e8,e9,e10,e11,e12,e13,e14,e15) \
9069 _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9070
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009071static __inline__ __m512i __DEFAULT_FN_ATTRS
9072_mm512_set_epi64 (long long __A, long long __B, long long __C,
9073 long long __D, long long __E, long long __F,
9074 long long __G, long long __H)
9075{
9076 return __extension__ (__m512i) (__v8di)
9077 { __H, __G, __F, __E, __D, __C, __B, __A };
9078}
9079
Michael Zuckerman178113e2016-05-19 12:07:49 +00009080#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9081 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9082
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009083static __inline__ __m512d __DEFAULT_FN_ATTRS
9084_mm512_set_pd (double __A, double __B, double __C, double __D,
9085 double __E, double __F, double __G, double __H)
9086{
9087 return __extension__ (__m512d)
9088 { __H, __G, __F, __E, __D, __C, __B, __A };
9089}
9090
Michael Zuckerman178113e2016-05-19 12:07:49 +00009091#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9092 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9093
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009094static __inline__ __m512 __DEFAULT_FN_ATTRS
9095_mm512_set_ps (float __A, float __B, float __C, float __D,
9096 float __E, float __F, float __G, float __H,
9097 float __I, float __J, float __K, float __L,
9098 float __M, float __N, float __O, float __P)
9099{
9100 return __extension__ (__m512)
9101 { __P, __O, __N, __M, __L, __K, __J, __I,
9102 __H, __G, __F, __E, __D, __C, __B, __A };
9103}
9104
Michael Zuckerman178113e2016-05-19 12:07:49 +00009105#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9106 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9107
Michael Kupersteine45af542015-06-30 13:36:19 +00009108#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009109
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009110#endif // __AVX512FINTRIN_H